:root{font-family:ui-rounded,'Avenir Next',system-ui,sans-serif;color:#173f39;background:#eef1e5;font-synthesis:none;--ink:#173f39;--paper:#fffdf4;--orange:#ed8052}
*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 12% 15%,#d9e5c7,transparent 45%),radial-gradient(ellipse at 90% 80%,#eadabb,transparent 50%),#f0f1e6}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}button:focus-visible{outline:3px solid #135daa;outline-offset:3px}button{border:0}.shell{width:min(100%,490px);margin:0 auto;padding:22px 20px 26px}.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.brand{font-size:27px;font-weight:950;letter-spacing:-2px}.brand i{color:var(--orange);font-style:normal}.tag{font-size:10px;letter-spacing:2px;text-transform:uppercase;font-weight:800}.pill,.quiet{background:#fff9;border:1px solid #173f3920;border-radius:30px;padding:9px 15px;font-size:12px;font-weight:750}.eyebrow{font-size:10px;font-weight:850;letter-spacing:2px;text-transform:uppercase;color:#607b64;margin:0 0 8px}h1{font-size:37px;line-height:1.06;letter-spacing:-1.5px;margin:0 0 13px}h2{font-size:25px;letter-spacing:-.7px;margin:0 0 8px}p{font-size:13px;line-height:1.6;margin:8px 0 16px}.hero{padding:25px 8px 4px}.hero p{max-width:300px;color:#5a7268}.scene{position:relative;overflow:hidden;background:linear-gradient(#dbe9d4 0 61%,#bdcf96 61% 68%,#a7c186 68%);height:205px;border-radius:100px 100px 28px 28px;margin:16px 0 23px;border:1px solid #173f3910}.scene:before{content:'✦';position:absolute;right:56px;top:24px;font-size:35px;color:#fff7c4}.scene:after{content:'';position:absolute;width:350px;height:120px;border-radius:50%;background:#c5d59f;bottom:-70px;left:-60px}.sprig{position:absolute;bottom:30px;color:#4d7752;font-size:36px}.friend{position:relative;width:57px;height:53px;background:#ec9a65;border-radius:44% 44% 40% 40%;box-shadow:inset 0 -9px #db825430,0 7px 0 #173f3910;animation:bob 3s ease-in-out infinite;display:grid;place-items:center;z-index:1}.friend:before{content:'';position:absolute;top:-13px;left:2px;width:0;height:0;border-left:14px solid transparent;border-right:8px solid transparent;border-bottom:26px solid #ec9a65;transform:rotate(-20deg)}.friend:after{content:'• ᴗ •';font-weight:900;white-space:pre;font-size:19px;background:#fff0d3;border-radius:40%;padding:4px 5px;z-index:2}.friend.mint{background:#8caf8c;animation-delay:-1s}.friend.mint:before{border-bottom-color:#8caf8c}.friend.lilac{background:#b5a5cb;animation-delay:-2s}.friend.lilac:before{border-bottom-color:#b5a5cb}.hero-friend{position:absolute;left:43%;bottom:47px;transform:scale(1.5)}.bubble-hero{position:absolute;left:34%;top:33px;width:134px;height:134px;border:2px solid #ffffffc0;border-radius:50%;box-shadow:inset 7px 6px 0 #ffffff35;background:#ffffff15}.primary{background:var(--ink);color:#fffdf4;padding:14px 20px;border-radius:16px;font-weight:800;box-shadow:0 4px 0 #0d2925;font-size:13px}.wide{width:100%}.stage-list{display:grid;gap:10px;margin-top:20px}.stage-card{display:flex;text-align:left;gap:14px;align-items:center;padding:15px;background:var(--paper);border:1px solid #173f3910;border-radius:18px}.stage-no{display:grid;place-items:center;flex-shrink:0;width:37px;height:37px;background:#e5ead7;border-radius:12px;font-weight:850}.stage-card strong{font-size:14px;display:block}.stage-card small{display:block;font-size:11px;margin-top:5px;color:#5f756b}.arrow{margin-left:auto}.footer{text-align:center;font-size:10px;color:#687c6a;margin-top:22px;letter-spacing:1px}.stats{display:grid;grid-template-columns:repeat(3,1fr);background:var(--paper);border-radius:17px;padding:13px 5px;margin:15px 0}.stat{text-align:center;border-right:1px solid #dfe5d6}.stat:last-child{border:0}.stat b{font-size:23px;display:block}.stat span{display:block;text-transform:uppercase;font-size:9px;letter-spacing:1px;font-weight:750;margin-top:3px}.board-frame{padding:10px;background:#cbd6ba;border-radius:25px;box-shadow:inset 0 2px 4px #173f3912,0 9px 0 #b4c5a0;position:relative}.board{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.tile{position:relative;aspect-ratio:1;border-radius:13px;font-size:26px;line-height:1;background:#edab85;color:#7b3a23;box-shadow:inset 0 -4px 0 #00000010;display:grid;place-items:center;padding:0;transition:transform .14s,opacity .14s,box-shadow .14s}.t1{background:#a9c6d7;color:#305d72}.t2{background:#c4b3d9;color:#644981}.t3{background:#efd788;color:#715819}.t4{background:#fffbea;color:#24685e;font-size:32px;box-shadow:inset 0 -4px #c3d8bd,0 0 0 2px #6eaa83}.tile.selected{box-shadow:inset 0 0 0 3px #fffdf4,0 0 0 2px #173f39;transform:scale(.94)}.tile.dim{opacity:.48}.bubble{position:absolute;inset:3px;border:2px solid #fff;border-radius:50%;background:#ffffff25;box-shadow:inset 2px 2px 0 #ffffff80;pointer-events:none}.bubble span{position:absolute;right:-2px;bottom:-2px;background:#fffdf4;border-radius:10px;font-size:15px;line-height:20px;width:21px;color:#57432c}.controls{margin-top:21px}.hint{font-size:12px;min-height:36px;margin:0 0 9px;line-height:1.5;color:#4e675b}.action-row{display:flex;gap:8px}.action-row .primary{flex:1}.team-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 8px}.team-head strong{font-size:13px}.charge{font-size:11px;color:#4e675b}.meter{height:4px;background:#ced8bd;border-radius:3px;margin-bottom:12px}.meter>div{height:100%;background:#648775;border-radius:3px}.team{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.companion{background:#fffdf4;border-radius:15px;padding:12px 4px;border:2px solid transparent}.companion.active{border-color:#173f39;background:#e3eacd}.companion strong{display:block;font-size:12px;margin:5px 0 3px}.companion small{font-size:10px;color:#576b5c;display:block}.animal{font-size:24px}.palette{display:flex;gap:10px;margin-bottom:12px}.palette button{width:40px;height:36px;border-radius:10px;border:2px solid transparent}.palette .chosen{border-color:#173f39}.bottom-links{display:flex;justify-content:space-between;margin-top:20px}.bottom-links button{background:none;font-size:11px;text-decoration:underline;padding:8px}.notice{background:#fff3ce;border:1px solid #dfba65;padding:10px;border-radius:10px;font-size:12px;margin-bottom:10px}.result{background:var(--paper);border-radius:24px;padding:25px 22px;text-align:center;margin:20px 0}.result .score{font-size:43px;font-weight:900;letter-spacing:-2px;margin:12px}.result-actions{display:grid;gap:10px}.garden{height:305px;border-radius:28px}.garden-grid{display:grid;grid-template-columns:repeat(3,1fr);position:absolute;inset:75px 22px 10px;z-index:2;gap:24px 8px}.plot{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:8px;font-size:10px;font-weight:800}.empty-plot{width:57px;height:53px;border:2px dashed #6c8a5760;border-radius:50%;display:grid;place-items:center;font-size:22px;color:#71925c}.arrival{animation:arrive .7s ease-out,bob 3s .7s ease-in-out infinite}.instructions{background:#fffdf4;padding:18px;border-radius:18px;margin:14px 0;font-size:12px;line-height:1.7}.instructions summary{cursor:pointer;font-weight:800}.instructions ul{padding-left:18px}.clear-fx{animation:pop .3s ease both}.swap-label{position:absolute;top:2px;left:4px;font-size:10px;font-weight:900}input[type=file]{max-width:100%;font-size:11px}.save-tools{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}.save-tools button{font-size:11px}dialog{max-width:370px;width:90%;border:0;border-radius:22px;padding:25px;color:#173f39;background:#fffdf4}dialog::backdrop{background:#173f3980}dialog form{display:flex;gap:10px}dialog form button{flex:1}.tutorial-note{font-size:11px;color:#627764} @keyframes bob{50%{translate:0 -5px;rotate:2deg}}@keyframes arrive{0%{scale:.2;opacity:0}70%{scale:1.2}100%{scale:1;opacity:1}}@keyframes pop{50%{scale:.7;opacity:.4}100%{scale:.1;opacity:0}}@media(min-width:800px){.shell{padding-top:32px}body:before{content:'A LITTLE ROOM\A TO BLOOM.';white-space:pre;position:fixed;left:max(30px,calc(50% - 570px));top:40%;font-size:25px;letter-spacing:-1px;line-height:1.2;font-weight:850;color:#48684440;pointer-events:none}}@media(max-width:370px){.shell{padding:14px 12px}.tile{font-size:22px;border-radius:10px}.board{gap:4px}h1{font-size:32px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* P-02: every effect reads a presentation snapshot, never the live logical board. */
#nav{display:flex;align-items:center;gap:6px}.motion{font-size:10px;padding:9px 10px}.playback-caption{min-height:32px;font-size:12px;line-height:1.35;margin:8px 2px;color:#36594a;font-weight:750}.playback-caption[data-phase=activate],.playback-caption[data-phase=reach]{color:#795321}.board .tile:disabled{opacity:1;cursor:default}.board .vacant{background:#b7c7a5;box-shadow:none}.source{outline:3px solid #fff3a9;outline-offset:-3px}.effect-origin{box-shadow:inset 0 0 0 3px #fff9df}.effect-activate{animation:activate var(--phase-ms, .28s) ease-in-out both;z-index:3}.next-burst{box-shadow:0 0 0 3px #fff1a0;animation:waiting .3s ease-in-out both;z-index:3}.effect-collect{animation:collect var(--phase-ms, .32s) ease-in both}.effect-create{animation:arrive .42s ease-out both;z-index:3}.effect-prepare{animation:prepare .42s ease-out both}.inactive-label{position:absolute;bottom:2px;font-size:8px;font-weight:900;white-space:nowrap;background:#fff7d9;border-radius:4px;padding:1px 2px}.reward-label{position:absolute;inset:0;display:grid;place-items:center;font-size:16px;font-weight:950;background:#fff9e9e8;border-radius:12px;color:#235147;z-index:4;animation:reward var(--phase-ms, .32s) ease-out both}.beams{position:absolute;inset:10px;width:calc(100% - 20px);height:calc(100% - 20px);z-index:2;pointer-events:none;overflow:visible}.beams line{stroke:#fff2a2;stroke-width:15;stroke-linecap:round;stroke-dasharray:600;stroke-dashoffset:600;animation:beam var(--duration) ease-out forwards;filter:drop-shadow(0 0 5px #d09b46)}.falling{animation:fall .34s ease-out both}#skip-playback{font-size:11px;max-width:106px;padding:8px}.action-row .primary{min-width:90px}.action-row{align-items:stretch}@keyframes activate{50%{transform:scale(1.18);background:#fff2a2}}@keyframes waiting{to{transform:scale(1.08)}}@keyframes beam{to{stroke-dashoffset:0}}@keyframes collect{70%{opacity:.6}to{opacity:0;transform:scale(.6)}}@keyframes reward{from{transform:translateY(6px)}to{transform:translateY(-7px)}}@keyframes prepare{50%{box-shadow:inset 0 0 0 4px #fff3aa;transform:scale(.9)}}@keyframes fall{from{transform:translateY(var(--drop));opacity:.4}to{transform:translateY(0);opacity:1}}
@media(max-width:420px){.shell{padding-top:14px}.top{margin-bottom:12px}.stats{margin:10px 0;padding:10px 5px}.tutorial-note{margin-bottom:8px}.playback-caption{font-size:11px;margin-top:4px;min-height:28px}.team-head{margin-top:18px}}
/* Opening 004: preserve the hit area; keep the decision and its action together. */
button,.instructions summary{min-width:44px;min-height:44px}button{ -webkit-tap-highlight-color:transparent }button:focus-visible,.instructions summary:focus-visible{outline:3px solid #135daa;outline-offset:3px}.play-shell{max-width:400px;padding:10px 12px 20px}.play-shell .top{margin:0 0 8px;height:44px}.play-shell .brand{font-size:27px}.play-shell .brand span{font-size:8px!important;letter-spacing:.7px!important}.play-shell .pill{padding:7px 11px;font-size:11px}.puzzle-heading{display:flex;align-items:center;gap:10px;min-height:36px}.puzzle-heading h2{font-size:22px;line-height:1.1;margin:0;letter-spacing:-.6px}.puzzle-step{font-size:10px;font-weight:850;white-space:nowrap;color:#5a7363}.play-shell .stats{margin:8px 0;padding:8px 4px;min-height:51px}.play-shell .stat b{font-size:21px;line-height:1.15}.play-shell .stat span{font-size:9px;margin-top:4px;letter-spacing:.65px}.play-shell .playback-caption{display:flex;align-items:center;min-height:48px;margin:0 0 8px;padding:6px 10px;border-radius:12px;background:#e1e8d5;font-size:12px;line-height:1.35;color:#294d40;font-weight:700}.play-shell .board-frame{padding:8px;border-radius:20px;box-shadow:inset 0 2px 4px #173f3912,0 5px 0 #b4c5a0}.play-shell .board{gap:4px}.play-shell .tile{min-width:44px;min-height:44px;font-size:25px;border-radius:11px}.tile.selected{transform:none;box-shadow:inset 0 0 0 3px #fffdf4,0 0 0 2px #173f39}.tile.dim{opacity:.66}.play-shell .controls{margin-top:12px;background:#fffdf4;border:1px solid #dce4d1;border-radius:16px;padding:8px}.play-shell .hint{font-size:12px;line-height:1.4;min-height:34px;margin:0 0 7px;color:#315544}.play-shell .action-row{gap:8px}.play-shell .action-row button{min-height:44px;padding:10px 12px;box-shadow:none}.play-shell .palette{margin:0 0 8px;gap:8px}.palette:empty{display:none}.palette button{width:44px;height:44px;min-width:44px;min-height:44px;font-size:22px}.play-shell .team-head{margin:12px 2px 6px}.play-shell .team-head strong{font-size:12px}.play-shell .charge{font-size:11px}.play-shell .meter{margin-bottom:7px}.play-shell .team{gap:7px}.play-shell .companion{position:relative;padding:7px 3px;min-height:62px;border-radius:12px}.play-shell .animal{font-size:23px;display:inline-block;vertical-align:middle}.play-shell .companion strong{font-size:11px;margin:2px 0 1px}.play-shell .companion small{font-size:9px;line-height:1.2}.play-shell .bottom-links{margin-top:8px}.bottom-links button{font-size:12px;padding:10px}.instructions summary{display:flex;align-items:center;cursor:pointer;line-height:1.4}.instructions summary:before{content:'＋';margin-right:10px}.instructions[open] summary:before{content:'−'}.instructions{padding:6px 14px;font-size:12px}.play-shell .footer{font-size:9px;margin-top:12px}.play-shell .beams{inset:8px;width:calc(100% - 16px);height:calc(100% - 16px)}#skip-playback{flex:1;max-width:none;font-size:11px}.action-row:has(#skip-playback){flex-wrap:wrap}.action-row:has(#skip-playback) #skip-playback{flex:0 0 100%}.pip-sprite{object-fit:contain;display:block;width:100%;height:100%;pointer-events:none}.hero-pip{position:absolute;width:145px;height:145px;left:calc(50% - 72px);bottom:20px;z-index:2;animation:bob 3s ease-in-out infinite}.has-pip .piece-symbol{position:absolute;top:6px;left:7px;font-size:19px;z-index:2}.has-pip .bubble{inset:2px;background:#ffffff12;border-color:#fffdfa}.bubble .pip-bubble{position:absolute;width:31px;height:31px;bottom:0;right:-1px;filter:drop-shadow(0 1px 1px #5a513730)}.pip-rescue{position:absolute;z-index:8;left:50%;top:-34px;width:82px;height:91px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;animation:pip-free var(--phase-ms,.32s) ease-out both;pointer-events:none}.pip-rescue .pip-sprite{width:62px;height:62px;filter:drop-shadow(0 3px 4px #173f3940)}.pip-rescue strong{background:#fff6d8;color:#385442;border-radius:12px;padding:3px 7px;white-space:nowrap;font-size:10px}.rescued-pip{z-index:10}.rescued-pip.effect-collect{animation:none}.rescued-pip .piece-symbol,.rescued-pip .bubble{opacity:.25}.rescued-pip .reward-label{font-size:13px;align-items:end;padding-bottom:3px;background:#fff9e980}.result-pip{width:106px;height:106px;margin:0 auto 8px;animation:pip-celebrate .7s ease-out both}.pip-garden{position:relative;width:80px;height:80px;z-index:2;animation:bob 3s ease-in-out infinite;transform-origin:50% 95%}.pip-garden.arrival{animation:pip-celebrate .7s ease-out,bob 3s .7s ease-in-out infinite}.garden-grid{inset:62px 22px 10px;gap:16px 8px}.plot{min-height:84px;gap:6px}.plot:has(.pip-garden){gap:0}#garden-action{display:grid;gap:8px}.save-tools{gap:8px}.save-tools button{padding:10px 12px}.result-actions{gap:10px}.result-actions button{min-height:48px}.motion-instant *,.motion-instant *:before,.motion-instant *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@keyframes pip-free{from{translate:0 16px;scale:.8}to{translate:0 -6px;scale:1.08}}@keyframes pip-celebrate{0%{translate:0 15px;scale:.7}45%{translate:0 -12px;scale:1.08 .95}75%{translate:0 0;scale:.98 1.03}100%{translate:0 0;scale:1}}
@media(min-width:800px){body:before{display:none}.shell{padding-top:18px}.play-shell{padding-top:10px}}@media(max-width:370px){.shell:not(.play-shell){padding:12px}.play-shell{padding:10px 12px 20px}.play-shell .puzzle-heading h2{font-size:21px}.play-shell .pill{font-size:10px;padding:7px 9px}.play-shell .brand span{display:none}.play-shell .tile{font-size:23px}.play-shell .companion small{font-size:9px}}
/* Demo 005A: six accessible companions, one compact introduction, shared sprite art. */
.character-intro{display:flex;align-items:center;gap:9px;min-height:54px;margin:2px 0 6px;padding:4px 8px;background:#fff8e7;border-radius:12px}.character-intro .intro-portrait{width:42px;height:42px;flex:0 0 42px}.character-intro strong{display:block;font-size:12px;line-height:1.2}.character-intro span{display:block;font-size:10px;line-height:1.3;margin-top:3px;color:#536b5b}.play-shell .companion{display:flex;align-items:center;text-align:left;gap:3px;min-height:64px;padding:6px 3px}.companion .animal{flex:0 0 29px;width:29px;height:34px;display:grid;place-items:center}.companion .companion-portrait{width:34px;height:34px}.companion-copy{min-width:0}.play-shell .companion strong{font-size:10px;letter-spacing:-.2px}.play-shell .companion small{font-size:9px;line-height:1.3}.companion.locked{opacity:.65;background:#e6eadc}.companion.locked img{filter:grayscale(.45)}.palette .direction{width:auto;flex:1;font-size:11px;white-space:nowrap;background:#e6f0f4}.result-friends{display:flex;justify-content:center;gap:8px}.result-friends .result-pip{margin:0 0 8px;width:96px;height:96px}.unlock-note{padding:12px;background:#e4ecd8;border-radius:12px;font-size:12px}.unlock-note strong{display:block}.plot small{display:block;font-size:8px;margin-top:3px;max-width:96px;text-align:center;line-height:1.25}.garden{height:325px}.plot>span{text-align:center}.play-shell .team-head strong{font-size:12px}.play-shell .brand span{font-size:7px!important}.character-intro .pip-sprite{animation:none}.play-shell .palette{flex-wrap:wrap}
@media(min-width:800px){.play-shell{max-width:370px}}

/* Release 007: portraits own their slot; longer names wrap without collisions. */
.play-shell .companion{gap:6px;flex-direction:column;text-align:center;padding:7px 4px}
.companion .animal{flex:0 0 34px;width:34px;height:34px}
.companion-copy{width:100%;min-width:0;overflow-wrap:anywhere}
.play-shell .companion strong{font-size:12px;line-height:1.2;letter-spacing:0}
.play-shell .companion small{font-size:10px;line-height:1.3}

#demo-links{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:8px 0}
#demo-links button{font-size:12px;letter-spacing:0}
.feedback-dialog,.demo-info{max-height:calc(100dvh - 24px);overflow:auto;padding:20px}
.feedback-dialog p,.demo-info p{font-size:14px;line-height:1.5}
.feedback-dialog h2,.demo-info h2{font-size:24px}
.feedback-form{display:flex;flex-direction:column;gap:12px}
.feedback-form fieldset{margin:0;padding:0;border:0;min-width:0}
.feedback-form legend,.feedback-form>label{font-size:14px;font-weight:750}
.feedback-form textarea{font:inherit;font-size:16px;line-height:1.4;resize:vertical;width:100%;border:1px solid #728c77;border-radius:9px;margin-top:5px;padding:8px;background:#fff;color:var(--ink)}
.feedback-form textarea:focus-visible{outline:3px solid #135daa;outline-offset:2px}
.fun-rating{display:flex;gap:8px;margin:8px 0}
.fun-rating label{position:relative;flex:1;min-width:44px}
.fun-rating input{position:absolute;opacity:0;width:100%;height:100%;margin:0}
.fun-rating span{display:grid;place-items:center;min-height:44px;border:1px solid #839d81;border-radius:10px}
.fun-rating input:checked+span{background:var(--ink);color:white}
.fun-rating input:focus-visible+span{outline:3px solid #135daa;outline-offset:2px}
.feedback-actions{display:flex;gap:10px}.feedback-actions button{min-height:44px}
.feedback-form .feedback-status{margin:0}.feedback-form .feedback-context{font-size:11px;margin:0;color:#536b5b}
.demo-info h3{font-size:16px;margin:18px 0 4px}

.footer .collection-note{font-size:11px;line-height:1.4;letter-spacing:0;margin:8px auto;max-width:290px}

/* Touch 011: the marked origin alone confirms; page pan and pinch zoom remain native. */
#board .tile{touch-action:manipulation}
.puzzle-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:3px 9px;min-width:0}
.ella-greeting{font-size:14px;line-height:1.35;font-weight:750;color:#78501d;white-space:nowrap}
.tile.tap-origin{outline:3px solid #135daa;outline-offset:1px;z-index:2}
.repeat-label{position:absolute;bottom:0;left:50%;transform:translateX(-50%);background:#173f39;color:#fffdf4;border-radius:4px;padding:2px 3px;font-size:12px;font-weight:850;line-height:1.15;white-space:nowrap;pointer-events:none;z-index:5}

/* Naming is a separate, optional companion reward; rescue plots keep their meaning. */
.naming-area{margin:22px 0;padding:18px;background:#fffaf0;border:1px solid #d9d5ba;border-radius:18px;text-align:left}
.naming-area h2{font-size:21px;line-height:1.3;margin:0 0 7px}.naming-area p{font-size:14px;line-height:1.5;margin:0 0 14px}
.naming-portraits{display:flex;gap:12px;flex-wrap:wrap}.name-portrait{flex:1;min-width:110px;max-width:220px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px;border:1px solid #dbdec8;border-radius:14px;background:#fffef8;text-align:center;color:var(--ink)}
.name-portrait strong{font-size:16px;overflow-wrap:anywhere;max-width:100%}.name-portrait small{font-size:13px;line-height:1.4}.naming-portrait{width:64px;height:64px;object-fit:contain}.naming-area>.quiet{margin-top:10px}
.naming-dialog{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box}.naming-dialog h2{font-size:23px;line-height:1.2}.naming-dialog label{display:block;font-weight:750;margin:12px 0 7px}.naming-dialog input{width:100%;box-sizing:border-box;min-height:48px;font:inherit;font-size:18px;padding:10px;border:2px solid #748c6b;border-radius:10px}.naming-dialog p{font-size:14px;line-height:1.5}.naming-dialog #name-error{color:#8a2f20}.naming-actions{display:flex;gap:10px;flex-wrap:wrap}.naming-actions button{min-height:44px}.companion-copy strong{overflow-wrap:anywhere}
