:root{--lacquer: #7d1a12;--lacquer-deep: #4a0e09;--gold: #d6a54a;--gold-soft: #f0d79a;--ivory: #f6ecd6;--paper: #f3e3bd;--glass: rgba(34, 20, 13, .56);--glass-strong: rgba(34, 20, 13, .82);--hair: rgba(240, 215, 154, .28);--jade: #9cc59a;--serif: "Cormorant Garamond", "Noto Serif", Georgia, serif;--sans: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{overflow:hidden;overscroll-behavior:none;background:#1a110c;color:var(--ivory);font-family:var(--sans);font-size:15px;line-height:1.45;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0;touch-action:manipulation}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:2px}input{-webkit-user-select:text;user-select:text}.app{position:fixed;top:0;right:0;bottom:0;left:0;height:100dvh;overflow:hidden}.stage{position:absolute;top:0;right:0;bottom:0;left:0}.stage canvas{display:block;width:100%;height:100%;touch-action:none}.overlay3d{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.tag{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;gap:4px;will-change:transform}.tag-name{font-size:11.5px;font-weight:500;padding:2px 9px;border-radius:999px;background:#140c0880;color:var(--ivory);white-space:nowrap}.tag-self .tag-name{color:var(--gold-soft);background:#4a0e09b3}.tag-bubble{display:none;max-width:180px;padding:7px 11px;border-radius:14px;background:var(--paper);color:#3b1d12;font-size:13px;font-weight:500;text-align:center;box-shadow:0 6px 18px #0000004d;position:relative}.tag-bubble:after{content:"";position:absolute;left:50%;bottom:-6px;width:12px;height:12px;background:var(--paper);transform:translate(-50%) rotate(45deg);border-radius:2px}.speaking .tag-bubble{display:block;animation:pop .25s ease-out}.float-text{position:absolute;left:0;top:0;color:var(--gold-soft);font-weight:600;font-size:13px;text-shadow:0 1px 6px rgba(0,0,0,.7);white-space:nowrap}.float-big{font-family:var(--serif);font-size:24px;font-weight:700;color:#fff4d6}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:none;opacity:1}}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:14px;background:radial-gradient(circle at 50% 40%,#3a1a10,#140c08);text-align:center;padding:24px}.loading p{margin:0;font-family:var(--serif);font-size:22px;max-width:26ch}.loading-mark{color:var(--gold);animation:breathe 2.4s ease-in-out infinite}@keyframes breathe{50%{transform:scale(1.12);opacity:.7}}.mode-intro .stage:after{content:"";position:absolute;left:0;right:0;top:0;height:38%;background:linear-gradient(180deg,rgba(30,12,6,.7),transparent);pointer-events:none}.intro-head{position:absolute;top:calc(var(--sat) + 22px);left:0;right:0;text-align:center;padding:0 22px;pointer-events:none}.intro-head h1{margin:0;font-family:var(--serif);font-weight:700;font-size:clamp(40px,11vw,64px);line-height:1;color:var(--ivory);text-shadow:0 2px 24px rgba(40,10,0,.55)}.intro-head p{margin:10px auto 0;max-width:32ch;font-size:14px;color:#f6ecd6e6;text-shadow:0 1px 8px rgba(0,0,0,.6)}.spin-hint{position:absolute;left:50%;bottom:calc(var(--sab) + 352px);transform:translate(-50%);font-size:12px;padding:5px 12px;border-radius:999px;background:var(--glass);color:#f6ecd6d9;pointer-events:none;white-space:nowrap}.wardrobe,.sheet{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:min(100%,480px);padding:18px 18px calc(var(--sab) + 18px);border-radius:22px 22px 0 0;background:linear-gradient(180deg,#5c140df0,#280a07f7);border-top:1px solid var(--hair);box-shadow:0 -12px 40px #00000059;display:flex;flex-direction:column;gap:14px;z-index:20}.field{display:flex;flex-direction:column;gap:6px}.field span,.opt-label{font-size:12.5px;color:#f6ecd6b8}.field input{font:inherit;font-size:16px;color:var(--ivory);background:#ffffff12;border:1px solid var(--hair);border-radius:12px;padding:11px 13px}.field input::placeholder{color:#f6ecd666}.opt-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.opt-label{width:62px;flex:none}.swatches{display:flex;gap:10px}.swatch{width:34px;height:34px;border-radius:50%;background:var(--c);box-shadow:inset 0 -3px 6px #00000040;outline:2px solid transparent;outline-offset:3px;transition:outline-color .15s}.swatch.small{width:28px;height:28px}.swatch.on{outline-color:var(--gold-soft)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips.toggles{margin-left:auto}.chip{height:34px;padding:0 14px;border-radius:999px;font-size:13.5px;background:#ffffff12;border:1px solid var(--hair);color:#f6ecd6d9}.chip.on{background:var(--gold-soft);color:var(--lacquer-deep);border-color:var(--gold-soft);font-weight:600}.primary{display:inline-flex;align-items:center;justify-content:center;height:50px;padding:0 22px;border-radius:14px;font-weight:700;font-size:16px;color:var(--lacquer-deep);background:linear-gradient(180deg,#f4d99a,#d6a54a);box-shadow:0 4px #8a5d1c,0 10px 24px #0000004d;text-decoration:none}.primary:active{transform:translateY(2px);box-shadow:0 2px #8a5d1c}.primary.wide{width:100%;margin-top:2px}.ghost{height:46px;padding:0 18px;border-radius:14px;border:1px solid var(--hair);color:var(--ivory);background:#ffffff0f}.ghost.on-paper{color:var(--lacquer);border-color:#7d1a1259;background:transparent}.hud-top{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:calc(var(--sat) + 12px) 14px 0;pointer-events:none}.hud-top>*{pointer-events:auto}.place{min-width:0;text-shadow:0 1px 10px rgba(0,0,0,.55)}.place h2{margin:0;font-family:var(--serif);font-weight:700;font-size:30px;line-height:1.05}.place p{margin:3px 0 0;font-size:12.5px;color:#f6ecd6d9}.pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:11.5px;text-shadow:none}.pill i{width:7px;height:7px;border-radius:50%;background:#9a948a}.net-online i{background:#7fe08a;box-shadow:0 0 8px #7fe08a}.net-connecting i{background:var(--gold)}.pill.merit{color:var(--gold-soft)}.side{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none}.minimap{width:82px;height:82px;border-radius:50%;padding:0;overflow:hidden;border:2px solid rgba(214,165,74,.75);box-shadow:0 6px 18px #00000059;background:#24301e}.minimap canvas{width:100%;height:100%;display:block}.icon-col{display:flex;flex-direction:column;gap:8px;margin-right:19px}.icon-btn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ivory);border:1px solid rgba(240,215,154,.16)}.icon-btn.flat{background:transparent;border:0}.banner{position:absolute;left:0;right:0;top:26%;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;animation:banner 2.6s ease both;text-shadow:0 2px 18px rgba(30,6,0,.75)}.banner-name{font-family:var(--serif);font-weight:700;font-size:clamp(38px,10vw,60px);line-height:1;color:#fff4dc}.banner-name:after{content:"";display:block;width:56px;height:2px;margin:12px auto 0;background:var(--gold);border-radius:2px}.banner-sub{font-size:14px;color:#f6ecd6eb}@keyframes banner{0%{opacity:0;transform:translateY(10px) scale(.98);letter-spacing:.06em}18%{opacity:1;transform:none;letter-spacing:0}78%{opacity:1}to{opacity:0;transform:translateY(-6px)}}.hud-bottom{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:flex-end;justify-content:space-between;padding:0 14px calc(var(--sab) + 18px);pointer-events:none}.hud-bottom>*{pointer-events:auto}.joy{position:relative;width:124px;height:124px;border-radius:50%;flex:none;touch-action:none;background:radial-gradient(circle,#22140d40,#22140d8c);border:1.5px solid rgba(240,215,154,.32);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center}.joy-ring{position:absolute;top:22px;right:22px;bottom:22px;left:22px;border-radius:50%;border:1px dashed rgba(240,215,154,.22)}.joy-knob{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fbe6b4,#d6a54a 60%,#9c6c22);box-shadow:0 6px 16px #00000073,inset 0 -3px 6px #0003;transition:transform .12s ease-out;pointer-events:none}.joy.active .joy-knob{transition:none}.talk{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:#f6ecd6e0;margin-bottom:8px}.talk svg{width:46px;height:46px;padding:12px;border-radius:50%;background:var(--glass);border:1px solid rgba(240,215,154,.16);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-sizing:border-box}.actions{display:grid;grid-auto-flow:column;grid-template-rows:auto auto;align-items:end;gap:8px 10px;direction:rtl}.actions .seal{direction:ltr}.actions .seal.main{grid-row:span 2}.seal{display:flex;flex-direction:column;align-items:center;gap:5px}.seal-face{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;color:var(--gold-soft);background:radial-gradient(circle at 40% 30%,#a9281c,#6a130c 70%);border:2px solid rgba(214,165,74,.8);box-shadow:inset 0 0 0 3px #4a0e09e6,inset 0 0 0 4px #f0d79a40,0 6px 16px #0006}.seal.main .seal-face{width:76px;height:76px}.seal:active .seal-face{transform:scale(.94)}.seal-label{font-size:11.5px;font-weight:600;text-shadow:0 1px 6px rgba(0,0,0,.8);white-space:nowrap}.coach{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:auto}.coach p{position:absolute;margin:0;max-width:220px;padding:10px 13px;border-radius:14px;background:var(--paper);color:#3b1d12;font-size:13px;font-weight:500;box-shadow:0 8px 26px #00000059}.coach-left{left:14px;bottom:calc(var(--sab) + 158px)}.coach-left:after{content:"";position:absolute;left:50px;bottom:-6px;width:12px;height:12px;background:var(--paper);transform:rotate(45deg)}.coach-right{left:50%;top:44%;transform:translate(-50%);text-align:center}.meditate{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:22vh;gap:14px;pointer-events:none;background:radial-gradient(ellipse at 50% 60%,transparent 30%,rgba(10,6,4,.55))}.meditate .ghost{pointer-events:auto}.breath{position:relative;width:150px;height:150px;border-radius:50%;display:grid;place-items:center;border:1.5px solid rgba(240,215,154,.55);background:radial-gradient(circle,#f0d79a2e,#f0d79a05 70%);animation:breath-scale 8s ease-in-out infinite}.breath span{position:absolute;font-family:var(--serif);font-size:24px;font-weight:600}.breath .in{animation:breath-in 8s ease-in-out infinite}.breath .out{animation:breath-out 8s ease-in-out infinite}@keyframes breath-scale{0%,to{transform:scale(.78)}50%{transform:scale(1.1)}}@keyframes breath-in{0%,45%{opacity:1}50%,95%{opacity:0}to{opacity:1}}@keyframes breath-out{0%,45%{opacity:0}50%,95%{opacity:1}to{opacity:0}}.med-time{margin:0;font-size:14px;color:#f6ecd6cc;font-variant-numeric:tabular-nums}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a060459;z-index:19}.sheet{max-height:72vh;overflow:auto;animation:rise .25s ease-out}@keyframes rise{0%{transform:translate(-50%,30px);opacity:0}}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-head h3{margin:0;font-family:var(--serif);font-size:26px;font-weight:700}.sheet-note{margin:-6px 0 0;font-size:13px;color:#f6ecd6b3}.place-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.place-list button{width:100%;text-align:left;padding:11px 14px;border-radius:12px;display:flex;flex-direction:column;border-left:3px solid transparent}.place-list button:active{background:#ffffff0f}.place-list .here{border-left-color:var(--gold);background:#f0d79a14}.pl-name{font-family:var(--serif);font-size:22px;font-weight:700;line-height:1.15}.pl-sub{font-size:12.5px;color:#f6ecd6b3}.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.preset-grid button{min-height:48px;padding:8px 12px;border-radius:12px;background:#ffffff12;border:1px solid var(--hair);font-size:14px;text-align:left}.preset-grid button:active{background:#f0d79a33}.modal{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:20px;background:#0a06048c;animation:fadein .2s ease}@keyframes fadein{0%{opacity:0}}.slip{width:min(100%,360px);padding:26px 24px 20px;border-radius:6px;background:var(--paper);color:#3b1d12;text-align:center;box-shadow:0 0 0 6px var(--lacquer),0 0 0 7px var(--gold),0 24px 60px #00000080;animation:unroll .45s cubic-bezier(.2,.9,.3,1.2)}@keyframes unroll{0%{transform:scaleY(.2);opacity:0}}.slip-no{margin:0;font-size:13px;color:var(--lacquer)}.slip h3{margin:4px 0 12px;font-family:var(--serif);font-size:40px;line-height:1;color:var(--lacquer)}.slip blockquote{margin:0 0 14px;font-family:var(--serif);font-style:italic;font-size:21px;line-height:1.35;display:flex;flex-direction:column}.slip-meaning{margin:0 0 10px;font-size:14.5px;line-height:1.55}.slip-note{margin:0 0 16px;font-size:11.5px;color:#3b1d1299}.slip-actions{display:flex;gap:10px;justify-content:center}.slip-actions>*{flex:1}.photo{margin:0;width:min(100%,520px);display:flex;flex-direction:column;gap:12px}.photo img{width:100%;max-height:62vh;object-fit:contain;border-radius:10px;border:2px solid var(--gold);-webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default}.photo figcaption{text-align:center;font-size:13px;color:#f6ecd6cc}.fade{position:absolute;top:0;right:0;bottom:0;left:0;background:#0d0806;opacity:0;pointer-events:none;transition:opacity .25s;z-index:40}.fade.on{opacity:1}@media (min-width: 760px){.place h2{font-size:36px}.spin-hint{bottom:50%;left:auto;right:24px;transform:none}.wardrobe{left:auto;right:24px;bottom:24px;transform:none;border-radius:20px;border:1px solid var(--hair)}.intro-head{text-align:left;left:40px;top:40px;right:auto}.intro-head p{margin-left:0}}@media (max-height: 520px) and (orientation: landscape){.wardrobe{left:auto;right:12px;bottom:12px;transform:none;width:360px;max-height:calc(100% - 24px);overflow:auto;border-radius:18px}.intro-head{text-align:left;left:20px;top:14px;right:auto}.intro-head h1{font-size:40px}.spin-hint{display:none}.icon-col{flex-direction:row;margin-right:0}}@media (prefers-reduced-motion: reduce){.banner,.breath,.breath span,.sheet,.slip,.loading-mark{animation-duration:.01s;animation-iteration-count:1}.breath .out{display:none}.breath .in{opacity:1}}.actions.n2 .seal:not(.main){grid-row:2}@media (prefers-reduced-motion: reduce){.banner{animation:none}}.mid-btns{display:flex;flex-direction:column;gap:10px;align-items:center}.mid-btns .talk{margin-bottom:0}.coffee-btn{position:relative}.coffee-btn b{position:absolute;right:-4px;top:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--gold);color:var(--lacquer-deep);font-size:10.5px;line-height:18px;text-align:center}.act-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.act-place{display:flex;align-items:baseline;gap:10px;font-family:var(--serif);font-size:21px;font-weight:700;margin-bottom:6px}.act-place em{font-family:var(--sans);font-style:normal;font-size:11.5px;font-weight:500;color:var(--gold-soft)}.act-btns{display:flex;flex-wrap:wrap;gap:8px}.act-btns button{display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 14px 0 11px;border-radius:999px;background:#ffffff12;border:1px solid var(--hair);font-size:14px;color:var(--ivory)}.act-btns button svg{color:var(--gold-soft)}.act-btns button:active{background:#f0d79a33}.sheet-note.center{text-align:center;margin:0}.intro-head .disclaimer{margin-top:8px;font-size:12px;color:#f6ecd6bf}.notice{position:absolute;left:50%;top:34%;transform:translate(-50%);width:min(calc(100% - 40px),360px);z-index:25;display:flex;flex-direction:column;gap:6px;padding:16px 18px;border-radius:16px;background:var(--paper);color:#3b1d12;text-align:center;box-shadow:0 0 0 1px #7d1a1240,0 18px 50px #00000073;animation:pop .25s ease-out}.notice strong{font-family:var(--serif);font-size:22px;color:var(--lacquer)}.notice span{font-size:14px;line-height:1.5}.notice .notice-small{font-size:11.5px;color:#3b1d12a6}.icon-btn.playing{color:var(--gold-soft);border-color:#d6a54a99}.vol{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#f6ecd6b8}.vol input{width:100%;accent-color:var(--gold);height:28px}.opt-label.wide{width:auto}.welcome{gap:10px;text-align:center}.welcome-hi{margin:0;font-size:13px;color:#f6ecd6bf}.welcome h2{margin:-4px 0 0;font-family:var(--serif);font-size:36px;line-height:1.1;color:var(--ivory)}.welcome-meta{margin:0 0 6px;font-size:14px;color:#f6ecd6d9}
