:root{--home-festival-navy:var(--accent-ink);--home-ring-blue:var(--accent);--home-ring-light:#aabcea;--home-ring-empty:#e7ebf2}
.app-layout[data-route=home] .mobile-brand{display:none!important}
.app-layout:not([data-route=home]) .home-app-action{display:none!important}
.home-app-action{position:absolute;top:11px;right:128px;z-index:8;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;min-width:40px;padding:9px 13px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:650;line-height:1;white-space:nowrap;box-shadow:0 3px 12px rgba(35,60,115,.1);transition:background .16s ease,transform .16s ease}
.home-app-action[hidden]{display:none!important}
.app-layout[data-installed="false"] .home-app-action{right:70px}
.app-layout[data-installed="false"] .topbar,.app-layout[data-installed="false"] .reader-top{padding-right:80px}
.app-layout[data-installed="false"] .global-notifications{display:none!important}
.home-app-action .icon{width:17px;height:17px}
.home-app-action.is-install{background:var(--theme-primary-gradient);color:white;border-color:transparent}
.home-app-action.is-install:hover{background:var(--theme-primary-hover)}
.home-app-action.is-audio{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--line)}
.home-app-action.is-audio:hover{filter:brightness(.97)}
.home-app-action:active{transform:scale(.97)}
.app-layout[data-route=home] .page-scroll{background:var(--bg)}
.app-layout[data-route=home] .home-page{max-width:690px;padding:75px 35px 68px}
.home-progress-dashboard{padding:19px 21px 21px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 6px 22px rgba(31,53,95,.035)}
.home-progress-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.home-progress-heading h1{font-size:15px;line-height:1.4;font-weight:650;letter-spacing:-.015em}
.home-progress-more{display:inline-flex;align-items:center;gap:3px;min-height:40px;padding:4px 1px 4px 12px;background:transparent;border:0;color:var(--muted);font-size:12px}
.home-progress-more .icon{width:13px;height:13px}
.home-progress-main{display:grid;grid-template-columns:148px minmax(0,1fr);gap:24px;align-items:center;margin-top:10px}
.home-double-ring{width:100%;max-width:148px;height:auto;display:block;overflow:visible;flex:none}
.home-ring-outer,.home-ring-inner{fill:none}
.home-ring-outer{stroke-width:11}
.home-ring-inner{stroke-width:4;stroke-linecap:round}
.home-ring-base{stroke:var(--home-ring-empty)}
.home-ring-completed{stroke:var(--home-ring-blue)}
.home-ring-practicing{stroke:var(--home-ring-light)}
.home-ring-base-inner{stroke:var(--home-ring-empty)}
.home-festival-ring{stroke:var(--home-festival-navy);transition:stroke-dasharray .3s ease}
.home-festival-prefix{font-size:11px;fill:var(--muted);font-weight:550;letter-spacing:.01em}
.home-festival-days{font-size:20px;fill:var(--ink);font-weight:700;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.home-festival-unit{font-size:11px;fill:var(--muted);font-weight:550}
.home-progress-dashboard[data-festival-phase=ended] .home-festival-days,.home-progress-dashboard[data-festival-phase=today] .home-festival-days{font-size:17px;letter-spacing:0}
.home-progress-values{display:grid;gap:9px;min-width:0}
.home-progress-key{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:12px}
.home-progress-key strong{margin-left:auto;color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}
.home-progress-key-main{align-items:baseline;margin-bottom:2px}
.home-progress-key-main span{font-size:12px}
.home-progress-key .home-progress-main-value{color:var(--home-ring-blue);font-size:27px;line-height:1.1;letter-spacing:-.035em}
.home-progress-dot{display:inline-block;width:8px;height:8px;flex:0 0 8px;border-radius:50%}
.home-progress-dot-practicing{background:var(--home-ring-light)}
.home-progress-dot-unstarted{background:var(--home-ring-empty)}
.home-progress-dot-festival{background:var(--home-festival-navy)}
.home-festival-label{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:5px;color:var(--ink);font-size:11px;font-weight:550;min-width:0}
.home-festival-label small{font-weight:400;color:var(--muted);font-size:10px;margin-left:auto;white-space:nowrap}
.home-progress-breakdown{display:grid;gap:12px}
.home-progress-breakdown>p:first-child{margin-bottom:4px;font-size:13px}
.home-progress-breakdown-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}
.home-progress-breakdown-row strong{font-variant-numeric:tabular-nums}
.home-progress-breakdown .secondary{margin-top:4px}
.app-layout[data-route=home] .home-role-row{margin:24px 0 18px;padding:12px 0}
.app-layout[data-route=home] .home-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:0 0 19px}
.app-layout[data-route=home] .home-actions button{width:100%;min-width:0;min-height:54px;padding:11px;font-size:14px}
.app-layout[data-route=home] .home-actions .primary{box-shadow:none}
.app-layout[data-route=home] .home-resume{margin:22px 0 0}
.app-layout[data-route=home] .home-scenes{margin-top:30px}
.app-layout[data-route=home] .home-scenes h2{font-size:14px}
.app-layout[data-route=home] .home-scenes .section-heading{margin-bottom:7px}
.app-layout[data-route=home] .home-scenes .scene-link{min-height:52px;padding:14px 2px}
@media(max-width:1050px){.home-app-action{right:120px}.app-layout[data-installed="false"] .home-app-action{right:60px}.app-layout[data-installed="false"] .topbar,.app-layout[data-installed="false"] .reader-top{padding-right:70px}}
@media(max-width:700px){
 .home-app-action{top:10px;right:110px;min-height:37px;padding:9px 11px;font-size:12px}
 .app-layout[data-installed="false"] .home-app-action{right:54px}
 .app-layout[data-installed="false"] .topbar,.app-layout[data-installed="false"] .reader-top{padding-right:61px}
 .app-layout[data-route=home] .home-page{padding:14px 18px 48px}
 .home-progress-dashboard{padding:15px 16px 17px;border-radius:14px}
 .home-progress-main{grid-template-columns:minmax(112px,137px) minmax(0,1fr);gap:15px;margin-top:7px}
 .home-progress-key .home-progress-main-value{font-size:25px}
 .home-progress-values{gap:8px}
 .app-layout[data-route=home] .home-role-row{margin:19px 0 16px}
 .app-layout[data-route=home] .home-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:17px}
 .app-layout[data-route=home] .home-actions button{min-height:51px;font-size:13px;padding:8px 5px;gap:6px}
 .app-layout[data-route=home] .home-actions .icon{width:17px;height:17px}
 .app-layout[data-route=home] .home-scenes{margin-top:25px}
}
@media(max-width:360px){
 .home-progress-dashboard{padding:14px 12px}
 .home-progress-main{grid-template-columns:112px minmax(0,1fr);gap:9px}
 .home-progress-key{font-size:11px;gap:5px}
 .home-progress-key .home-progress-main-value{font-size:24px}
 .home-festival-label{gap:5px;font-size:10px}
 .home-festival-label small{font-size:9px}
 .app-layout[data-route=home] .home-page{padding-left:15px;padding-right:15px}
 .home-app-action{right:105px;padding:8px 9px;font-size:11px}
 .app-layout[data-installed="false"] .home-app-action{right:49px}
 .app-layout[data-installed="false"] .reader-top{padding-right:55px}
}
@media(prefers-reduced-motion:reduce){.home-festival-ring,.home-app-action{transition:none}}

