:root{--washi: #EFE7D8;--washi-dk: #E3D8C2;--sumi: #1C1B19;--sumi-soft: #3A3833;--gold: #C8A02E;--gold-lt: #E9C75B;--vermillion: #C1440E;--aizome: #2B4B6F;--card-bg: #F7F1E5;--ghost: #9A948A}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{background:var(--sumi);color:var(--washi);font-family:Zen Maru Gothic,sans-serif;-webkit-font-smoothing:antialiased}.shell{max-width:760px;margin:0 auto;height:100dvh;display:flex;flex-direction:column;padding:12px}.intro{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;text-align:center;padding:24px}.intro h1{font-family:Shippori Mincho,serif;font-size:clamp(34px,7vw,56px);letter-spacing:2px;color:var(--washi)}.intro h1 .gg{color:var(--gold)}.intro .tag{color:var(--ghost);font-size:15px;max-width:420px;line-height:1.6}.intro input{background:var(--washi);color:var(--sumi);border:3px solid var(--gold);border-radius:10px;font:700 20px Zen Maru Gothic,sans-serif;padding:12px 18px;width:min(320px,80vw);text-align:center;outline:none}.btn{background:var(--gold);color:var(--sumi);border:none;border-radius:10px;font:900 17px Zen Maru Gothic,sans-serif;padding:13px 30px;cursor:pointer;box-shadow:0 3px #00000073;transition:transform .08s}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:default}.langs{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:12px;width:100%;max-width:560px}.lang-card{background:var(--card-bg);color:var(--sumi);border:3px solid transparent;border-radius:14px;padding:18px 8px 14px;cursor:pointer;text-align:center;transition:border-color .12s,transform .12s}.lang-card:hover{border-color:var(--gold);transform:translateY(-2px)}.lang-card .flag{font-size:34px}.lang-card .nm{font-weight:900;margin-top:6px}.lang-card .nt{font-family:Shippori Mincho,serif;color:var(--sumi-soft);font-size:14px;margin-top:2px}.lang-card .ct{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ghost);margin-top:6px}.room-top{display:flex;align-items:center;gap:10px;padding:2px 2px 10px}.room-top .title{font-family:Shippori Mincho,serif;font-weight:800;letter-spacing:1px;font-size:15px}.room-top .spacer{flex:1}.mini{background:none;border:2px solid var(--sumi-soft);color:var(--washi);border-radius:8px;font:700 12px Zen Maru Gothic,sans-serif;padding:5px 10px;cursor:pointer}.mini:hover{border-color:var(--gold)}.stage{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;background:linear-gradient(180deg,#262420,#21201c);border:2px solid var(--sumi-soft);border-radius:16px;padding:14px}.dopp{display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;border-radius:12px;padding:8px 10px;border:2px solid transparent;transition:border-color .15s,background .15s}.dopp:hover{background:#ffffff08}.dopp.active{border-color:var(--gold);background:#e9c75b12}.dopp.active .role{color:var(--gold-lt)}.fig{width:74px;height:74px;border-radius:50%;position:relative;overflow:hidden}.fig:before{content:"";position:absolute;left:50%;top:16%;width:34%;height:34%;border-radius:50%;transform:translate(-50%);background:currentColor}.fig:after{content:"";position:absolute;left:50%;bottom:-12%;width:74%;height:52%;border-radius:50% 50% 0 0;transform:translate(-50%);background:currentColor}.dopp.future .fig{background:radial-gradient(circle at 50% 30%,#4a4433,#2a2721);color:var(--gold-lt);box-shadow:0 0 22px #e9c75b59}.dopp.present .fig{background:radial-gradient(circle at 50% 30%,#34322e,#242320);color:var(--ghost)}.dopp .nm{font-size:12px;font-weight:900;letter-spacing:.5px}.dopp.future .nm{color:var(--gold-lt)}.dopp.present .nm{color:var(--ghost)}.dopp .role{font-size:10px;color:var(--ghost);font-family:JetBrains Mono,monospace}.meter{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:120px}.meter .num{font:700 13px JetBrains Mono,monospace;color:var(--washi);cursor:pointer}.meter .num b{color:var(--gold-lt)}.meter .bar{width:120px;height:8px;background:#141311;border-radius:4px;overflow:hidden;border:1px solid var(--sumi-soft)}.meter .fill{height:100%;background:linear-gradient(90deg,var(--ghost),var(--gold-lt));transition:width .6s}.meter .hint{font-size:10px;color:var(--ghost)}.chat{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:14px 4px}.msg{max-width:78%;border-radius:14px;padding:9px 13px;line-height:1.55;font-size:15px;position:relative;white-space:pre-wrap}.msg .who{display:block;font:700 10px JetBrains Mono,monospace;letter-spacing:1px;margin-bottom:3px;opacity:.8}.msg.you{align-self:flex-end;background:var(--washi);color:var(--sumi);border-bottom-right-radius:4px}.msg.future{align-self:flex-start;background:#2c2820;color:var(--washi);border:1.5px solid var(--gold);border-bottom-left-radius:4px}.msg.future .who{color:var(--gold-lt)}.msg.present{align-self:flex-start;background:#242320;color:#c9c3b8;border:1.5px dashed var(--sumi-soft);font-style:italic;border-bottom-left-radius:4px}.msg.present .who{color:var(--ghost)}.msg.sys{align-self:center;background:none;color:var(--ghost);font-size:12px;font-family:JetBrains Mono,monospace}.typing{align-self:flex-start;color:var(--ghost);font-size:22px;letter-spacing:3px;animation:pulse 1.1s infinite;padding-left:8px}@keyframes pulse{50%{opacity:.25}}.toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%);background:var(--gold);color:var(--sumi);font:900 14px Zen Maru Gothic,sans-serif;padding:10px 18px;border-radius:10px;box-shadow:0 4px #0006;animation:toastIn .25s ease-out;z-index:50}@keyframes toastIn{0%{transform:translate(-50%,14px);opacity:0}}.composer{display:flex;gap:8px;padding-top:8px}.composer input{flex:1;background:var(--washi);color:var(--sumi);border:2px solid var(--sumi-soft);border-radius:12px;font:500 16px Zen Maru Gothic,sans-serif;padding:13px 15px;outline:none}.composer input:focus{border-color:var(--gold)}.composer .btn{padding:0 24px}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0d0ab8;display:flex;align-items:center;justify-content:center;z-index:40}.drawer .panel{background:var(--card-bg);color:var(--sumi);border-radius:16px;padding:22px;width:min(560px,92vw);max-height:78vh;overflow-y:auto;border:3px solid var(--gold)}.drawer h2{font-family:Shippori Mincho,serif;margin-bottom:4px}.drawer .sub{color:var(--sumi-soft);font-size:13px;margin-bottom:14px}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{background:var(--washi-dk);border:1.5px solid var(--sumi-soft);border-radius:8px;padding:4px 9px;font-size:13px}.chip b{color:var(--vermillion);font-weight:900}.chip span{color:var(--sumi-soft)}.merge{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:radial-gradient(circle,#e9c75b40,#0f0d0af0);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:30px}.merge h1{font-family:Shippori Mincho,serif;font-size:42px;color:var(--gold-lt)}.merge p{max-width:460px;line-height:1.7}.why-box{background:var(--washi);color:var(--sumi);border:3px solid var(--gold);border-radius:12px;font:500 16px Zen Maru Gothic,sans-serif;padding:14px;width:min(460px,86vw);min-height:88px;resize:vertical;outline:none}.msg.present .act{display:block;font-style:italic;color:var(--ghost);font-size:13px;margin-bottom:3px}.game-wrap{position:relative;flex:1;display:flex;flex-direction:column;min-height:0}.stage-canvas{width:100%;max-height:100%;aspect-ratio:4 / 3;object-fit:contain;image-rendering:pixelated;border-radius:14px;border:2px solid var(--sumi-soft);background:#141311}.hint-chip{position:absolute;top:10px;left:50%;transform:translate(-50%);background:#1c1b19c7;color:var(--ghost);font:700 11px JetBrains Mono,monospace;padding:5px 12px;border-radius:8px;pointer-events:none}.editor-bar{position:absolute;top:10px;right:10px;z-index:10;display:flex;gap:8px;align-items:center;background:#1c1b19d9;color:var(--washi);padding:5px 8px 5px 12px;border-radius:8px;font:600 12px Zen Maru Gothic,sans-serif}.room-top .stat{cursor:pointer}.room-top .stat b{color:var(--gold-lt)}.dialog{position:absolute;left:10px;right:10px;bottom:10px;background:var(--card-bg);color:var(--sumi);border:3px solid var(--sumi);border-radius:14px;box-shadow:0 4px #00000080;padding:10px 12px;display:flex;flex-direction:column;gap:8px;max-height:62%}.dialog-head{display:flex;align-items:center;gap:8px}.dialog-head .spacer{flex:1}.dialog .mini{color:var(--sumi);border-color:var(--sumi-soft)}.dtag{font:900 12px JetBrains Mono,monospace;letter-spacing:1px;padding:3px 10px;border-radius:6px}.dtag.future{background:var(--gold);color:var(--sumi)}.dtag.present{background:var(--washi-dk);color:var(--sumi-soft);border:1.5px dashed var(--sumi-soft)}.dialog-log{overflow-y:auto;display:flex;flex-direction:column;gap:6px;min-height:60px}.dline{font-size:15px;line-height:1.5}.dline.you{color:var(--aizome);font-weight:700}.dline.you:before{content:"you › ";font:700 11px JetBrains Mono,monospace;color:var(--ghost)}.dline.future{color:var(--sumi)}.dline.present{color:var(--sumi-soft);font-style:italic}.dline .act{display:block;font-style:italic;font-size:13px;color:var(--ghost)}.dline.sys{color:var(--ghost);font-size:12px;font-family:JetBrains Mono,monospace}.typing-line{color:var(--ghost);letter-spacing:3px;animation:pulse 1.1s infinite}.dialog .composer{padding-top:0}.dialog .composer input{border-color:var(--sumi-soft)}.card-stage{display:flex;flex-direction:column;align-items:center;gap:14px}.card-count{color:var(--washi);font:700 12px JetBrains Mono,monospace}.fcard{width:min(340px,84vw);height:210px;position:relative;cursor:pointer;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.2,.7,.3,1.1)}.fcard.flipped{transform:rotateY(180deg)}.fcard .face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;border-radius:16px;border:3px solid var(--sumi);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;box-shadow:0 5px #00000073}.fcard .front{background:var(--card-bg);color:var(--sumi)}.fcard .back{background:var(--gold);color:var(--sumi);transform:rotateY(180deg)}.fcard .big{font:800 34px Shippori Mincho,serif;text-align:center;padding:0 16px}.fcard .tiny{font:700 12px JetBrains Mono,monospace;opacity:.6}.card-nav{display:flex;gap:10px}.small-btn{padding:9px 18px;font-size:14px}.fb-q{margin:12px 0}.fb-label{font-weight:700;font-size:14px;margin-bottom:7px}.fb-opts{display:flex;flex-wrap:wrap;gap:7px}.fb-chip{background:var(--washi-dk);color:var(--sumi);border:2px solid var(--sumi-soft);border-radius:9px;font:700 13px Zen Maru Gothic,sans-serif;padding:7px 13px;cursor:pointer}.fb-chip.on{background:var(--gold);border-color:var(--sumi)}.fb-text{width:100%;min-height:64px;font-size:14px}.touch-controls{display:none}@media (pointer: coarse){.touch-controls{display:block}.k-hint{display:none}}.t-hint{display:none}@media (pointer: coarse){.t-hint{display:inline}}.joy-base{position:fixed;left:16px;bottom:calc(20px + env(safe-area-inset-bottom));width:120px;height:120px;border-radius:50%;background:#f7f1e366;border:2.5px solid rgba(247,241,227,.5);touch-action:none;z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.joy-knob{position:absolute;width:50px;height:50px;border-radius:50%;background:var(--aizome);border:2.5px solid var(--sumi);left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 2px 4px #00000059;pointer-events:none}.act-btn{position:fixed;right:20px;bottom:calc(34px + env(safe-area-inset-bottom));width:82px;height:82px;border-radius:50%;background:var(--card-bg);color:var(--sumi);border:3px solid var(--sumi);font:700 15px Shippori Mincho,serif;line-height:1.2;z-index:50;box-shadow:0 3px 0 var(--sumi);touch-action:none;cursor:pointer}.act-btn.near{background:var(--gold);animation:pulseAct 1.1s ease-in-out infinite}@keyframes pulseAct{0%,to{box-shadow:0 3px 0 var(--sumi),0 0 #c8a02e80}50%{box-shadow:0 3px 0 var(--sumi),0 0 0 10px #c8a02e00}}html{overscroll-behavior:none}.stage-canvas{touch-action:none}@media (max-width: 640px){.shell{padding:8px}.room-top{flex-wrap:wrap;gap:6px}.room-top .title{font-size:12px}.mini{padding:7px 10px}.dialog{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));max-height:58dvh;z-index:60}.dialog-log{max-height:30dvh}.fb-text,.composer input{font-size:16px}.fcard{height:180px}.fcard .big{font-size:28px}}
