/* R15 styles remain for the non-product preparation cards. R18 captures below. */
.product-close{min-width:44px;min-height:44px;padding:7px 10px;border:1px solid #c3d5e6;border-radius:5px;background:#fff;color:#4d6d87;font:inherit;font-size:12px}
.shell:has(.product-open){max-width:1480px}.shell:has(.product-open) .game-layout{grid-template-columns:minmax(0,1fr)}.shell:has(.product-open) .journal,.shell:has(.product-open) .location{display:none}.shell:has(.product-open) .masthead{margin-bottom:14px}
.stage.product-open,.stage.scene-open.product-open{position:relative;inset:auto;height:auto;min-height:0;aspect-ratio:auto;display:flex;flex-direction:column;padding:0;background:#f6f9fd;overflow:hidden;box-shadow:0 12px 32px #102d3033}
.stage.product-open #world,.stage.product-open #map-labels,.stage.product-open #quest-hud,.stage.product-open .interact-wrap{display:none}.stage.product-open .episode-banner{position:static;max-width:none;border:0;border-radius:0;font-size:12px;padding:10px 16px;background:#29483d}
.stage.product-open .feature-panel,.stage.scene-open.product-open .feature-panel{position:static;transform:none;display:block;width:100%;max-height:none;overflow:visible;padding:0;border:0;border-radius:0;background:#fff;color:#263b50;box-shadow:none}
.stage.product-open .dialog,.stage.scene-open.product-open .dialog{position:relative;inset:auto;margin:0;max-height:none;min-height:145px;overflow:visible;border:0;border-top:2px solid #b69d72;border-radius:0;outline:0;box-shadow:none;padding:15px 20px;grid-template-columns:66px minmax(0,1fr);gap:14px}.stage.product-open .portrait-frame canvas{width:62px;height:62px}.stage.product-open .dialog-body>p{font-size:14px;line-height:1.7;margin:7px 0 10px}.stage.product-open .dialog-top strong{font-size:14px}.stage.product-open .choices{margin-top:8px}.stage.product-open .recording-status{display:none}.choices button:disabled{cursor:default;opacity:.48}.play-column:has(.product-open) .touch-controls{display:none}
.product-app{font-size:14px;line-height:1.6;background:#fff;min-width:0}.product-header{display:flex;align-items:center;gap:20px;padding:12px 20px;border-bottom:1px solid #dae5f1;background:#f5f9ff}.product-brand{color:#137dd3;letter-spacing:.03em;font-size:16px}.product-patient{display:flex;align-items:baseline;gap:12px;min-width:0}.product-patient strong{font-size:18px;color:#253e56}.product-patient span{font-size:12px;color:#657a8e}.product-kind{margin-left:auto;font-size:11px;color:#416e92;background:#e5f0fc;border:1px solid #c9ddf2;border-radius:5px;padding:4px 9px}
.product-app .product-title{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid #e3eaf1}.product-app .product-title h2{font-size:17px;line-height:1.5;margin:0;color:#263b50}.product-badge{font-size:11px;color:#6e8192;margin-left:auto;white-space:nowrap}.product-body{display:grid;grid-template-columns:175px minmax(0,1fr);min-height:240px}.product-records{padding:20px 17px;background:#f1f6fc;border-right:1px solid #dae5f1}.product-records small{display:block;font-size:11px;color:#66819a;margin-bottom:10px}.product-records strong{display:block;font-size:15px}.product-records p{font-size:12px;line-height:1.6;color:#4d7190;margin:10px 0;padding:10px 8px;border:1px solid #b4d4f0;border-radius:5px;background:#fff}.product-main{min-width:0;padding:18px 24px}.product-section{margin:0 0 12px;padding:11px 14px;border:1px solid #dde6ef;background:#fbfcff;border-radius:6px}.product-section h3,.thread-compose h3{font-size:12px;color:#52718d;margin:0 0 5px}.product-section p,.thread-compose p{font-size:14px;line-height:1.65;margin:0;color:#2b4052;overflow-wrap:anywhere}
.product-primary{font:inherit;font-size:13px;min-height:44px;border:1px solid #1479cd;border-radius:5px;background:#1688df;color:#fff;padding:9px 17px;cursor:pointer}.product-primary:hover{background:#0c71c0}.product-primary:disabled{background:#e9f1f8;color:#5e7d97;border-color:#cbdae7;opacity:1;cursor:default}.product-tabs{display:flex;gap:5px;border-bottom:1px solid #d7e4ef;margin:-3px 0 13px}.product-tab{font:inherit;min-height:44px;border:0;border-bottom:3px solid transparent;background:none;padding:9px 18px;color:#657d92;font-size:13px}.product-tab[aria-selected=true]{color:#0d7bcf;border-bottom-color:#1688df;font-weight:700}.product-status{color:#197764;font-size:12px;margin:8px 0 12px}.product-hint{display:block;color:#6c8092;font-size:12px;line-height:1.65;margin:12px 0 0}.record-pending{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:12px}.record-pending h3{font-size:19px;margin:0}.record-pending p{font-size:14px;margin:0;color:#647b91}.record-symbol{display:block;font-size:28px;color:#1688df}.product-wave{color:#2092c8;letter-spacing:4px;font-size:22px}.product-footer{display:flex;justify-content:space-between;gap:15px;padding:10px 20px;border-top:1px solid #e1e9f1;background:#fbfcfe;font-size:11px;color:#7a8e9f}.product-footer a{color:#327ead;text-underline-offset:3px}
.waiting-patient{display:grid;grid-template-columns:80px minmax(0,1fr) 90px;gap:12px;align-items:center;padding:15px 12px;margin-bottom:10px;border:1px solid #dae7f2;border-radius:6px;background:#f9fcff}.waiting-patient span{font-size:13px;color:#637c91}.waiting-patient b{font-size:12px;color:#247da8}.thread-compose{padding:14px;background:#eaf5ff;border:1px solid #bcd8ef;border-radius:6px}.thread-compose .product-primary{margin-top:12px}.thread-timeline .product-section{border-left:3px solid #b9d8ee}.admission-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.admission-table th,.admission-table td{padding:15px 10px;border:1px solid #d8e4ef;text-align:center;overflow-wrap:anywhere}.admission-table thead{background:#edf5fd}.admission-table th:first-child{width:28%;font-weight:600}.admission-table td:last-child{color:#7890a3}.admission-cards{display:none}
@media(min-width:761px){
 .product-header{padding:8px 20px}.product-app .product-title{padding:8px 20px}.product-main{padding:14px 22px}.product-section{padding:8px 12px;margin-bottom:10px}.product-status{margin:6px 0 9px}.product-footer{padding:8px 20px}.stage.product-open .dialog,.stage.scene-open.product-open .dialog{min-height:130px;padding:12px 18px}
}
/* R16: keep only the hospital name, location and actionable tasks in the chrome. */
.masthead{margin-bottom:18px}.brand{gap:10px}.brand-logo{width:38px;height:38px}.brand strong{font-size:19px}.location{margin:0 2px 10px}.location h1{font-size:16px;line-height:24px;margin:0;font-weight:600}.journal{padding-top:34px}.quest-panel>header{padding:12px 15px;gap:8px}.quest-panel h2{font-size:14px;margin:0}.quest-count{margin-left:auto;font-size:12px;color:#60715c;font-variant-numeric:tabular-nums}#toggle-journal{margin-left:4px;line-height:1;width:28px;height:28px}.quest-panel #journal-body{padding:14px 15px 2px}#quest-steps li{font-size:12px;line-height:1.65;padding-bottom:12px}.map-panel{padding:14px 0;margin:14px 0;border-top:1px solid #718a714d}.map-panel summary{cursor:pointer;font-size:12px;color:#c9d7c3}.map-panel[open] .consultation-rooms{margin-top:16px}.restart-tour{font-size:11px;color:#c9d7c3;margin:8px auto}.controls{font-size:11px}.promo-slot{min-height:0;padding:24px 28px}.promo-copy h2{font-size:21px;margin:0 0 8px}.promo-copy p{font-size:13px}.character-panel h2{margin-top:0}.select-note{font-size:11px}.help-panel h2{margin-top:0}
@media(max-width:760px){.brand strong{font-size:15px}.brand-logo{width:34px;height:34px}.masthead{margin-bottom:14px}.location h1{font-size:15px}.journal{padding-top:0;gap:10px}.journal .map-panel{display:block;margin:0;padding:12px 4px}.quest-panel #journal-body{padding:13px 15px 1px}#quest-steps li{font-size:12px}.restart-tour{margin:0 auto}.controls{font-size:10px}.promo-slot{padding:22px}.promo-copy h2{font-size:20px}}
@media(max-width:360px){.brand strong{font-size:14px}.brand-logo{width:30px;height:30px}.brand{gap:7px}}
@media(max-width:760px){
 .product-app .product-header{display:grid;grid-template-columns:55px minmax(0,1fr) 44px;gap:8px}.product-app .product-patient{display:block}.product-app .product-patient span{display:block;overflow-wrap:anywhere}.product-app .product-close{padding:6px;font-size:11px}
 .shell:has(.product-open){padding:10px 8px}.shell:has(.product-open) .masthead{margin-bottom:10px}.shell:has(.product-open) .masthead .brand-logo{width:30px;height:30px}.shell:has(.product-open) .masthead .brand strong{font-size:13px}.shell:has(.product-open) .masthead nav{max-width:47%}
 .stage.product-open,.stage.scene-open.product-open{overflow:hidden}.stage.product-open .episode-banner{font-size:11px;padding:9px 12px}.product-header{padding:11px 12px;gap:10px;flex-wrap:wrap}.product-brand{font-size:12px}.product-patient{gap:7px;flex-wrap:wrap}.product-patient strong{font-size:17px}.product-patient span{font-size:11px}.product-kind{display:none}.product-app .product-title{padding:10px 12px;gap:8px}.product-app .product-title h2{font-size:15px}.product-badge{font-size:10px}.product-body{display:block;min-height:0}.product-records{display:none}.product-main{padding:13px 12px}.product-section{padding:10px 11px;margin-bottom:10px}.product-section p,.thread-compose p{font-size:14px;line-height:1.7}.product-section h3{font-size:12px}.product-tabs{margin-top:-3px;gap:2px}.product-tab{flex:1;padding:9px 8px;font-size:13px}.product-primary{font-size:13px;padding:10px 13px;max-width:100%}.record-pending{min-height:195px;padding:12px 4px}.record-pending h3{font-size:18px}.record-pending p{font-size:14px}.product-footer{padding:10px 12px;font-size:10px}.waiting-patient{grid-template-columns:44px minmax(0,1fr) 54px;padding:12px 8px;gap:7px}.waiting-patient span{font-size:12px}.waiting-patient b{font-size:11px}.admission-table{display:none}.admission-cards{display:grid;gap:9px}.admission-card{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:10px;row-gap:4px;border:1px solid #d8e4ef;border-radius:6px;padding:12px;background:#f9fcff}.admission-card strong{grid-row:1/3;color:#367dad}.admission-card p{margin:0;font-size:14px}.admission-card span{font-size:12px;color:#648197}.admission-card button{grid-column:2;justify-self:start;margin-top:5px}
 .stage.product-open .dialog,.stage.scene-open.product-open .dialog{padding:14px 11px;grid-template-columns:40px minmax(0,1fr);gap:9px;min-height:170px}.stage.product-open .portrait-frame canvas{width:38px;height:38px}.stage.product-open .portrait-frame span{font-size:8px}.stage.product-open .dialog-body>p{font-size:14px;line-height:1.7}.stage.product-open .dialog-action{font-size:12px}.stage.product-open .choices{justify-content:flex-start;gap:6px}.stage.product-open .choices button{font-size:11px;padding:8px 10px;min-height:44px}
}
/* R17: product-shaped views, nearby conversations and a separate PlusQ display. */
.record-navigation{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 20px;border-bottom:1px solid #e7edf4;background:#fff;font-size:12px;color:#7c8d9e}.record-navigation>span{padding:5px 12px;border-radius:6px;background:#f3f5f8}.record-navigation .is-selected{color:#0097ff;background:#e3f4ff;font-weight:700}.record-app-name{color:#202c38;margin-right:18px}.record-app-name:before{content:'AI';display:inline-grid;place-items:center;width:27px;height:27px;margin-right:9px;border-radius:8px;background:#0099ff;color:#fff;font-size:11px}
.product-app--record .product-body,.product-app--recording .product-body{grid-template-columns:220px minmax(0,1fr)}.product-app--record .product-records,.product-app--recording .product-records{background:#fff;padding:14px 10px}.record-list-selected{padding:12px;border:1px solid #0099ff;background:#f0f8ff;border-radius:8px;margin-top:14px}.record-list-selected small{margin:0 0 5px}.record-list-selected strong{font-size:13px;line-height:1.7}.record-list-selected>span{display:block;font-size:11px;color:#8a9bad;margin-top:7px}.record-list-selected .record-list-state{color:#9a7449}
.record-detail-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid #e3eaf1;padding-bottom:12px;margin-bottom:12px}.record-detail-header strong{font-size:17px}.record-detail-header span,.record-detail-header small{color:#8495a6;font-size:11px}.record-detail-header small{margin-left:auto}.record-notes h3{font-size:12px;color:#718297;margin:12px 0 6px}.record-notes p{font-size:12px;color:#a2adba;background:#f7f8fb;border:1px solid #d4dce6;border-radius:6px;margin:0;padding:12px;min-height:52px}.product-app--record .record-pending{min-height:180px;gap:12px}.product-app--record .record-pending h3{font-size:15px;color:#63798e}.product-app--record .record-pending p{max-width:470px;font-size:12px}.product-app--record .product-section{border:0;border-radius:0;background:#fff;padding:6px 0 12px;margin:0;border-bottom:1px solid #eef1f4}.product-app--record .product-section h3{font-size:13px;color:#34475c}.product-app--record .product-section p{font-size:14px}.product-app--record .product-primary,.product-app--recording .product-primary{background:#0099ff;border-color:#0099ff}
.product-reference{border-top:1px solid #e4ebf1;background:#fafcfe;padding:10px 20px;font-size:11px;color:#668098}.product-reference summary{cursor:pointer;min-height:32px;display:flex;align-items:center;gap:8px}.product-reference summary:before{content:'+';font-size:15px}.product-reference[open] summary:before{content:'−'}.product-reference img{display:block;width:100%;height:auto;max-height:430px;object-fit:contain;background:white;border:1px solid #e2e8f0;margin:10px auto}.product-app--waiting .product-records{display:none}.product-app--waiting .product-body{display:block}.product-app--waiting .product-main{padding-top:10px}.queue-toolbar{display:flex;justify-content:space-between;font-size:13px;padding:10px 0 15px}.queue-toolbar span{font-size:12px;color:#8596a4}.queue-staff-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.queue-staff-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:18px;border:1px solid #dce6ef;border-radius:6px;background:#fff;box-shadow:0 2px 6px #1d43630a}.queue-staff-card:first-child{border-color:#67b9f2}.queue-patient-name{display:flex;align-items:baseline;gap:9px;grid-column:1/-1}.queue-patient-name strong{font-size:19px}.queue-patient-name span,.queue-staff-card p{font-size:12px;color:#71869a}.queue-staff-card p{grid-column:1/-1;margin:0}.queue-room{font-size:12px;color:#2782c4}.queue-state{font-size:11px;color:#687888}.queue-staff-card button{grid-column:1/-1;margin-top:10px}
.plusq-screen{position:relative;background:#f3f6fa;border:1px solid #d9e1e9;border-radius:4px;overflow:hidden;min-height:300px}.product-app .plusq-header{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;background:#fff;border-bottom:1px solid #dde5ec;gap:15px}.plusq-header strong{font-size:20px;color:#283f56}.plusq-header span{font-size:13px;color:#7b8a99}.plusq-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px}.plusq-column{min-width:0;background:#fff;border:1px solid #e0e6ec;border-radius:4px;overflow:hidden}.plusq-column h3{margin:0;padding:11px;background:#334b61;color:#fff;text-align:center;font-size:16px}.plusq-room h3{background:#1679ce}.plusq-patient{display:flex;align-items:center;gap:10px;min-height:62px;padding:14px 10px;border-bottom:1px solid #e5ebf0}.plusq-patient:last-child{border:0}.plusq-patient strong{font-size:20px;color:#233a4f}.plusq-state{font-size:11px;color:#fff;background:#485567;padding:2px 6px;border-radius:3px}.plusq-state.is-exam{background:#1687e5}.plusq-owner{margin-left:auto;font-size:13px;color:#8693a0}.plusq-patient.is-empty{background:#fcfdff}.plusq-footer{padding:9px 18px;background:#fff;color:#6d8194;font-size:12px}.plusq-announcement{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:#17304770}.plusq-call{width:min(450px,100%);padding:24px;text-align:center;border:4px solid #1689ed;border-radius:12px;background:#fff;box-shadow:0 12px 30px #163e5c35}.plusq-call strong{display:block;color:#1689ed;font-size:27px}.plusq-call p{margin:6px 0 14px;color:#2b4159;font-size:18px}.plusq-call p:last-child{margin:14px 0 0;font-size:16px}.queue-response{margin:13px 0 0;padding:10px 14px;background:#f2f8fd;border-left:3px solid #72b8e8;color:#3c627c;font-size:13px}
@media(max-width:760px){.record-navigation{padding:10px 12px;gap:5px;font-size:11px}.record-app-name{width:100%;margin:0 0 5px}.record-navigation>span{padding:5px 9px}.product-app--record .product-body,.product-app--recording .product-body{display:block}.record-detail-header{gap:7px}.record-detail-header small{width:100%;margin:0}.product-app--record .record-pending{min-height:190px}.product-app--record .product-primary{font-size:12px;padding:10px}.product-reference{padding:7px 12px}.product-reference img{max-height:none}.queue-staff-list{grid-template-columns:1fr;gap:10px}.queue-staff-card{padding:13px;grid-template-columns:minmax(0,1fr) auto}.queue-patient-name{grid-column:1}.queue-staff-card p{grid-column:1;grid-row:2}.queue-staff-card .queue-room{grid-column:2;grid-row:1;align-self:center}.queue-staff-card .queue-state{grid-column:2;grid-row:2;align-self:center}.queue-staff-card button{margin-top:4px}.plusq-screen{min-height:300px}.product-app .plusq-header,.plusq-footer{display:none}.plusq-columns{display:block;padding:0}.plusq-column{border:0}.plusq-column:first-child,.plusq-column:last-child{display:none}.plusq-column h3{font-size:19px;padding:14px}.plusq-patient{min-height:78px;padding:18px}.plusq-patient strong{font-size:23px}.plusq-call{padding:20px 10px;border-width:3px}.plusq-call strong{font-size:23px}.plusq-call p{font-size:17px}.plusq-call p:last-child{font-size:14px}.plusq-announcement{padding:14px}.queue-response{font-size:12px}.record-navigation,.product-main,.product-header{overflow-wrap:anywhere}}
@media(min-width:761px){.product-app--record .product-title,.product-app--recording .product-title{display:none}.product-app--record .record-pending{min-height:120px}.product-reference{padding:4px 20px}.product-reference summary{min-height:24px}.stage.product-open .dialog-body>p{min-height:0;margin:5px 0 7px}.stage.product-open .choices{margin-top:6px}.stage.product-open .dialog-action{font-size:12px}.product-app--record .record-notes p{min-height:38px;padding:8px 12px}}
.queue-staff-list{grid-template-columns:repeat(2,minmax(0,1fr))}.queue-staff-group{min-width:0;background:#f6f8fb;border:1px solid #e2e8ef;border-radius:5px;padding:0 9px 9px}.queue-staff-group>h3{margin:0 -9px 9px;padding:10px 13px;background:#475768;color:#fff;border-radius:5px 5px 0 0;font-size:13px}.queue-staff-card{margin-top:9px}.queue-staff-card:first-of-type{border-color:#67b9f2}.queue-staff-card:not(:first-of-type){border-color:#dce6ef}.product-reference>a{display:inline-block;color:#1685cf;font-size:12px;padding:5px 0 9px}
@media(min-width:761px){.product-app--waiting .product-title{display:none}.queue-staff-card{padding:12px;gap:4px 10px}.queue-patient-name{grid-column:1;grid-row:1}.queue-patient-name strong{font-size:17px}.queue-staff-card p{grid-column:1;grid-row:2}.queue-staff-card .queue-room{display:none}.queue-staff-card .queue-state{grid-column:2;grid-row:2;align-self:center}.queue-staff-card button{grid-column:2;grid-row:1;margin:0;min-height:36px;font-size:12px;padding:6px 10px}.product-app .plusq-header{padding:10px 16px}.plusq-header strong{font-size:18px}.plusq-columns{gap:10px;padding:12px}.plusq-column h3{padding:8px}.plusq-patient{min-height:52px;padding:9px 10px}.plusq-footer{padding:6px 16px}.queue-response{margin-top:10px;padding:8px 12px}}
@media(max-width:760px){.queue-staff-list{grid-template-columns:1fr}}
@media(prefers-reduced-motion:no-preference){.product-app{animation:product-enter .24s ease-out}@keyframes product-enter{from{opacity:.2;transform:translateY(6px)}to{opacity:1;transform:none}}}
/* R18: original product captures + aligned HTML text/hit regions. */
.capture-pager{display:flex;justify-content:center;align-items:center;gap:20px;padding:10px;background:#fff;border-top:1px solid #e0e6ee;font-size:13px}.capture-pager button:disabled{opacity:.45;cursor:default}
.capture-app{background:#f1f3f8;color:#27384d}.capture-toolbar{display:flex;align-items:center;gap:14px;padding:7px 16px;background:#fff;border-bottom:1px solid #dce3ed;font-size:13px}.capture-toolbar>strong{font-size:15px;white-space:nowrap}.capture-toolbar>span{font-size:12px;color:#708198;flex:1}.capture-toolbar .product-close{margin-left:auto}.capture-workspace{display:flex;align-items:stretch;justify-content:center;gap:0;height:clamp(350px,calc(100dvh - 235px),580px);padding:10px;overflow:hidden;background:#e5e9f2}.capture-frame{position:relative;isolation:isolate;overflow:hidden;background:#fff;container-type:inline-size;min-width:0}.capture-original{display:block;position:absolute;max-width:none!important;max-height:none!important;pointer-events:none;user-select:none;z-index:0;image-rendering:auto}.capture-context{flex:1;align-self:stretch;margin-right:10px;border:1px solid #d7deea;border-radius:5px;opacity:.85}.capture-focus{flex:none;height:100%;width:auto;max-width:64%;border:1px solid #c9d5e6;border-radius:5px;box-shadow:0 3px 12px #233e5c14}.capture-mobile{display:none}.capture-overlay{position:absolute;z-index:1;box-sizing:border-box;overflow:hidden;font-size:clamp(11px,2.5cqw,15px);line-height:1.55;color:#27384d;white-space:pre-line}.capture-context-heading{display:flex;align-items:center;padding:5px 12px;font-size:clamp(11px,2.8cqw,15px);font-weight:600}.capture-context-meta{padding:4px 8px;color:#768399;font-size:clamp(10px,2.1cqw,12px)}.capture-context-copy{opacity:.85}.capture-copy{padding:8px 9px}.capture-copy section{margin:0 0 16px}.capture-copy strong{display:block;font-size:clamp(12px,2.7cqw,16px);color:#283d53;margin-bottom:5px}.capture-copy p{font-size:clamp(13px,2.9cqw,16px);line-height:1.65;margin:0;overflow-wrap:anywhere}.capture-selected{padding:7px 9px;border:1px solid #0099ff;border-radius:7px;color:#526b84;font-size:clamp(10px,2.4cqw,14px)}.capture-patient{padding:0 5px;font-weight:600;font-size:clamp(12px,2.8cqw,16px)}.capture-author{display:flex;align-items:center;justify-content:center;font-size:clamp(10px,2.3cqw,13px);color:#718095}.capture-record-title{padding:4px 8px;display:flex;align-items:center;font-size:clamp(11px,2.6cqw,15px)}.capture-search{padding:8px 12px;border-bottom:1px solid #e8edf4;color:#91a0b3;font-size:clamp(10px,2.3cqw,13px)}.capture-native-nav{display:flex;align-items:center;gap:6px;padding:4px 8px}.capture-native-nav span{display:block;padding:3px 8px;border-radius:5px;background:#f2f4f8;color:#8a98aa;font-size:clamp(10px,2.3cqw,13px)}.capture-native-nav .active{color:#0099ff;background:#e3f4ff;font-weight:700}.capture-native-tools{display:flex;align-items:center;padding-left:12px;color:#678096;font-size:clamp(11px,2.5cqw,14px)}.capture-tabs{display:flex;align-items:center;gap:3px}.capture-tab{flex:1;min-width:0;min-height:36px;padding:5px;border:1px solid transparent;border-radius:5px;color:#8290a4;background:#fff;font:inherit;font-size:clamp(11px,2.5cqw,14px)}.capture-tab[aria-selected=true]{border-color:#86c9ff;color:#0099ff;background:#e7f5ff;font-weight:700}.capture-tabs>strong{font-size:14px;color:#577690;padding:8px}.capture-action{display:flex;align-items:center;justify-content:center}.capture-button{font:inherit;font-size:13px;line-height:1.5;min-height:44px;max-width:100%;padding:8px 14px;border:1px solid #0099ff;border-radius:5px;background:#0099ff;color:#fff;white-space:normal;cursor:pointer}.capture-button:disabled{opacity:1;color:#67829a;background:#edf4fb;border-color:#d5e3ee;cursor:default}.capture-action .capture-button{width:100%;height:100%;font-size:clamp(12px,2.7cqw,15px)}.capture-pending-copy{display:flex;align-items:center;justify-content:center;text-align:center}.capture-pending-copy section{margin:0}.capture-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 16px;background:#fff;border-top:1px solid #e0e6ee;font-size:11px;color:#8695a7}.capture-footer a{color:#2484c5}.capture-messages{padding:12px}.capture-messages section{margin:0 0 18px;padding:12px;background:#f0f2f8;border-radius:7px;border-left:3px solid #abd9ff}.capture-messages strong{color:#52718c}.capture-thread-notice{padding:5px 8px;color:#62819b;font-size:clamp(10px,2.2cqw,12px)}.capture-composer{display:flex;align-items:center;padding:0 12px;border:1px solid #d4dbe8;border-radius:5px;color:#8194a9}.capture-queue-monitor{width:100%;padding:0 5px}.capture-queue-monitor .plusq-screen{min-height:0}.capture-waiting-list{padding:8px}.capture-active-status{display:flex;align-items:center;padding-left:12px;color:#0099ff;border-bottom:2px solid #0099ff;font-size:clamp(12px,3cqw,16px);font-weight:600}.capture-waiting-card{display:grid;grid-template-columns:1fr auto;gap:5px;margin:0 0 10px;padding:12px;border:1px solid #b7d8ec;border-radius:6px;background:#f2faff}.capture-waiting-card strong{font-size:clamp(15px,4cqw,20px)}.capture-waiting-card span,.capture-waiting-card small{font-size:clamp(11px,2.8cqw,14px);grid-column:1/-1;color:#688096}.capture-waiting-card button{grid-row:1/4;grid-column:2;align-self:center}.capture-secondary{font:inherit;font-size:12px;border:1px solid #b7cfe5;border-radius:5px;background:#f5f9ff;color:#3a78ac;min-height:44px;padding:7px 12px}.capture-ward-wrap{width:min(100%,1050px);background:#fff;padding:18px;align-self:center;border:1px solid #d4dce9;border-radius:6px}.capture-ward-title{display:flex;gap:18px;align-items:center;padding:4px 0 18px;font-size:14px}.capture-ward-title span{font-size:12px;color:#8693a6}.capture-ward-slices{display:grid;grid-template-columns:302fr 344fr;border:1px solid #d3d5e1}.capture-ward-slices .capture-frame{border:0;border-radius:0;width:100%;height:auto;max-width:none;box-shadow:none}.capture-ward-label{display:flex;align-items:center;padding:2px 8px;font-size:clamp(12px,4.5cqw,17px)}.capture-cell-done,.capture-cell-pending{display:flex;align-items:center;justify-content:center;font-size:clamp(11px,4cqw,16px);color:#5280a2}.capture-cell-pending{color:#9e813a}.capture-ward-note{display:flex;align-items:center;padding:2px 8px;font-size:clamp(11px,3.6cqw,15px)}.capture-care-status{font-size:13px;color:#6d8296;margin:14px 0}.capture-care-status+.capture-button{display:block;margin-left:auto}
@media(max-width:760px){.capture-toolbar{padding:8px 10px;gap:8px;flex-wrap:wrap}.capture-toolbar>span{font-size:11px}.capture-toolbar>strong{font-size:14px}.capture-toolbar .product-close{min-width:44px}.capture-toolbar .capture-secondary{font-size:11px}.capture-workspace{display:block;height:auto;min-height:0;padding:8px;background:#e8edf4;overflow:visible}.capture-context,.capture-desktop{display:none}.capture-mobile{display:block}.capture-focus{width:100%;height:auto;max-width:none;box-shadow:none}.capture-overlay{font-size:12px}.capture-copy p{font-size:14px;line-height:1.6}.capture-copy strong{font-size:14px}.capture-copy section{margin-bottom:14px}.capture-tabs .capture-tab{min-height:44px;font-size:12px}.capture-action .capture-button{font-size:12px;min-height:44px}.capture-messages{padding:7px}.capture-messages section{padding:9px;margin-bottom:12px}.capture-thread-notice{font-size:10px}.capture-selected{font-size:11px;padding:5px}.capture-author{font-size:11px}.capture-record-title{font-size:12px}.capture-waiting-card{padding:10px}.capture-waiting-card button{font-size:11px;padding:6px 8px}.capture-footer{padding:7px 10px;font-size:10px}.capture-ward-wrap{padding:10px}.capture-ward-title{display:block;font-size:13px}.capture-ward-title span{display:block;margin-top:4px}.capture-ward-label{font-size:11px;padding:0 4px}.capture-cell-done,.capture-cell-pending{font-size:10px}.capture-ward-note{font-size:10px;padding:0 4px}.capture-care-status{font-size:12px;line-height:1.6}.capture-queue-monitor{padding:0}.capture-composer{font-size:11px}.capture-waiting .capture-waiting-list{padding:6px}}
.capture-desktop-review{align-self:flex-end;display:block;margin:8px 16px 10px auto}.capture-reading .capture-workspace{height:auto;min-height:0}.capture-reading .capture-context{display:none}.capture-reading .capture-desktop{display:block;width:min(680px,100%);max-width:none;height:auto}.capture-copy section{margin-bottom:8px}.capture-copy strong{margin-bottom:3px}.capture-copy p{font-size:clamp(13px,2.5cqw,15px);line-height:1.55}.capture-selected{padding:4px 6px}.capture-tabs .capture-tab{white-space:nowrap}.capture-thread .capture-selected{padding:2px 5px;font-size:clamp(9px,2.3cqw,13px)}
.capture-app{animation:none!important}.capture-context{opacity:1}.capture-context-heading{padding:0 8px;font-size:12px;line-height:1;white-space:nowrap}.capture-context-meta{display:flex;align-items:center;padding:0 6px;font-size:11px;line-height:1.2}.capture-record-title{padding:0 6px;font-size:13px;line-height:1.2}.capture-thread-notice{display:flex;align-items:center;padding:0 6px;line-height:1.2}.capture-thread .capture-messages section{padding:8px;margin-bottom:10px}
.capture-context{flex:none;width:auto;height:100%;max-width:none}.capture-waiting-card{margin-bottom:7px}.capture-waiting-card:last-child{margin-bottom:0}.capture-thread .capture-copy p{font-size:clamp(12px,2.5cqw,14px)}
.capture-hit{overflow:visible}.capture-hit-button{display:block;width:100%;height:100%;min-width:44px;min-height:44px;background:transparent;border:0;color:transparent;cursor:pointer}.capture-hit-button:focus-visible{outline:2px solid #0099ff;outline-offset:-2px}
.capture-action{overflow:visible}
.capture-thread .capture-patient{display:flex;align-items:center;white-space:nowrap;font-size:12px;line-height:1.2}
@media(min-width:761px){.capture-app--record .capture-desktop .capture-copy p{font-size:13px;line-height:1.5}.capture-app--record .capture-desktop .capture-copy strong{font-size:14px;line-height:1.5}.capture-reading .capture-desktop .capture-copy p{font-size:14px}}
@media(min-width:761px) and (max-width:1100px){.capture-context{display:none}}
@media(max-width:760px){.capture-context{display:none}.capture-thread .capture-copy p{font-size:14px}}
@media(max-width:760px){.capture-reading .capture-mobile .capture-copy p{font-size:13px;line-height:1.45}.capture-reading .capture-mobile .capture-copy strong{font-size:12px;line-height:1.4}.capture-reading .capture-mobile .capture-copy section{margin-bottom:8px}}
@media(max-width:760px){.capture-desktop-review{display:none}.capture-reading .capture-desktop{display:none}.capture-copy p{font-size:14px;line-height:1.6}.capture-copy section{margin-bottom:14px}}
.lead-nav{font-weight:700;color:#f6e3b0;border-color:#d9b76e}.promo-actions button.promo-primary{border:0;font:inherit;font-size:14px;cursor:pointer}.lead-panel{position:relative;max-width:560px;padding-top:44px}.lead-panel>p{margin:0 0 18px}.lead-close{position:absolute;top:12px;right:12px}.lead-panel h2{padding-right:64px}.lead-form{background:#fff;border-radius:7px;padding:18px;min-height:160px}
@media(max-width:760px){.lead-panel{padding:40px 18px 20px}.lead-panel h2{font-size:19px}.lead-form{padding:12px}}
.capture-aha{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:10px 16px;padding:12px 16px;background:linear-gradient(100deg,#e9f4ff,#f3efff);border:1px solid #b9d6f5;border-radius:10px;color:#1d3d5c;animation:aha-in .45s ease-out}.capture-aha b{font-size:15px;color:#1a5fb4}.capture-aha span{font-size:15px;font-weight:700}.capture-aha small{flex-basis:100%;font-size:13px;color:#47617c}@keyframes aha-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.capture-aha{animation:none}}@media(max-width:760px){.capture-aha{margin:8px 10px 0;padding:10px 12px}.capture-aha b,.capture-aha span{font-size:14px}}
.complete-recap{margin:0 0 14px}.help-panel .complete-kicker{color:#fff2d1}.complete-kicker{display:inline-block;margin:0 0 10px;padding:4px 10px;border-radius:99px;background:#456b50;color:#fff2d1;font-size:12px;font-weight:700}.complete-features{list-style:none;margin:0;padding:0;display:grid;gap:6px}.complete-features li{display:flex;gap:10px;align-items:baseline;padding:9px 12px;background:#fffaf0;border:1px solid #dccfae;border-radius:7px;font-size:13px;color:#52624c}.complete-features li::before{content:'✓';color:#456b50;font-weight:700}.complete-features b{color:#2f4636;font-size:14px;white-space:nowrap}.complete-actions{display:grid;gap:8px;margin-top:6px}.complete-actions .primary{margin:0}.complete-actions .secondary{margin:0;font-size:13px}
.touch-hint{display:none}@media(pointer:coarse){.touch-controls{display:none!important}.controls>span:first-child,.controls>span:nth-child(2){display:none}.touch-hint{display:inline}}
@media(max-width:760px){.complete-features li{flex-wrap:wrap;gap:2px 8px}}
/* Record captures: overlay copy scales with the screenshot, at the guide's own type sizes. */
.capture-src-call,.capture-src-result{--fs:13}.capture-frame:is(.capture-src-call,.capture-src-result,.capture-src-mobile,.capture-src-start) .capture-overlay{font-size:max(9px,calc(var(--fs)*100cqw/var(--cw)));line-height:1.4}
.capture-src-mobile,.capture-src-start{--fs:15}
.capture-app .capture-frame:is(.capture-src-call,.capture-src-result,.capture-src-mobile,.capture-src-start) :is(.capture-tab,.capture-native-nav span,.capture-tabs>strong){font-size:inherit}
.capture-app .capture-frame:is(.capture-src-call,.capture-src-result,.capture-src-mobile,.capture-src-start) .capture-copy strong{font-size:max(11px,calc((var(--fs) + 1)*100cqw/var(--cw)))}
.capture-app .capture-frame:is(.capture-src-call,.capture-src-result,.capture-src-mobile,.capture-src-start) .capture-copy p{font-size:max(11px,calc(var(--fs)*100cqw/var(--cw)));line-height:1.65}
.capture-src-call .capture-patient,.capture-src-result .capture-patient{display:flex;flex-direction:column;justify-content:center;padding:0;--fs:15}.capture-patient b{font-weight:700;color:#1e2b3a}.capture-patient small{font-size:.73em;color:#8792a2;font-weight:400}
.capture-src-call .capture-search,.capture-src-result .capture-search,.capture-src-call .capture-native-tools,.capture-src-result .capture-native-tools,.capture-src-call .capture-record-title,.capture-src-result .capture-record-title{--fs:14}
.capture-chip{border:1px solid #d5dbe5;border-radius:6px;color:#2b3a4b}.capture-input{border:1px solid #dde3ec;border-radius:6px;font-weight:600}
.capture-app .capture-frame:is(.capture-src-mobile,.capture-src-start) .capture-copy p{font-size:max(13px,calc(var(--fs)*100cqw/var(--cw)))}.capture-app .capture-frame:is(.capture-src-mobile,.capture-src-start) .capture-copy strong{font-size:max(13px,calc((var(--fs) + 1)*100cqw/var(--cw)))}
.capture-cell-blank{box-shadow:inset -1px 0 #dfe3ec,inset 0 -1px #dfe3ec}
/* Phone portrait: a fixed game screen. The scene never changes size; one bottom deck holds the joystick and action button while walking and the dialog while talking. Menu, current task and episode flow live inside the game (src/app.js). */
.deck{display:none}
/* Every screen: the game takes the whole width (nothing to its right). Menu, current task (opens the task list), clock and episode title card sit inside the game. */
.journal,#view-mode,#change-character,#help{display:none!important}.game-layout{display:block}.play-column{max-width:max(760px,calc((100svh - 150px)*1.6));margin:0 auto}
.game-menu{display:grid;place-items:center;position:absolute;top:12px;left:12px;z-index:7;width:40px;height:40px;padding:0;border-radius:20px;border:1px solid #d4c68a;background:#f1ead9ee;color:#3e5540;font-size:18px}
#quest-hud{display:block;position:absolute;top:12px;left:60px;right:auto;bottom:auto;z-index:6;max-width:calc(100% - 210px);min-height:40px;padding:8px 16px;border-radius:20px;border:1px solid #d4c68a;background:#f1ead9ee;color:#3e5540;font-size:14px;font-weight:700;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.game-clock{position:absolute;top:12px;right:12px;z-index:6;min-height:40px;padding:9px 16px;border-radius:20px;border:1px solid #d4c68a;background:#22382ee0;color:#f8edc9;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;pointer-events:none}.game-clock:empty{display:none}
#stage:has(.dialog:not([hidden])) :is(.game-menu,#quest-hud),#stage.product-open :is(.game-menu,#quest-hud,.game-clock){display:none}
.room-toast{top:62px}
.menu-sheet,.quest-pop{display:flex;flex-direction:column;position:absolute;top:60px;z-index:9;padding:10px;border-radius:12px;background:#f7efdb;border:2px solid #98734d;color:#3e5540;box-shadow:0 12px 30px #0009}
.menu-sheet{left:12px;min-width:210px;gap:8px}.menu-sheet button{min-height:44px;padding:8px 14px;border-radius:8px;border:1px solid #c9bd98;background:#fffaf0;color:#3e5540;font-size:14px;text-align:left}.menu-sheet .menu-primary{background:#4f6f52;border-color:#4f6f52;color:#fff}
.quest-pop{left:60px;width:min(420px,calc(100% - 72px));padding:12px 16px}.quest-pop h3{margin:0 0 6px;font-size:13px}.quest-pop ul{margin:0;padding:0;list-style:none}.quest-pop li{position:relative;padding:5px 0 5px 22px;font-size:13px;line-height:1.5}.quest-pop li::before{content:"○";position:absolute;left:0}.quest-pop li.done{color:#8a9184;text-decoration:line-through}.quest-pop li.done::before{content:"✓"}
.title-card{display:block;position:absolute;left:50%;top:40%;z-index:9;min-width:260px;padding:18px 30px;border-radius:12px;background:#22382ee8;border:1px solid #d1ba78;color:#f8edc9;text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.96);transition:opacity .35s,transform .35s}
.title-card.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.title-card small{display:block;margin-bottom:6px;font-size:12px;letter-spacing:.08em;color:#d9c48c}.title-card strong{font-size:21px}.title-card span{display:block;margin-top:10px;padding-top:9px;border-top:1px solid #d1ba7866;font-size:13px;color:#e6dcc0}
/* Between episodes: the next episode sits under the form, so the form never blocks the story. */
.lead-next{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid #d9cba4}.lead-next p{margin:0;font-size:12px;color:#6f7a68}.lead-next button{min-height:46px;font-weight:700}
@media(max-width:760px) and (orientation:portrait){
 .shell{padding:0}.masthead,.location,.controls,.touch-controls,.journal{display:none!important}.game-layout{display:block}
 #stage{--deck:clamp(178px,28svh,224px);height:100svh;min-height:520px;max-height:none;aspect-ratio:auto;display:flex;flex-direction:column;overflow:hidden;border:0;outline:0;border-radius:0;box-shadow:none;background:#20322a}
 #stage::after{display:none}
 #stage #world{flex:1 1 0;min-height:0;height:auto;width:100%;aspect-ratio:auto}
 .map-labels{bottom:auto}.map-label--name{font-size:11px!important;padding:1px 5px}
 .deck{display:flex;flex:none;height:calc(var(--deck) + env(safe-area-inset-bottom));padding:0 22px env(safe-area-inset-bottom);align-items:center;justify-content:space-between;background:linear-gradient(#2b4337,#1e3128);border-top:2px solid #b99e73;touch-action:none;user-select:none;-webkit-user-select:none}
 .stick{position:relative;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,#ffffff12 0 58%,transparent 59%),#16261f;border:2px solid #8fa98f66;touch-action:none}
 .stick-knob{position:absolute;left:50%;top:50%;width:54px;height:54px;margin:-27px 0 0 -27px;border-radius:50%;background:#efe3c2;border:2px solid #7d6344;box-shadow:0 3px 0 #513e2b88;transition:transform .14s ease-out;pointer-events:none}
 .stick.active .stick-knob{transition:none;background:#fff4d6}
 .deck-hint{max-width:150px;margin:0;font-size:12px;line-height:1.55;color:#c9d2bf;text-align:right}
 #stage:has(#interact:not([hidden])) .deck-hint{visibility:hidden}
 #stage .interact-wrap{left:auto;right:18px;transform:none;bottom:calc(var(--deck)/2 - 31px + env(safe-area-inset-bottom));z-index:6;white-space:normal}
 #stage .interact-wrap button{min-width:120px;max-width:170px;min-height:62px;padding:8px 18px;border-radius:31px;font-size:15px;line-height:1.3}
 #stage .dialog{position:absolute;left:0;right:0;bottom:0;top:auto;height:calc(var(--deck) + env(safe-area-inset-bottom));min-height:0;max-height:none;margin:0;border:0;border-top:2px solid #b99e73;outline:0;border-radius:0;overflow:auto;padding:12px 14px calc(12px + env(safe-area-inset-bottom)) 10px;grid-template-columns:44px minmax(0,1fr);gap:10px;z-index:8;box-shadow:none}
 #stage .portrait-frame canvas{width:44px;height:44px}#stage .portrait-frame span{font-size:10px}
 #stage .dialog-body>p{font-size:15px;line-height:1.6;min-height:0;margin:4px 0 8px}#stage .choices{margin-top:6px;gap:6px}#stage .choices button{min-height:42px;font-size:13px}
 .game-menu{display:grid;place-items:center;position:absolute;top:calc(10px + env(safe-area-inset-top));left:10px;z-index:7;width:42px;height:42px;padding:0;border-radius:21px;border:1px solid #d4c68a;background:#f1ead9ee;color:#3e5540;font-size:19px}
 #quest-hud{display:block;position:absolute;top:calc(10px + env(safe-area-inset-top));left:60px;right:auto;bottom:auto;max-width:calc(100% - 72px);min-height:42px;padding:8px 14px;border-radius:21px;border:1px solid #d4c68a;background:#f1ead9ee;color:#3e5540;font-size:13px;font-weight:700;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 #stage:has(.dialog:not([hidden])) .game-menu,#stage.product-open .game-menu{display:none}
 #stage .episode-banner{top:calc(10px + env(safe-area-inset-top));left:10px;font-size:12px;max-width:70%}
 .room-toast{top:calc(62px + env(safe-area-inset-top));width:max-content;max-width:86%;white-space:normal;text-align:center;font-size:13px;line-height:1.5;padding:8px 14px}
 .menu-sheet,.quest-pop{display:flex;flex-direction:column;position:absolute;top:calc(60px + env(safe-area-inset-top));z-index:9;padding:10px;border-radius:12px;background:#f7efdb;border:2px solid #98734d;color:#3e5540;box-shadow:0 12px 30px #0009}
 .menu-sheet{left:10px;min-width:210px;gap:8px}.menu-sheet button{min-height:46px;padding:8px 14px;border-radius:8px;border:1px solid #c9bd98;background:#fffaf0;color:#3e5540;font-size:14px;text-align:left}.menu-sheet .menu-primary{background:#4f6f52;border-color:#4f6f52;color:#fff}
 .quest-pop{left:60px;right:10px;padding:12px 16px}.quest-pop h3{margin:0 0 6px;font-size:13px}.quest-pop ul{margin:0;padding:0;list-style:none}.quest-pop li{position:relative;padding:5px 0 5px 22px;font-size:13px;line-height:1.5}.quest-pop li::before{content:"○";position:absolute;left:0}.quest-pop li.done{color:#8a9184;text-decoration:line-through}.quest-pop li.done::before{content:"✓"}
 .title-card{display:block;position:absolute;left:50%;top:36%;z-index:9;min-width:230px;padding:16px 26px;border-radius:12px;background:#22382ee8;border:1px solid #d1ba78;color:#f8edc9;text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.96);transition:opacity .35s,transform .35s}
 .title-card.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.title-card small{display:block;margin-bottom:6px;font-size:12px;letter-spacing:.08em;color:#d9c48c}.title-card strong{font-size:19px}
 #stage.product-open{height:100svh;display:flex;flex-direction:column}
 #stage.product-open .episode-banner{position:static;flex:none;max-width:none}
 #stage.product-open .feature-panel{flex:1 1 0;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}
 #stage.product-open .dialog{position:relative;flex:none;height:auto;max-height:calc(var(--deck) + env(safe-area-inset-bottom))}
 #stage.product-open .deck{display:none}
 .character-options{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:4px 2px 12px}.character-options>button{flex:0 0 72%;scroll-snap-align:center}
}
/* Title screen (src/app.js): plays while the art loads — dimmed reception, light rays, the title rising out of a blur with a glint, twinkling sparkles; a tap starts the episode. */
.intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;overflow:hidden;background:#120f0a;cursor:pointer;-webkit-tap-highlight-color:transparent;outline:0}
.intro-bg{position:absolute;inset:-6%;background:url(assets/fantasy-rooms-v4.png?v=art-rofan-r2) 0 0/200% 200% no-repeat;filter:blur(3px) brightness(.42) saturate(1.15);animation:intro-bg 7s ease-out both}
.intro::before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 50% 46%,#ffe2a02e 0,transparent 42%),radial-gradient(ellipse at 50% 50%,transparent 28%,#0b0805e6 100%);pointer-events:none}
.intro-rays{position:absolute;left:50%;top:46%;width:180vmax;height:180vmax;margin:-90vmax 0 0 -90vmax;z-index:1;background:repeating-conic-gradient(#ffe6a81c 0 5deg,transparent 5deg 15deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 42%);mask:radial-gradient(circle,#000 0,transparent 42%);opacity:0;animation:intro-fade 2.4s ease-out .4s forwards,intro-spin 60s linear infinite}
.intro-title{position:relative;z-index:2;width:min(94vw,860px);aspect-ratio:3/2;margin-top:-6vh;opacity:0;transform:scale(1.16);filter:blur(12px);animation:intro-title 1.7s cubic-bezier(.2,.8,.2,1) .5s forwards}
.intro-title img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 26px #000b)}
.intro-title::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 38%,#fffbe8cc 50%,transparent 62%) 160% 0/260% 100% no-repeat;-webkit-mask:url(assets/royal-vet-title-v1.png?v=art-rofan-r2) center/contain no-repeat;mask:url(assets/royal-vet-title-v1.png?v=art-rofan-r2) center/contain no-repeat;mix-blend-mode:screen;animation:intro-shine 3.2s ease-in-out 2s infinite}
.intro-spark{position:absolute;z-index:2;width:var(--s,6px);height:var(--s,6px);border-radius:50%;background:radial-gradient(circle,#fff 0,#ffe7a0 38%,transparent 70%);opacity:0;pointer-events:none;animation:intro-twinkle var(--d,3s) ease-in-out var(--w,0s) infinite}
.intro-cta{position:absolute;z-index:3;left:50%;bottom:max(13%,calc(env(safe-area-inset-bottom) + 64px));margin:0;transform:translateX(-50%);padding:12px 26px;border:1px solid #e7cf8f99;border-radius:28px;background:#1d2a20b3;color:#fff4d6;font-size:15px;font-weight:600;letter-spacing:.04em;white-space:nowrap;opacity:0;animation:intro-cta .7s ease-out 2.3s forwards,intro-pulse 2s ease-in-out 3s infinite}
.intro-brand{position:absolute;z-index:3;left:50%;bottom:max(6%,calc(env(safe-area-inset-bottom) + 18px));transform:translateX(-50%);margin:0;color:#d9cba4aa;font-size:11px;letter-spacing:.12em;white-space:nowrap;opacity:0;animation:intro-fade 1s ease-out 2.6s forwards}
.intro.leaving{pointer-events:none;animation:intro-out .65s ease-in forwards}
@keyframes intro-bg{from{transform:scale(1.14)}to{transform:scale(1.02)}}
@keyframes intro-fade{to{opacity:1}}
@keyframes intro-spin{to{transform:rotate(360deg)}}
@keyframes intro-title{to{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes intro-shine{0%{background-position:160% 0}55%,100%{background-position:-60% 0}}
@keyframes intro-twinkle{0%,100%{opacity:0;transform:translateY(0) scale(.5)}50%{opacity:1;transform:translateY(-14px) scale(1)}}
@keyframes intro-cta{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes intro-pulse{0%,100%{box-shadow:0 0 0 0 #e7cf8f55}50%{box-shadow:0 0 0 10px #e7cf8f00}}
@keyframes intro-out{to{opacity:0;transform:scale(1.04)}}
@media(prefers-reduced-motion:reduce){.intro-title,.intro-cta,.intro-brand,.intro-rays{opacity:1;transform:none;filter:none}.intro-cta{transform:translateX(-50%)}.intro-title{transform:none}.intro-spark{display:none}}
@media(max-width:760px) and (orientation:portrait){.game-clock{display:none}.title-card span{font-size:12px}}
/* Prologue cards between the title and the first episode */
.intro.in-prologue .intro-title{opacity:0;transform:scale(.92);filter:blur(6px);transition:opacity .5s,transform .5s,filter .5s;animation:none}
.intro.in-prologue .intro-rays{opacity:.35}
.prologue{position:absolute;inset:0 0 22vh;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 max(16px,calc((100vw - 560px)/2));text-align:center;color:#fff4d6;text-shadow:0 2px 12px #000c;pointer-events:none}
.intro.in-prologue .intro-title{position:absolute}
.prologue small{display:inline-block;margin-bottom:14px;padding:4px 14px;border:1px solid #e7cf8f80;border-radius:20px;color:#f0d891;font-size:12px;letter-spacing:.14em}
.prologue p{margin:0;font-size:clamp(18px,4.8vw,26px);line-height:1.65;font-weight:600;white-space:pre-line;word-break:keep-all}
.prologue.show{animation:prologue-in .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes prologue-in{from{opacity:0;transform:translateY(14px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
.prologue-skip{position:absolute;z-index:4;top:max(16px,calc(env(safe-area-inset-top) + 10px));right:16px;padding:8px 14px;border:1px solid #e7cf8f66;border-radius:18px;background:#1d2a2099;color:#f3e6c4;font-size:13px;cursor:pointer}
@media (prefers-reduced-motion:reduce){.prologue.show{animation:none}}
.prologue-brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:22px;animation:prologue-brand 1s cubic-bezier(.2,.8,.2,1) .35s both}
.prologue-brand img{width:88px;height:88px;border-radius:22px;box-shadow:0 0 0 2px #f0d89199,0 0 34px #ffe2a0aa}
.prologue-brand strong{font-size:clamp(30px,8vw,44px);font-weight:800;letter-spacing:.04em;color:#ffe6a0;text-shadow:0 0 18px #ffd56a99,0 2px 10px #000c}
.prologue-brand span{font-size:clamp(14px,3.6vw,17px);color:#f6ead0;opacity:.9}
@keyframes prologue-brand{from{opacity:0;transform:scale(.86);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@media (prefers-reduced-motion:reduce){.prologue-brand{animation:none}}
/* Embedded in the landing page: the game screen only */
html.is-embed,html.is-embed body{height:100%;overflow:hidden;background:#1f332d}
html.is-embed .masthead,html.is-embed .promo-slot,html.is-embed .controls,html.is-embed .ambient-note,html.is-embed .location{display:none!important}
html.is-embed .shell{max-width:none;padding:0;margin:0}
html.is-embed .play-column{max-width:min(100vw,calc(100svh * 1.6))}
/* Story choice after the prologue */
.story-choice{display:flex;flex-direction:column;gap:12px;width:min(100%,420px);margin-top:22px;pointer-events:auto}
.story-pick{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 18px;border:1px solid #e7cf8fb3;border-radius:16px;background:#1d2a20d9;color:#fff4d6;cursor:pointer;text-shadow:none}
.story-pick strong{font-size:clamp(17px,4.6vw,21px);color:#ffe6a0}
.story-pick span{font-size:13px;color:#e9dcbd}
.story-pick:hover,.story-pick:focus-visible{background:#2b3d2ee6;border-color:#ffe6a0;outline:0}
/* Story switch: always visible on the map, hidden while talking or in a product screen */
.story-switch{position:absolute;top:60px;right:12px;z-index:7;display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:7px 14px;border-radius:14px;border:1px solid #e7cf8f;background:linear-gradient(#3a2a30,#1f1a22);color:#ffe6a0;box-shadow:0 3px 12px #0007;cursor:pointer}
.story-switch small{font-size:10px;letter-spacing:.06em;color:#d9c9a3}
.story-switch strong{font-size:14px}
.story-switch:hover,.story-switch:focus-visible{border-color:#fff1c2;outline:0}
#stage:has(.dialog:not([hidden])) .story-switch,#stage.product-open .story-switch,#stage.scene-open .story-switch{display:none}
/* Phone portrait: no bottom control bar. The map fills the screen; a small see-through joystick floats over it, and the dialog rises from the bottom only while talking. */
@media(max-width:760px) and (orientation:portrait){
 #stage{--deck:132px}
 .story-switch{top:calc(60px + env(safe-area-inset-top));right:10px}
 .room-toast{top:calc(118px + env(safe-area-inset-top))}
 .deck{position:absolute;left:0;right:0;bottom:0;z-index:5;background:none;border-top:0;pointer-events:none}
 .deck .stick{pointer-events:auto;width:104px;height:104px;opacity:.8;background:radial-gradient(circle,#ffffff1a 0 58%,transparent 59%),#16261fb0}
 .deck .stick-knob{width:46px;height:46px;margin:-23px 0 0 -23px}
 .deck-hint{display:none}
 #stage:has(.dialog:not([hidden])) .deck{display:none}
 #stage .dialog{height:auto;min-height:150px;max-height:46svh;border-radius:16px 16px 0 0;box-shadow:0 -6px 24px #0006}
 #stage.product-open .dialog{border-radius:0}
}
/* Optional clinic name before play */
.hospital-input{width:100%;box-sizing:border-box;padding:14px 16px;border-radius:12px;border:1px solid #e7cf8f;background:#fffaf0;color:#3e3326;font-size:16px;text-align:center;pointer-events:auto}
.hospital-input:focus{outline:2px solid #ffe6a0;outline-offset:1px}
.story-pick--primary{background:linear-gradient(#3f6b4b,#2a4a34);border-color:#ffe6a0}
.hospital-skip{pointer-events:auto;background:none;border:0;color:#e9dcbd;font-size:13px;text-decoration:underline;cursor:pointer;padding:6px}
/* 임명장 on the e-book form after the first trial */
.royal-cert{position:relative;margin:4px 0 16px;padding:22px 20px 18px;border-radius:10px;background:radial-gradient(circle at 50% 0,#fffdf6,#f6ead0);border:2px solid #c9a24f;box-shadow:inset 0 0 0 5px #fffaf0,inset 0 0 0 6px #d9b871;text-align:center;color:#4a3a24}
.royal-cert small{display:block;font-size:11px;letter-spacing:.2em;color:#9c6d22}
.royal-cert strong{display:block;margin:6px 0 10px;font-size:20px;color:#3d2c14}
.royal-cert .cert-name{margin:0 0 8px;font-size:17px;font-weight:800;color:#7d1a1f}
.royal-cert p{margin:0 0 10px;font-size:13px;line-height:1.6}
.royal-cert .cert-date{display:block;font-size:12px;color:#6f5a3a}
.royal-cert .cert-seal{position:absolute;right:16px;bottom:12px;display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:#b3262c;color:#fff4e0;font-size:20px;font-weight:800;transform:rotate(-8deg);opacity:.9}
/* 플러스벳 상단 · 도입 상담 신청서: the inquiry form wrapped as an in-world scroll */
.lead-panel--scroll{background:radial-gradient(circle at 50% 0,#fffdf6,#f3e5c6);border:2px solid #c9a24f;box-shadow:inset 0 0 0 5px #fffaf0,inset 0 0 0 6px #d9b871,0 18px 40px #0008}
.lead-panel--scroll .scroll-kicker{display:block;margin-bottom:4px;font-size:11px;letter-spacing:.2em;color:#9c6d22;text-align:center}
.lead-panel--scroll h2{text-align:center;color:#3d2c14}
.lead-panel--scroll #inquiry-detail{text-align:center;color:#5a4a32}
/* 플러스벳 상단에 보내는 서신: our own form in the game's style */
.letter-form{display:flex;flex-direction:column;gap:14px;margin-top:10px;padding:18px 16px 14px;border-radius:10px;background:#fffaf0cc;border:1px dashed #c9a24f}
.letter-form[hidden]{display:none}
.letter-form label{display:flex;flex-direction:column;gap:6px}
.letter-form label>span{font-size:14px;font-weight:700;color:#4a3a24}
.letter-form label>span b{color:#b3262c}
.letter-form label>span small{display:block;margin-top:2px;font-size:12px;font-weight:400;color:#8a7553}
.letter-form input{box-sizing:border-box;width:100%;padding:12px 14px;border-radius:10px;border:1px solid #d9c08a;background:#fffdf7;color:#3d2c14;font-size:16px}
.letter-form input:focus{outline:2px solid #c9a24f;outline-offset:1px;border-color:#c9a24f}
.letter-submit{margin-top:4px;min-height:52px;border:0;border-radius:12px;background:linear-gradient(#3f6b4b,#2a4a34);color:#fff4d6;font-size:16px;font-weight:800;box-shadow:0 3px 0 #1d3324;cursor:pointer}
.letter-submit:disabled{opacity:.7;cursor:wait}
.letter-error{margin:0;padding:8px 12px;border-radius:8px;background:#fde8e6;color:#8c1d22;font-size:13px}
.letter-note{margin:0;font-size:12px;color:#8a7553;text-align:center}
/* Embedded on a tall PC window: keep the game vertically centred instead of leaving a band below */
@media (min-width:761px){html.is-embed .shell{min-height:100vh;display:flex;flex-direction:column;justify-content:center}}
/* Episode picker: four stories on one row on wide screens */
@media (min-width:761px){.character-options{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
/* E-book letter extras */
.letter-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.letter-check{flex-direction:row!important;align-items:flex-start;gap:8px!important}
.letter-check input{width:20px;height:20px;margin:2px 0 0;flex:none;accent-color:#3f6b4b}
.letter-check span{font-size:13px!important;font-weight:600!important}
.letter-check a{color:#9c6d22;font-weight:400}
/* Sealed 칙서 above the letter: readable shape, blurred words, a wax seal on top */
.royal-cert--sealed{overflow:hidden}
.royal-cert--sealed>*:not(.cert-seal){filter:blur(3.5px);opacity:.75;user-select:none}
.royal-cert--sealed::after{content:"봉인됨";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-6deg);display:grid;place-items:center;width:86px;height:86px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d4434a,#8c1d22);color:#fff4e0;font-size:15px;font-weight:800;letter-spacing:.06em;box-shadow:0 4px 14px #0006,inset 0 0 0 4px #b3262c}
.decree-note{text-align:center;color:#5a4a32;word-break:keep-all;text-wrap:balance}
#decree-continue{width:100%;min-height:50px}
/* Letter/decree panels: centred titles that wrap by word, clear of the close button */
.lead-panel--scroll h2{padding:0 52px;text-align:center;word-break:keep-all;text-wrap:balance;line-height:1.35}
#decree-modal h2{padding:0;margin-top:14px}
/* The 칙서 scroll */
.royal-cert{position:relative;margin:18px 4px 16px;padding:26px 22px 22px;border:0;border-radius:4px;text-align:center;color:#4a3420;font-family:"Gowun Batang",serif;
 background:radial-gradient(ellipse at 50% 30%,#fffaf0 0,#f8ecd0 55%,#efdcb1 100%),#f6e8c8;
 box-shadow:inset 0 0 0 2px #c9a24f,inset 0 0 0 6px #fbf3dc,inset 0 0 0 7px #d9b871,inset 0 0 26px #c9a24f40,0 10px 26px #3a281444}
.royal-cert::before{content:"";position:absolute;inset:12px;pointer-events:none;background:
 radial-gradient(circle,#c9a24f 0 3px,transparent 3.5px) 0 0/14px 14px no-repeat,
 radial-gradient(circle,#c9a24f 0 3px,transparent 3.5px) 100% 0/14px 14px no-repeat,
 radial-gradient(circle,#c9a24f 0 3px,transparent 3.5px) 0 100%/14px 14px no-repeat,
 radial-gradient(circle,#c9a24f 0 3px,transparent 3.5px) 100% 100%/14px 14px no-repeat}
.decree-rod{position:absolute;left:-12px;right:-12px;height:14px;border-radius:7px;z-index:2;
 background:radial-gradient(circle at 7px 50%,#f3d27a 0 5px,#9c6d22 6px,transparent 7px),radial-gradient(circle at calc(100% - 7px) 50%,#f3d27a 0 5px,#9c6d22 6px,transparent 7px),linear-gradient(#a8743c,#6b4320 60%,#4e2f15);box-shadow:0 2px 4px #0005}
.decree-rod--top{top:-7px}.decree-rod--bottom{bottom:-7px}
.decree-crest{display:block;width:56px;height:36px;margin:2px auto 4px}
.decree-crest svg{width:100%;height:100%}
.royal-cert .decree-kicker{display:block;font-size:12px;letter-spacing:.3em;color:#9c6d22;font-family:inherit}
.royal-cert .decree-title{display:block;margin:4px 0 10px;font-size:26px;font-weight:700;letter-spacing:.35em;color:#5a1d1d;font-family:inherit}
.royal-cert .cert-name{display:inline-block;margin:0 0 10px;padding:0 10px 4px;font-size:18px;font-weight:700;color:#7d1a1f;border-bottom:1px solid #c9a24f;font-family:inherit}
.royal-cert .decree-body{margin:0 4px 14px;font-size:14px;line-height:1.75;color:#4a3420;word-break:keep-all}
.decree-sign{display:flex;justify-content:center;align-items:baseline;gap:12px;padding-right:46px;font-size:13px;color:#6f5a3a}
.decree-emperor{font-size:16px;font-weight:700;color:#3d2c14;letter-spacing:.2em}
.royal-cert .cert-seal{position:absolute;right:18px;bottom:16px;display:block;width:52px;height:52px;padding:6px;box-sizing:border-box;border-radius:50% 46% 52% 48%;transform:rotate(-12deg);
 background:radial-gradient(circle at 35% 30%,#d4434a,#9c1f26 60%,#6e1217);box-shadow:0 2px 0 #5a0f13,0 3px 8px #0005,inset 0 0 0 3px #b3262c,inset 0 0 0 5px #8c1d22;font-size:0}
.royal-cert .cert-seal svg{width:100%;height:100%}
/* sealed version: the rods, crest and frame stay crisp; the words are hidden */
.royal-cert--sealed>*:not(.cert-seal):not(.decree-rod):not(.decree-crest){filter:blur(4px);opacity:.7}
.royal-cert--sealed .cert-seal{opacity:0}
@media(max-width:400px){.royal-cert{padding:24px 16px 20px}.royal-cert .decree-title{font-size:23px}.royal-cert .decree-body{font-size:13px}}
.product-reference--phone{max-height:470px;overflow:auto}.product-reference--phone img{width:min(270px,100%);max-height:none;border-radius:18px;box-shadow:0 6px 18px #1d436322}
/* 임명장 v2: ornate corners, a square 이세계 황제 직인 */
.royal-cert{padding:34px 30px 30px;background:radial-gradient(ellipse at 50% 28%,#fffcf3 0,#f8ecd0 55%,#ecd6a6 100%),#f6e8c8;box-shadow:inset 0 0 0 3px #b8892f,inset 0 0 0 9px #fbf3dc,inset 0 0 0 10px #d9b871,inset 0 0 34px #b8892f55,0 14px 30px #2a1d0e55}
.royal-cert::before{display:none}
.decree-corner{position:absolute;width:34px;height:34px;pointer-events:none}.decree-corner svg{width:100%;height:100%;display:block}
.decree-corner--tl{top:14px;left:14px}.decree-corner--tr{top:14px;right:14px;transform:scaleX(-1)}.decree-corner--bl{bottom:14px;left:14px;transform:scaleY(-1)}.decree-corner--br{bottom:14px;right:14px;transform:scale(-1)}
.royal-cert .decree-kicker{letter-spacing:.42em;font-size:12px}
.royal-cert .decree-title{position:relative;font-size:30px;letter-spacing:.5em;margin:6px 0 14px;padding-left:.5em;text-shadow:0 1px 0 #fff8}
.royal-cert .decree-title::before,.royal-cert .decree-title::after{content:"";position:absolute;top:50%;width:34px;height:1px;background:linear-gradient(90deg,transparent,#b8892f)}
.royal-cert .decree-title::before{left:calc(50% - 128px)}.royal-cert .decree-title::after{right:calc(50% - 128px);transform:scaleX(-1)}
.royal-cert .decree-body{font-size:14.5px;line-height:1.85}
.decree-sign{justify-content:space-between;align-items:center;gap:8px;padding:10px 74px 0 24px;border-top:1px dashed #c9a24f99}
.decree-emperor{font-size:17px;letter-spacing:.12em;white-space:nowrap}
.royal-cert .cert-seal{right:22px;bottom:20px;width:62px;height:62px;padding:0;border-radius:4px;background:none;box-shadow:none;transform:rotate(-6deg);opacity:.93;filter:drop-shadow(0 1px 1px #5a0f1355)}
.royal-cert .cert-seal svg{display:block}
.royal-cert--sealed .decree-corner{filter:none;opacity:1}
@media(max-width:400px){.royal-cert{padding:30px 18px 24px}.royal-cert .decree-title{font-size:25px}.royal-cert .decree-title::before,.royal-cert .decree-title::after{display:none}.decree-sign{padding-right:66px}.royal-cert .cert-seal{width:54px;height:54px;right:16px}}
/* 임명장 share row */
.decree-share{display:flex;justify-content:center;gap:18px;margin:14px 0 10px}
.share-btn{display:grid;place-items:center;width:54px;height:54px;padding:0;border:0;border-radius:50%;cursor:pointer;box-shadow:0 3px 8px #3a281433;transition:transform .15s}.share-btn:hover,.share-btn:focus-visible{transform:translateY(-2px)}.share-btn svg{width:28px;height:28px}
.share-btn--insta{background:linear-gradient(45deg,#f9a13a,#e1306c 50%,#8a3ab9)}
.share-btn--kakao{background:#fee500;color:#191600}
.share-btn--copy{background:#fffaf0;color:#4a3a24;border:1px solid #c9a24f}
.decree-share-note{margin:0 0 10px;text-align:center;font-size:13px;color:#2f6b4b;word-break:keep-all}
/* marketing consent */
.letter-check--consent span{font-weight:500!important;color:#5a4a32}
.consent-view{margin-left:4px;padding:0;border:0;background:none;color:#9c6d22;font-size:13px;text-decoration:underline;cursor:pointer}
.consent-sheet{margin:-4px 0 0;padding:14px 14px 12px;border-radius:10px;background:#fffdf7;border:1px solid #d9c08a;font-size:12.5px;color:#4a3a24}
.consent-sheet[hidden]{display:none}
.consent-sheet strong{display:block;margin-bottom:8px;font-size:13.5px}
.consent-sheet dl{display:grid;grid-template-columns:66px 1fr;gap:6px 10px;margin:0 0 10px}
.consent-sheet dt{font-weight:700;color:#7a5a24}.consent-sheet dd{margin:0;line-height:1.5;word-break:keep-all}
.consent-close{width:100%;min-height:38px;border-radius:8px;border:1px solid #c9a24f;background:#fff;color:#4a3a24;font-weight:700;cursor:pointer}

/* 임명장 as illustrated art (name and date drawn in by the game) */
.royal-cert.royal-cert--art{padding:0;margin:6px 0 14px;background:none;border:0;border-radius:6px;box-shadow:none}
.royal-cert--art::before{display:none}
.decree-art{display:block;width:100%;height:auto;border-radius:6px;box-shadow:0 8px 22px #0b122655}
#decree-modal .lead-panel{width:min(720px,94vw);max-width:none}
#decree-modal .royal-cert--art{margin-top:0}