/* Home header identity — a restrained lockup using the existing high-resolution app icon. */
.home-topbar-brand{display:none}
.app-layout[data-route=home] .topbar .home-topbar-brand{
 display:inline-flex;align-items:center;gap:10px;min-width:0;
 color:var(--ink);font-size:13px;font-weight:650;line-height:1.12;
 letter-spacing:-.025em;white-space:nowrap;text-decoration:none
}
.app-layout[data-route=home] .home-topbar-brand img{
 width:36px;height:36px;flex:0 0 36px;object-fit:cover;
 border-radius:9px;background:#fff;box-shadow:0 0 0 1px rgba(40,65,121,.09)
}
.home-topbar-brand .home-brand-name{display:flex;flex-direction:column;gap:2px}
.home-topbar-brand .home-brand-name>span{font-weight:550;color:var(--muted)}
.app-layout[data-route=home] .topbar .home-topbar-brand:focus-visible{
 outline:2px solid var(--ui-focus);outline-offset:4px;border-radius:4px
}
@media(max-width:700px){
 .app-layout[data-route=home] .topbar{padding-left:16px}
 .app-layout[data-route=home] .topbar .home-topbar-brand{gap:8px;font-size:12.5px}
 .app-layout[data-route=home] .home-topbar-brand img{width:34px;height:34px;flex-basis:34px}
}
@media(max-width:480px){
 /* Give the title priority over text labels on auxiliary actions at phone widths. */
 .app-layout[data-route=home] .home-app-action{
  width:39px;min-width:39px;min-height:39px;padding:9px;gap:0;
  border-radius:11px;box-shadow:none
 }
 .app-layout[data-route=home] .home-app-action>span{display:none}
}
@media(max-width:360px){
 .app-layout[data-route=home] .topbar{padding-left:12px}
 .app-layout[data-route=home] .topbar .home-topbar-brand{gap:7px;font-size:12px}
}


