.companion-heading{display:flex;justify-content:space-between;align-items:end;gap:24px}.companion-heading h1{font-size:clamp(28px,4vw,46px);margin:.3em 0}.companion-heading>a{font-size:13px;white-space:nowrap}
.companion-room{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(310px,.85fr);min-height:680px;border:1px solid #d6d9d6;border-radius:28px;overflow:hidden;background:#f8f6f0;color:#353e42;box-shadow:0 18px 70px #23384916;margin-bottom:48px}.companion-visual{background:radial-gradient(ellipse at 50% 50%,#fffefa,#dfe8e5);padding:26px;display:flex;flex-direction:column}.stage-topline{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.12em;color:#647871}.stage-topline span:first-child{font:italic 23px Georgia,'Noto Serif SC',serif;color:#425d54;letter-spacing:0}.touch-stage{isolation:isolate;position:relative;min-height:410px;flex:1;overflow:hidden;touch-action:pan-y;cursor:crosshair}.actor-mount{position:absolute;inset:1% 9% 7%;--look-x:0px;--look-y:0px;--tilt:0deg;transition:filter .3s}.avatar-rig,.portrait-rig{width:100%;height:100%;object-fit:contain;overflow:visible;filter:drop-shadow(0 15px 15px #41595414)}.portrait-rig{transform:translate(var(--look-x),var(--look-y)) rotate(var(--tilt));transition:transform .18s ease-out}
.avatar-rig .rig-head{transform-origin:200px 285px;transform:translate(var(--look-x),var(--look-y)) rotate(var(--tilt));transition:transform .18s ease-out}.avatar-rig .rig-pupil{transform:translate(calc(var(--look-x)*.35),calc(var(--look-y)*.4));transition:transform .18s ease-out}.avatar-rig .rig-hair-back{transform-origin:200px 170px;animation:rig-hair 5s ease-in-out infinite}.avatar-rig .rig-body{transform-origin:200px 440px;animation:rig-breathe 4s ease-in-out infinite}.avatar-rig .rig-eyes{transform-origin:200px 234px;animation:rig-blink 6s infinite}.stage-orbit{position:absolute;border:1px solid #6e938329;border-radius:50%;width:330px;height:330px;left:50%;top:48%;transform:translate(-50%,-50%)}.stage-orbit:before,.stage-orbit:after{content:'✦';position:absolute;color:#a2b9a5;font-size:22px;top:22%;left:-2%}.stage-orbit:after{left:auto;right:-5%;top:70%;font-size:12px}.touch-caption{position:absolute;bottom:5px;left:8%;right:8%;text-align:center;font-size:14px;line-height:1.6;color:#466056;min-height:40px}.touch-cursor{position:absolute;left:var(--cursor-x,50%);top:var(--cursor-y,50%);transform:translate(-50%,-50%);border:1px solid #7e9c8270;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;opacity:0;pointer-events:none;color:#7f9984;font-size:13px}.touch-stage:hover .touch-cursor{opacity:1}.stage-particle{position:absolute;left:50%;top:32%;color:#bf8692;font-size:30px;opacity:0;pointer-events:none}
.touch-stage[data-reaction] .stage-particle{animation:rig-spark 1.4s ease-out}.touch-stage[data-reaction=head] .rig-head{animation:rig-pat .6s 2 ease-in-out}.touch-stage[data-reaction=cheek] .rig-blush{opacity:.85}.touch-stage[data-reaction=cheek] .rig-head{animation:rig-shy .7s 2}.touch-stage[data-reaction=hand] .rig-arm{transform-origin:250px 335px;animation:rig-wave .4s 3}.touch-stage[data-reaction=gift] .rig-body{animation:rig-breathe .65s 2}.touch-stage[data-reaction] .portrait-rig{animation:portrait-bounce .6s 2}.touch-stage[data-talking=true] .rig-mouth{transform-origin:200px 280px;animation:rig-talk .4s infinite}
.touch-actions,.stage-controls{display:flex;gap:7px;justify-content:center;flex-wrap:wrap}.touch-actions button{font-size:12px;border:1px solid #9cad9d66;background:#ffffff70;color:#476052;border-radius:999px;padding:9px 13px;min-height:36px}.touch-actions button:hover,.touch-actions button:focus-visible{background:#fff;box-shadow:0 3px 14px #566f5020;transform:translateY(-2px)}.stage-controls{margin-top:20px}.stage-controls button,.stage-controls select{font-size:11px!important;border:0!important;background:transparent!important;box-shadow:none!important;color:#526c60!important;padding:6px!important}.stage-note{font-size:12px!important;line-height:1.7;color:#748078;margin:10px 0}.companion-chat{padding:30px;border-left:1px solid #dce1d9;display:flex;flex-direction:column;min-width:0}.cast-select{display:flex;align-items:center;gap:15px;font-size:12px}.cast-select select{flex:1;min-width:0;padding:9px;font-size:13px;background:#fff;border:1px solid #d5ddd5;border-radius:8px}.cast-title{margin-top:26px}.cast-title span{font-size:11px;letter-spacing:.1em;color:#7d8b7e}.cast-title h2{font:36px 'Noto Serif SC',Georgia,serif;margin:5px 0}.companion-log{height:230px;min-height:180px;overflow-y:auto;padding:8px 6px 10px 0;overscroll-behavior:contain}.companion-message{margin:0 18px 15px 0}.companion-message small{font-size:10px;color:#7e8c7e}.companion-message p{margin:4px 0 0;font-size:14px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.companion-message.user{text-align:right;margin:0 0 15px 24px}.companion-message.user p{display:inline-block;background:#e9ede4;border-radius:12px 3px 12px 12px;padding:7px 12px;text-align:left}.companion-prompts{display:flex;gap:8px}.companion-prompts button{font-size:11px;padding:5px 9px;border:1px solid #dce1d9;background:transparent;color:#6b7d6c;border-radius:5px}#companion-status{font-size:12px;line-height:1.6;min-height:20px;color:#7e735d;margin:6px 0}#companion-form{margin-top:14px}#companion-form label{font-size:11px;color:#7e8c7e}#companion-message{width:100%;resize:vertical;min-height:80px;max-height:220px;background:#fffdf8;border:1px solid #d2dacd;border-radius:10px;font-size:14px;color:#35473a;padding:12px;margin-top:6px}#companion-form .actions{gap:8px;display:flex;flex-wrap:wrap;margin-top:10px}#companion-form button{font-size:12px;min-height:36px;padding:8px 12px}#companion-form button.primary{background:#536f5e;color:#fff;border:0;border-radius:7px}.stage-options{margin-top:20px;font-size:11px;color:#788575;line-height:1.8}.stage-options summary{cursor:pointer}.stage-options input{display:block;width:100%;margin:5px 0;padding:8px}.stage-options a{color:#536f5e}.companion-room button:focus-visible,.companion-room select:focus-visible,.companion-room textarea:focus-visible{outline:2px solid #6c8e73;outline-offset:3px}
html[data-page=companions] .site-scene{opacity:.08}html[data-page=companions] .companion-epilogue{display:none}html[data-scene-theme=night] .companion-room{background:#26322f;color:#e2e7dc;border-color:#4b5d52}html[data-scene-theme=night] .companion-visual{background:radial-gradient(ellipse at 50% 40%,#435449,#25352f)}html[data-scene-theme=night] .companion-chat{border-color:#4b5d52}html[data-scene-theme=night] .stage-note,html[data-scene-theme=night] .touch-caption,html[data-scene-theme=night] .cast-title span,html[data-scene-theme=night] .stage-topline{color:#b4c5b6}html[data-scene-theme=night] .stage-topline span:first-child{color:#d9e7d6}html[data-scene-theme=night] .companion-message.user p{background:#3d5144}
@keyframes rig-breathe{50%{transform:translateY(-2px) scaleY(1.008)}}@keyframes rig-hair{50%{transform:rotate(1deg)}}@keyframes rig-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.06)}}@keyframes rig-pat{50%{transform:translateY(5px) rotate(3deg)}}@keyframes rig-shy{50%{transform:rotate(-5deg) translateX(-3px)}}@keyframes rig-wave{50%{transform:rotate(-18deg)}}@keyframes rig-talk{50%{transform:scaleY(1.7)}}@keyframes rig-spark{15%{opacity:.8}100%{opacity:0;transform:translateY(-80px) scale(1.4)}}@keyframes portrait-bounce{50%{transform:translateY(-8px) rotate(3deg)}}
.touch-stage[data-quiet=true] *{animation:none!important;transition:none!important}.touch-stage[data-quiet=true] .rig-head,.touch-stage[data-quiet=true] .portrait-rig{transform:none!important}.touch-stage[data-quiet=true][data-reaction] .stage-particle{opacity:.7}.touch-stage[data-quiet=true] .touch-cursor{display:none}
.live2d-canvas{position:absolute;inset:0;z-index:1}.live2d-contact-shadow{position:absolute;height:16px;transform:translate(-50%,-50%);background:radial-gradient(ellipse,#30473540,transparent 70%);pointer-events:none}.actor-mount[data-live2d-status=loading] .avatar-rig{opacity:.3}#live2d-credit{font-size:10px!important;line-height:1.5}
@media(max-width:760px){.companion-heading{display:block}.companion-heading>a{display:inline-block;margin-top:10px}.companion-room{grid-template-columns:1fr;border-radius:18px}.companion-visual{padding:18px}.touch-stage{min-height:370px}.actor-mount{inset:0 14% 8%}.companion-chat{border-left:0;border-top:1px solid #dce1d9;padding:22px}.companion-log{height:220px}.cast-title{margin-top:18px}.touch-actions button{padding:9px 10px}.stage-topline{font-size:10px}.stage-topline span:first-child{font-size:20px}.stage-options{font-size:12px}}
@media(prefers-reduced-motion:reduce){.companion-room *{animation:none!important;transition:none!important}.touch-cursor{display:none}}
.companion-person img{rotate:var(--companion-look,0deg);transition:rotate .18s ease-out}.companion-stage-link{display:block;text-align:center;font-size:12px;margin:-10px auto 24px;color:var(--muted,#6f7e70)}html[data-page=companions] .companion-stage-link{display:none}@media(prefers-reduced-motion:reduce){.companion-person img{rotate:0deg!important}}
.touch-help{text-align:center;color:#849086;font-size:10px;letter-spacing:.03em;margin:10px 0 0}
.anime-rig{filter:drop-shadow(0 10px 15px #3c4b4914)}.anime-rig .rig-head{transform-origin:200px 295px}.anime-rig .rig-eyes{transform-origin:200px 207px;animation:anime-blink 6.3s infinite}.anime-rig .side-braid{transform-origin:272px 255px}.anime-rig .rig-arm{transform-origin:200px 355px}.anime-rig .rig-prop{transform-origin:200px 420px}.anime-rig .witch-hat{transform-origin:200px 145px}.touch-stage[data-actor=shiori] .anime-rig .rig-hair-back{animation-duration:7s}.touch-stage[data-actor=suzu] .anime-rig .rig-body{animation-duration:3.8s}.touch-stage[data-actor=mori] .anime-rig .rig-body{animation-duration:4.5s}
.touch-stage[data-gesture=incline] .rig-head{animation:anime-incline 1.1s ease-in-out 2}.touch-stage[data-gesture=braid] .side-braid{animation:anime-braid .8s ease-in-out 3}.touch-stage[data-gesture=hide] .rig-head{animation:anime-hide 1.1s ease-in-out 2}.touch-stage[data-gesture=hide] .rig-prop{animation:anime-book-lift 1.1s ease-in-out 2}.touch-stage[data-gesture=nod] .rig-head{animation:anime-nod .7s ease-in-out 2}.touch-stage[data-gesture=bookmark] .rig-prop{animation:anime-book-lift 1s ease-in-out 2}.touch-stage[data-gesture=read] .rig-head{animation:anime-read 1.6s ease-in-out 2}.touch-stage[data-gesture=read] .rig-prop{animation:anime-book-lift 1.6s ease-in-out 2}
.touch-stage[data-gesture=bounce] .rig-head{animation:anime-bounce .75s ease-in-out 3}.touch-stage[data-gesture=bell] .rig-decoration{transform-origin:200px 130px;animation:anime-braid .55s ease-in-out 4}.touch-stage[data-gesture=puff] .rig-head{animation:anime-puff .6s ease-in-out 3}.touch-stage[data-gesture=bow] .rig-body{animation:anime-bow 1.1s ease-in-out 2}.touch-stage[data-gesture=wave] .rig-arm{animation:anime-wave .65s ease-in-out 3}.touch-stage[data-gesture=pour] .rig-prop{animation:anime-pour 1.1s ease-in-out 2}.touch-stage[data-gesture=sip] .rig-prop{animation:anime-sip 1.2s ease-in-out 2}.touch-stage[data-gesture=stretch] .rig-body{animation:anime-stretch 1.5s ease-in-out 2}
.touch-stage[data-gesture=hat] .witch-hat{animation:anime-hat .8s ease-in-out 3}.touch-stage[data-gesture=leaf] .leaf-familiar{transform-origin:200px 340px;animation:anime-leaf .7s ease-in-out 3}.touch-stage[data-gesture=startle] .rig-head{animation:anime-startle .6s ease-in-out 2}.touch-stage[data-gesture=sprout] .leaf-familiar{transform-origin:200px 345px;animation:anime-sprout 1.1s ease-in-out 2}.touch-stage[data-gesture=brew] .rig-prop{animation:anime-brew 1.1s ease-in-out 2}.touch-stage[data-gesture=sleep] .rig-head{animation:anime-sleep 2.2s ease-in-out 2}
.touch-stage[data-actor=shiori] .stage-particle{color:#8d87ab}.touch-stage[data-actor=suzu] .stage-particle{color:#bb8b6e}.touch-stage[data-actor=mori] .stage-particle{color:#739a73}
.touch-stage[data-actor=shiori]{background:radial-gradient(ellipse at 50% 45%,#f4f0ff75,transparent 65%)}.touch-stage[data-actor=suzu]{background:radial-gradient(ellipse at 50% 45%,#fff0de88,transparent 65%)}.touch-stage[data-actor=mori]{background:radial-gradient(ellipse at 50% 45%,#e4f1d780,transparent 65%)}
.skip-link:not(:focus){position:fixed!important;top:0!important;left:0!important;clip-path:inset(50%);width:1px!important;height:1px!important;overflow:hidden!important}
@keyframes anime-blink{0%,44%,48%,100%{transform:scaleY(1)}46%{transform:scaleY(.05)}}@keyframes anime-incline{50%{transform:rotate(-5deg) translateY(3px)}}@keyframes anime-braid{25%{transform:rotate(4deg)}75%{transform:rotate(-4deg)}}@keyframes anime-hide{50%{transform:translateY(5px) rotate(-4deg)}}@keyframes anime-book-lift{50%{transform:translateY(-9px) rotate(-2deg)}}@keyframes anime-nod{50%{transform:translateY(6px) rotate(2deg)}}@keyframes anime-read{50%{transform:translateY(5px) rotate(-3deg)}}@keyframes anime-bounce{45%{transform:translateY(-7px) rotate(3deg)}}@keyframes anime-puff{30%{transform:rotate(3deg)}70%{transform:rotate(-3deg)}}@keyframes anime-bow{50%{transform:translateY(5px) scaleY(.98)}}@keyframes anime-wave{50%{transform:rotate(-6deg) translateY(-4px)}}@keyframes anime-pour{50%{transform:translateY(-7px) rotate(5deg)}}@keyframes anime-sip{50%{transform:translateY(-12px)}}@keyframes anime-stretch{50%{transform:translateY(-4px) scaleY(1.02)}}@keyframes anime-hat{35%{transform:rotate(-6deg) translateY(3px)}70%{transform:rotate(3deg)}}@keyframes anime-leaf{50%{transform:rotate(10deg) translateY(-5px)}}@keyframes anime-startle{25%{transform:translateY(-9px) rotate(-4deg)}70%{transform:rotate(3deg)}}@keyframes anime-sprout{50%{transform:translateY(-18px) scale(1.09)}}@keyframes anime-brew{50%{transform:rotate(-4deg) translateY(-5px)}}@keyframes anime-sleep{50%{transform:translateY(5px) rotate(-5deg)}}
.touch-stage[data-quiet=true] .anime-rig *{animation:none!important;transition:none!important;transform:none!important}
@media(prefers-reduced-motion:reduce){.touch-stage .anime-rig *{animation:none!important;transform:none!important}}
.painted-rig{border-radius:20px;overflow:hidden;filter:drop-shadow(0 10px 18px #745d4e12)}.painted-part{transform-origin:center;transition:transform .28s ease-out}.painted-head{transform:translate(calc(var(--look-x)*.18),calc(var(--look-y)*.2))}.painted-hair{animation:paint-hair 6s ease-in-out infinite}.painted-hands{animation:paint-breathe 4.5s ease-in-out infinite}.touch-stage:has(.painted-rig){min-height:550px}.touch-stage:has(.painted-rig) .actor-mount{inset:12px 10% 82px}.touch-stage[data-reaction=head] .painted-head{animation:paint-nod .8s ease-in-out 2}.touch-stage[data-reaction=hair] .painted-hair{animation:paint-stroke 1.1s ease-in-out 2}.touch-stage[data-reaction=cheek] .painted-head{animation:paint-shy .9s ease-in-out 2}.touch-stage[data-reaction=hand] .painted-hands{animation:paint-greet .8s ease-in-out 2}.touch-stage[data-reaction=gift] .painted-prop,.touch-stage[data-reaction=book] .painted-prop{animation:paint-gift 1.1s ease-in-out 2}.touch-stage[data-reaction=rest] .painted-head{animation:paint-rest 2s ease-in-out 2}.touch-stage[data-reaction=tea] .painted-hands{animation:paint-gift 1.1s ease-in-out 2}.touch-stage[data-quiet=true] .painted-rig *{animation:none!important;transform:none!important;transition:none!important}
@keyframes paint-hair{50%{transform:translate(1.5px,-1px)}}@keyframes paint-breathe{50%{transform:translateY(-1px)}}@keyframes paint-nod{50%{transform:translate(1px,3px)}}@keyframes paint-stroke{50%{transform:translate(-2px,-1px)}}@keyframes paint-shy{50%{transform:translate(-2px,1px)}}@keyframes paint-greet{50%{transform:translateY(-3px)}}@keyframes paint-gift{50%{transform:translate(1px,-3px)}}@keyframes paint-rest{50%{transform:translate(1px,2px)}}
@media(max-width:760px){.touch-stage:has(.painted-rig){min-height:490px}.touch-stage:has(.painted-rig) .actor-mount{inset:8px 3% 80px}}@media(prefers-reduced-motion:reduce){.painted-rig *{animation:none!important;transform:none!important}}
.touch-stage[data-actor=mori]{background:radial-gradient(ellipse at 50% 45%,#fff0d980,transparent 65%)}.touch-stage[data-actor=mori] .stage-particle{color:#b98d4e}html:not([data-scene-theme=night]) .companion-visual:has(.touch-stage[data-actor=shiori]){background:radial-gradient(ellipse at 50% 40%,#faf7ff,#e8e8ef)}html:not([data-scene-theme=night]) .companion-visual:has(.touch-stage[data-actor=suzu]){background:radial-gradient(ellipse at 50% 40%,#fff9ee,#eee3d7)}html:not([data-scene-theme=night]) .companion-visual:has(.touch-stage[data-actor=mori]){background:radial-gradient(ellipse at 50% 40%,#fff9ec,#f0e6d2)}
/* Scene-and-letter layout: the encounter is primary, controls live at its edge. */
html[data-page=companions] #app{max-width:1420px;padding:0 44px}
#app>.companion-heading{padding:30px 0 20px;margin:0;border:0;background:none;box-shadow:none;backdrop-filter:none;align-items:center}
.companion-heading h1{font:400 clamp(21px,2.1vw,30px)/1.5 var(--serif);letter-spacing:.06em;margin:6px 0 0}.companion-heading .eyebrow{font-size:9px;letter-spacing:.23em}.companion-heading>a{font-size:12px;color:#66716c}
.companion-room{display:block;overflow:visible;min-height:0;border:0;border-radius:0;box-shadow:none;background:transparent;color:#3e4646;margin:0 0 50px}
.companion-visual{position:relative;min-height:750px;padding:25px 32px 0;overflow:hidden;border-radius:3px;background:#eeece7!important;border:1px solid #dadbd3;isolation:isolate}
.companion-visual:before{content:'';position:absolute;z-index:-1;inset:0;background:linear-gradient(110deg,#f5f2eb 22%,#f5f2eb77 51%,#e9e5df 100%)}
.stage-topline{position:relative;z-index:3;justify-content:space-between;padding-right:285px;align-items:center;min-height:35px;letter-spacing:.05em}.stage-topline span:first-child{font:italic 19px var(--serif);color:#56615b}.stage-topline #stage-kind{font-size:10px;letter-spacing:.02em;color:#666f6b}
.cast-select{position:absolute;z-index:5;top:25px;right:28px;display:flex;gap:9px;max-width:270px}.cast-select label{font-size:10px;color:#6d756f;white-space:nowrap}.cast-select select{border:0;border-bottom:1px solid #a7afa4;background:transparent;max-width:195px;padding:7px 20px 7px 0;border-radius:0;font-size:11px;color:#4f5d55}
.cast-bookmarks{position:relative;display:flex;gap:12px;z-index:3;margin-top:64px;width:max-content}.cast-bookmarks button{display:flex;gap:12px;align-items:baseline!important;border:0!important;border-bottom:1px solid transparent!important;border-radius:0!important;padding:9px 8px!important;background:transparent!important;color:#8b8f87!important;min-height:42px!important}.cast-bookmarks button small{font:italic 10px Georgia,serif}.cast-bookmarks button span{font:20px var(--serif)}.cast-bookmarks button[aria-pressed=true]{color:#4c5d50!important;border-bottom-color:#697c68!important}
.cast-title{position:relative;z-index:2;margin-top:35px;max-width:30%;pointer-events:none}.cast-title>span:first-child{display:block;font-size:12px;letter-spacing:.2em;color:#747c70}.cast-title h2{font:400 clamp(64px,7vw,102px)/1.3 var(--serif);margin:8px 0 15px;letter-spacing:.08em;overflow-wrap:anywhere;color:#3e5148}.cast-title #actor-description{font-size:12px!important;line-height:2.1;max-width:205px;white-space:normal;color:#738073}.encounter-mark{display:block;writing-mode:vertical-rl;letter-spacing:.45em;font:10px/2 var(--serif);margin-top:26px;color:#8f947f;opacity:.8}
.touch-stage,.touch-stage:has(.painted-rig){position:absolute;inset:80px 20px 155px 31%;min-height:0;background:none!important;overflow:visible;margin:0;display:block;z-index:1}
.touch-stage .actor-mount,.touch-stage:has(.painted-rig) .actor-mount{inset:0 8% 48px 8%;height:auto;transform:none}.painted-rig{border-radius:2px;filter:none}.touch-stage .stage-orbit{display:none}.touch-caption{left:3%;right:3%;bottom:0;min-height:34px;font:14px/1.7 var(--serif);color:#4d6158;padding:7px 12px;background:#f7f4eddb;border-radius:0}.touch-caption:before{content:'「';margin-right:5px;color:#9caa97}.touch-caption:after{content:'」';margin-left:5px;color:#9caa97}
.stage-bottom{position:absolute;z-index:4;bottom:0;left:32px;right:32px;padding:15px 0 12px;border-top:1px solid #b7bba65c}.touch-help{font-size:11px;color:#687766;text-align:left;margin:0 0 9px}.touch-help span{font-size:10px;color:#969b8e;margin-left:13px}.touch-actions{justify-content:flex-start;gap:4px 16px}.touch-actions button{border:0!important;border-radius:0!important;padding:4px 0!important;background:transparent!important;font-size:12px!important;min-height:30px!important;color:#596d5c!important;box-shadow:none!important}.touch-actions button:hover{text-decoration:underline;text-underline-offset:5px}.stage-controls{justify-content:flex-start;gap:14px;align-items:center;margin-top:5px}.stage-controls button,.stage-controls select{font-size:10px!important;min-height:30px!important;padding:3px 0!important;line-height:1.5!important;color:#788372!important}.write-letter-link{margin-left:auto;font-size:11px;color:#4e6555}.stage-bottom>.stage-note:empty{display:none}.stage-bottom>.stage-note{margin:5px 0 0;font-size:10px!important}.stage-bottom #live2d-credit{max-width:900px}
.companion-chat{border:0;padding:54px 5% 0;display:grid;grid-template-columns:1fr 1.65fr;gap:8%;background:none}.letter-heading{padding-top:16px}.letter-heading .eyebrow{font-size:8px;letter-spacing:.13em}.letter-heading h2{font:400 clamp(21px,2.4vw,29px)/1.9 var(--serif);margin:14px 0;color:#4a5c4d}.letter-heading>p{font-size:11px;color:#8b9485;line-height:1.9}.letter-body{min-width:0}.companion-log{height:180px;min-height:100px;padding:10px 12px 10px 0;border-bottom:1px solid #c4cbbd66;scrollbar-width:thin;scrollbar-color:#c3caba transparent}.companion-message{margin-bottom:15px}.companion-message small{font-size:10px}.companion-message p{font:13px/1.9 var(--sans)}.companion-message.user p{border-radius:2px;background:#e5e9dd9c;padding:7px 12px}.companion-prompts{gap:20px}.companion-prompts button{border:0!important;background:transparent!important;min-height:30px!important;padding:3px 0!important;font-size:11px!important;border-radius:0!important;color:#7c8973!important}#companion-form{margin-top:15px;scroll-margin-top:28px}#companion-form>label{font-size:10px;letter-spacing:.08em}#companion-message{min-height:83px;max-height:210px;border:0;border-radius:0;border-bottom:1px solid #a9b49e;background:#f5f5ed8c;padding:13px 9px;line-height:1.8}#companion-form .actions{margin-top:14px;gap:16px}#companion-form button.primary{border-radius:2px;background:#4d6553;padding:10px 17px;min-height:38px}#companion-form button:not(.primary){border:0!important;border-radius:0!important;background:none!important;min-height:36px!important;padding:5px!important;font-size:11px!important;color:#88927e!important}#companion-status{font-size:11px;min-height:18px;color:#7e8774;margin:9px 0}.stage-options{margin-top:25px;font-size:10px;line-height:1.8;color:#88927e}.stage-options input{max-width:340px;border:1px solid #c8d0c0;background:transparent}.stage-options summary{width:max-content;max-width:100%;font-size:11px;padding:5px 0}
html[data-scene-theme=night] .companion-room{background:none;border:0;color:#e0e4d9}html[data-scene-theme=night] .companion-visual{background:#293a35!important;border-color:#536358}html[data-scene-theme=night] .companion-visual:before{background:linear-gradient(110deg,#283b34 22%,#38453cbb 60%,#293b35)}html[data-scene-theme=night] .cast-title h2,html[data-scene-theme=night] .letter-heading h2{color:#e3e7d9}html[data-scene-theme=night] .cast-bookmarks button[aria-pressed=true]{color:#e0e8cf!important;border-bottom-color:#b6c5a5!important}html[data-scene-theme=night] .cast-title #actor-description,html[data-scene-theme=night] .stage-topline #stage-kind,html[data-scene-theme=night] .touch-help{color:#b8c4b0}html[data-scene-theme=night] .touch-caption{background:#2e423be8;color:#d8e3cf}html[data-scene-theme=night] .touch-actions button,html[data-scene-theme=night] .stage-controls button,html[data-scene-theme=night] .stage-controls select{color:#c0ceb3!important}html[data-scene-theme=night] #companion-message{background:#35483d;color:#e0e7d5}html[data-scene-theme=night] .companion-chat{border:0}
@media(max-width:900px){html[data-page=companions] #app{padding:0 24px}.companion-visual{min-height:700px}.stage-topline{padding-right:250px}.stage-topline #stage-kind{max-width:130px;text-align:right;line-height:1.5}.cast-select{max-width:230px}.cast-select label{display:none}.cast-title{max-width:27%}.cast-title h2{font-size:70px}.touch-stage,.touch-stage:has(.painted-rig){left:27%;right:0}.companion-chat{gap:6%;grid-template-columns:1fr 1.55fr;padding:38px 2% 0}}
@media(max-width:600px){html[data-page=companions] #app{padding:0 16px}#app>.companion-heading{padding:24px 0 17px;display:flex;gap:9px;align-items:end}.companion-heading h1{font-size:20px;letter-spacing:.02em}.companion-heading .eyebrow{font-size:7px}.companion-heading>a{font-size:10px;white-space:nowrap;padding-bottom:4px}.companion-visual{min-height:760px;padding:16px 16px 0;overflow:hidden}.stage-topline{padding:0;align-items:start;gap:12px}.stage-topline span:first-child{font-size:17px}.stage-topline #stage-kind{font-size:9px;max-width:160px;text-align:right;line-height:1.6}.cast-select{top:64px;right:16px;max-width:178px}.cast-select select{max-width:174px;font-size:10px;padding-top:8px}.cast-bookmarks{margin-top:19px;gap:6px}.cast-bookmarks button{gap:7px;padding:7px 5px!important}.cast-bookmarks button span{font-size:18px}.cast-bookmarks button small{font-size:9px}.cast-title{position:absolute;top:115px;left:19px;max-width:150px;margin:0;z-index:3}.cast-title>span:first-child{font-size:9px;letter-spacing:.07em}.cast-title h2{font-size:47px;line-height:1.2;margin:8px 0}.cast-title #actor-description{display:none}.encounter-mark{display:none}.touch-stage,.touch-stage:has(.painted-rig){inset:152px 0 199px;min-height:0}.touch-stage .actor-mount,.touch-stage:has(.painted-rig) .actor-mount{inset:0 5px 42px}.touch-caption{font-size:12px;left:9px;right:9px;padding:7px;line-height:1.7;bottom:0}.stage-bottom{left:16px;right:16px;min-height:177px;padding-top:12px}.touch-help{font-size:10px;margin-bottom:5px}.touch-help span{font-size:9px;margin-left:9px}.touch-actions{gap:2px 15px;justify-content:flex-start}.touch-actions button{font-size:11px!important;min-height:29px!important}.stage-controls{gap:12px;flex-wrap:wrap;justify-content:flex-start}.stage-controls button,.stage-controls select{font-size:9px!important;min-height:26px!important}.write-letter-link{font-size:10px;margin-left:0}.stage-bottom #live2d-credit{font-size:8px!important;line-height:1.5}.companion-visual:has(#live2d-credit:not([hidden])){min-height:830px}.companion-visual:has(#live2d-credit:not([hidden])) .touch-stage{bottom:259px}.companion-chat{display:block;padding:32px 2px 0}.letter-heading{padding-top:0}.letter-heading h2{font-size:22px;margin:8px 0}.letter-heading>p{font-size:10px;margin:0 0 19px}.companion-log{height:175px;min-height:120px}.companion-message p{font-size:13px}.letter-heading .eyebrow{font-size:7px}.stage-options{font-size:11px}.companion-room{margin-bottom:30px}}
#app #companion-message{height:96px;min-height:83px;max-height:210px}html[data-page=companions] .site-scene{opacity:.025!important}
@media(max-width:600px){.cast-title{top:115px;max-width:310px;display:flex;align-items:baseline;gap:13px;pointer-events:none}.cast-title>span:first-child{order:2}.cast-title h2{font-size:35px;line-height:1.3;margin:0}.touch-stage,.touch-stage:has(.painted-rig){top:173px}.companion-visual{min-height:780px}}
.cast-title h2[data-long=true]{font-size:clamp(40px,4.4vw,65px);letter-spacing:.02em;line-height:1.25}@media(max-width:600px){.cast-title:has(h2[data-long=true]){gap:7px;max-width:325px}.cast-title h2[data-long=true]{font-size:25px;letter-spacing:0}.cast-title:has(h2[data-long=true])>span:first-child{font-size:8px}}

/* Original mesh keeps real transparent layers in the portrait area. */
.actor-mount .original-mesh-canvas{position:absolute;inset:0;width:100%;height:100%;transform:none}.touch-stage[data-model=standrig] .actor-mount{inset:0 2% 48px}.touch-stage[data-model=standrig]{min-height:540px}@media(max-width:760px){.touch-stage[data-model=standrig]{min-height:440px}.touch-stage[data-model=standrig] .actor-mount{inset:0 0 42px}}