/* Quick one-line prompt: directly below the home progress rings. */
.quick-memory-home{margin-top:13px;padding:15px 18px 13px;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 6px 22px rgba(31,53,95,.025)}
.quick-memory-home h2{font-size:14px;display:flex;align-items:center;gap:8px;font-weight:650;letter-spacing:-.012em}
.quick-memory-home h2 .icon{width:17px;height:17px;color:var(--accent)}
.quick-memory-home-link{display:flex;align-items:center;gap:10px;min-width:0;min-height:43px;margin-top:5px;text-decoration:none;border-radius:8px}
.quick-memory-home-link .icon{width:17px;height:17px;color:var(--muted)}
.quick-memory-home-link:hover .quick-memory-home-text{color:var(--accent-ink)}
.quick-memory-home-text{display:block;flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;line-height:1.5}
.app-layout[data-route=home] .quick-memory-home + .home-role-row{margin-top:17px}
.quick-memory-history{margin-top:12px;padding-top:20px;border-top:1px solid var(--line)}
.quick-memory-history h3{font-size:14px;letter-spacing:0;color:var(--ink)}
.quick-memory-history-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:11px}
.quick-memory-history-counts>div{background:var(--bg);border-radius:9px;padding:12px 9px;display:grid;gap:5px}
.quick-memory-history-counts span{font-size:11px;color:var(--muted)}
.quick-memory-history-counts strong{font-size:16px;font-variant-numeric:tabular-nums}
.quick-memory-history-heading{font-size:12px;font-weight:650;margin-top:16px}
.quick-memory-history-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--muted);padding:7px 0;border-bottom:1px solid var(--line)}
/* The quick reader has its own route; it must not overwrite the ordinary reader's position or progress. */
.quick-memory-header{display:flex;align-items:center;gap:20px;padding:12px 38px;min-height:76px;border-bottom:1px solid var(--line);background:var(--paper);flex-shrink:0}
.quick-memory-back{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;min-width:64px}
.quick-memory-back .icon{width:18px;height:18px}
.quick-memory-heading{display:flex;align-items:center;gap:12px;min-width:0}
.quick-memory-heading h1{font-size:19px;white-space:nowrap}
.quick-memory-heading>span{font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.quick-memory-scroll{background:var(--paper)}
.quick-memory-body{width:min(100%,820px);margin:0 auto;padding:22px 38px 130px}
.quick-memory-scene{font-size:11px;letter-spacing:.06em;color:var(--muted);padding:9px 0 20px;border-bottom:1px solid var(--line)}
.quick-memory-speech{position:relative;outline-offset:2px;border-bottom:1px solid var(--line);padding:21px 20px 24px;margin:0 -20px;cursor:pointer;touch-action:pan-y pinch-zoom}
.quick-memory-speech:hover{background:var(--theme-hover-surface,#f9fbff)}
.quick-memory-speech.is-target{background:var(--theme-owned-bg,#eef6ff);border:1px solid var(--theme-owned-border,#d5e5ff);border-radius:10px;padding:20px 19px 23px;margin:10px -20px}
.quick-memory-speech-head{display:flex;align-items:center;gap:12px;min-height:25px;margin-bottom:8px}
.quick-memory-speaker{font-size:11px;font-weight:700;letter-spacing:.065em;color:var(--muted)}
.quick-memory-speech.is-target .quick-memory-speaker{color:var(--accent-ink)}
.quick-memory-target-label{font-size:10px;font-weight:650;color:var(--accent-ink);margin-left:auto}
.quick-memory-audio{width:34px;height:34px;color:var(--accent-ink)}
.quick-memory-audio .icon{width:17px;height:17px}
.quick-memory-text{font-size:var(--font);line-height:var(--reader-leading);overflow-wrap:anywhere;letter-spacing:.002em}
.quick-memory-direction{display:block;border:0;background:none;padding:3px 0 6px;text-align:left;color:var(--muted);font-size:12px;line-height:1.6}
.quick-memory-footer{flex-shrink:0;display:flex;justify-content:center;padding:13px 26px calc(13px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper);box-shadow:0 -6px 24px rgba(40,60,100,.035)}
.quick-memory-complete{width:min(100%,550px);min-height:50px}
.quick-memory-complete .icon{width:18px;height:18px}
@media(max-width:700px){
 .quick-memory-home{padding:13px 14px 10px;margin-top:11px}
 .quick-memory-home h2{font-size:13px}
 .quick-memory-home-text{font-size:13px}
 .quick-memory-header{padding:8px 15px;min-height:54px;gap:11px}
 .quick-memory-heading h1{font-size:17px}
 .quick-memory-heading>span{max-width:132px}
 .quick-memory-body{padding:12px 19px 72px}
 .quick-memory-speech{padding:17px 11px 20px;margin:0 -11px}
 .quick-memory-speech.is-target{padding:16px 10px 19px;margin:8px -11px}
 .quick-memory-text{font-size:var(--font)}
 .quick-memory-footer{padding:10px 16px}
 .quick-memory-complete{min-height:48px}
}
@media(max-width:360px){.quick-memory-heading>span{display:none}.quick-memory-history-counts{gap:5px}}
@media(prefers-reduced-motion:reduce){.quick-memory-home-link{scroll-behavior:auto}}


/* A newly authored situation section sits above exactly one preceding and one following utterance. */
.quick-memory-context{padding:17px 19px;margin:0 0 18px;background:var(--theme-surface-soft,#f6f8fc);border:1px solid var(--line);border-radius:12px}
.quick-memory-context h2{font-size:14px;font-weight:700;letter-spacing:0;margin:0 0 10px}
.quick-memory-context-setting{font-size:12px;color:var(--muted);line-height:1.6}
.quick-memory-context-phase{font-size:12px;color:var(--accent-ink);font-weight:650;margin:6px 0 9px}
.quick-memory-context-situation{font-size:14px;font-weight:500;line-height:1.8;margin-bottom:8px}
.quick-memory-context-cue{font-size:12px;line-height:1.75;color:var(--muted)}
.quick-memory-context-missing{color:var(--muted);font-size:13px}
.quick-memory-dialogue{display:block}
.quick-memory-more{width:100%;background:none;border:1px solid var(--line);padding:12px 14px;margin:12px 0;border-radius:9px;text-align:center;color:var(--accent-ink);font-size:12px;font-weight:600;display:flex;justify-content:center;gap:8px;align-items:center}
.quick-memory-more:hover{background:var(--accent-soft)}
.quick-memory-more .icon{width:14px;height:14px;transform:rotate(90deg)}
.quick-memory-more[data-more="before"] .icon{transform:rotate(-90deg)}
@media(max-width:700px){
 .quick-memory-context{padding:14px 13px;margin-bottom:12px}
 .quick-memory-context h2{font-size:13px}
 .quick-memory-context-situation{font-size:13px}
 .quick-memory-context-cue{font-size:11.5px}
}


/* Native modal sheets sit in the browser top layer. The quick-practice action
   must be a sheet child, not a z-indexed page footer hidden behind the dialog. */
.sheet.quick-memory-sheet-mode .sheet-body{flex:1 1 auto;min-height:0;overflow-y:auto}
.quick-memory-sheet-footer{flex:0 0 auto;display:flex;justify-content:center;padding:11px 24px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper);box-shadow:0 -4px 18px rgba(31,53,95,.035)}
.quick-memory-sheet-complete{width:min(100%,550px);min-height:46px}
.quick-memory-sheet-complete .icon{width:18px;height:18px}
@media(max-width:700px){
 .quick-memory-sheet-footer{padding:9px 16px calc(9px + env(safe-area-inset-bottom))}
 .quick-memory-sheet-complete{min-height:48px}
}
