/* Português para Persas — learner site. Look: design/stitch_v1 (DESIGN.md). Rules: 08_Proposta_Design_App.md.
   Layout: one phone-width column (max 560px), sticky lesson header, fixed bottom nav / bottom action bar. */
@font-face{font-family:'Vazirmatn';src:url(fonts/vazirmatn.woff2) format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'Inter';src:url(fonts/inter-latin.woff2) format('woff2');font-weight:100 900;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
@font-face{font-family:'Inter';src:url(fonts/inter-latin-ext.woff2) format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0100-024F,U+1E00-1EFF}

:root{
  --bg:#F6F8F7; --surface:#FFFFFF; --surface-2:#EEF4F2; --ink:#14201F; --muted:#56635F; --line:#DCE5E2;
  --primary:#0F766E; --primary-ink:#FFFFFF; --primary-soft:#DDF1EE; --primary-deep:#005C55;
  --accent:#9D431B; --accent-soft:#FBE7DE;
  --ok:#1E7A45; --ok-soft:#E1F4E8; --warn:#8A5A00; --warn-soft:#FFF3D9; --warn-line:#F0C35A;
  --shadow:0 1px 2px rgba(16,40,36,.06),0 4px 16px rgba(16,40,36,.06);
  --fa:'Vazirmatn',Tahoma,'Segoe UI',sans-serif; --pt:'Inter','Segoe UI',Roboto,Arial,sans-serif;
  --r:18px; --r-sm:12px; --nav-h:68px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0F1514; --surface:#18201F; --surface-2:#1F2A28; --ink:#E6EFEC; --muted:#9FB2AD; --line:#2B3735;
  --primary:#4FC2B3; --primary-ink:#06211E; --primary-soft:#173A36; --primary-deep:#7FD8CC;
  --accent:#F0A27E; --accent-soft:#3A2419; --ok:#6FD39A; --ok-soft:#173326; --warn:#F4C969; --warn-soft:#33290F; --warn-line:#7A6021;
  --shadow:0 1px 2px rgba(0,0,0,.3); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F1514; --surface:#18201F; --surface-2:#1F2A28; --ink:#E6EFEC; --muted:#9FB2AD; --line:#2B3735;
  --primary:#4FC2B3; --primary-ink:#06211E; --primary-soft:#173A36; --primary-deep:#7FD8CC;
  --accent:#F0A27E; --accent-soft:#3A2419; --ok:#6FD39A; --ok-soft:#173326; --warn:#F4C969; --warn-soft:#33290F; --warn-line:#7A6021;
  --shadow:0 1px 2px rgba(0,0,0,.3); color-scheme:dark}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--fa);font-size:1rem;line-height:1.75;direction:rtl;
  -webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;cursor:pointer}
img{max-width:100%;display:block}
/* programmatic focus on a screen's heading after navigation: no ring unless the keyboard is in use */
[tabindex="-1"]:focus:not(:focus-visible){outline:none}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:10px}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}

#app{max-width:560px;margin:0 auto;min-height:100%;position:relative}
.screen{padding:16px max(16px,env(safe-area-inset-right,0px)) calc(var(--nav-h) + 28px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));
  display:flex;flex-direction:column;gap:16px}
.screen.lesson{padding-bottom:calc(112px + env(safe-area-inset-bottom,0px))}

/* Portuguese blocks: always their own LTR block */
.pt{font-family:var(--pt);direction:ltr;text-align:left;unicode-bidi:isolate}
.pt-xl{font-size:1.6rem;font-weight:700;line-height:1.35}
.pt-lg{font-size:1.25rem;font-weight:600;line-height:1.4}
.pt-md{font-size:1.06rem;font-weight:600;line-height:1.45}
.fa-sm{font-size:.88rem;color:var(--muted)}
h1,h2,h3{margin:0;line-height:1.5;text-wrap:balance}
h1{font-size:1.4rem;font-weight:800}
h2{font-size:1.15rem;font-weight:800}
h3{font-size:1rem;font-weight:700}
p{margin:0}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:12px;min-width:0}
.card.soft{background:var(--surface-2);box-shadow:none}
.card.tappable{cursor:pointer;text-align:start;width:100%}
.row{display:flex;align-items:center;gap:12px;min-width:0}
.row>.grow{flex:1;min-width:0}
.stack{display:flex;flex-direction:column;gap:8px;min-width:0}
.muted{color:var(--muted)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 20px;border-radius:16px;
  border:0;font-weight:700;font-size:1.02rem}
.btn.primary{background:var(--primary);color:var(--primary-ink)}
.btn.secondary{background:var(--surface);color:var(--primary-deep);border:1.5px solid var(--line)}
.btn.ghost{background:transparent;color:var(--primary-deep);min-height:44px}
.btn.block{width:100%}
.btn:disabled{opacity:.45;cursor:default}
.btn svg{width:22px;height:22px;flex:none}
.icon-btn{width:48px;height:48px;border-radius:50%;border:0;background:var(--surface-2);display:inline-grid;place-items:center;flex:none}
.icon-btn svg{width:24px;height:24px}
.play{width:64px;height:64px;border-radius:50%;border:0;background:var(--primary);color:var(--primary-ink);display:inline-grid;place-items:center;flex:none}
.play svg{width:30px;height:30px}
.play.sm{width:44px;height:44px}
.play.sm svg{width:20px;height:20px}
.play.is-playing{box-shadow:0 0 0 6px var(--primary-soft)}
.play.no-audio{background:var(--surface-2);color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line);
  background:var(--surface);font-weight:600;font-size:.95rem}
.pill svg{width:20px;height:20px}
.pill.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-deep)}
.chip{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;background:var(--surface-2);font-size:.88rem;font-weight:600;border:0}
.chip.on{background:var(--primary);color:var(--primary-ink)}

/* bottom nav */
.nav{position:fixed;inset:auto 0 0 0;z-index:20;background:var(--surface);border-top:1px solid var(--line);
  padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px))}
.nav-in{max-width:560px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.nav button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;border-radius:14px;
  font-size:.78rem;font-weight:600;color:var(--muted);min-height:56px}
.nav button svg{width:24px;height:24px}
.nav button.on{color:var(--primary-deep)}
.nav button.on .ico{background:var(--primary-soft)}
.nav .ico{display:grid;place-items:center;width:56px;height:30px;border-radius:999px}

/* home */
.hello{display:flex;align-items:center;gap:12px}
.avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:1.25rem;flex:none;
  background:var(--primary-soft);color:var(--primary-deep);border:0}
.hero{padding:0;overflow:hidden}
.hero .body{padding:16px;display:flex;flex-direction:column;gap:12px}
/* every course image is 16:9 (Firefly); the box keeps that ratio, so nothing is ever cut off (Hamid, 2 Nov 2026) */
.media{aspect-ratio:16/9;width:100%;max-width:100%;height:auto;background:linear-gradient(135deg,var(--primary-soft),var(--accent-soft));object-fit:cover}
.bar{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.bar>i{display:block;height:100%;background:var(--primary);border-radius:99px}
.offline{align-self:center;display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:var(--ok);background:var(--ok-soft);
  padding:4px 12px;border-radius:999px}
.offline svg{width:16px;height:16px}
.tile-ico{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent)}
.tile-ico svg{width:22px;height:22px}

/* lessons path */
.unit-h{padding:4px 2px 0}
.path{display:flex;flex-direction:column;gap:10px;position:relative}
.node{display:flex;align-items:center;gap:12px;width:100%;text-align:start;border:1px solid var(--line);background:var(--surface);
  border-radius:var(--r);padding:12px 14px;min-height:64px}
.node .dot{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--surface-2);color:var(--muted);font-weight:700;font-size:.9rem}
.node.done .dot{background:var(--primary);color:var(--primary-ink)}
.node.current{border:2px solid var(--primary);box-shadow:var(--shadow)}
.node.current .dot{background:var(--primary-soft);color:var(--primary-deep)}
.node.later{opacity:.72}
.node .dot svg{width:20px;height:20px}

/* lesson header */
.lhead{position:sticky;top:env(safe-area-inset-top,0px);z-index:15;background:var(--bg);margin:-16px -16px 0;padding:10px 16px 8px;
  display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--line)}
.lhead .row{gap:10px}
.steps{display:flex;gap:6px;flex:1}
.steps i{flex:1;height:6px;border-radius:99px;background:var(--line)}
.steps i.on{background:var(--primary)}
.lhead .t{font-size:.8rem;color:var(--muted);text-align:center}
.actionbar{position:fixed;inset:auto 0 0 0;z-index:20;background:var(--bg);border-top:1px solid var(--line);
  padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.actionbar .in{max-width:528px;margin:0 auto;display:flex;gap:10px}
.actionbar .in .btn.primary{flex:1}

/* sentence card */
.scard{align-items:stretch}
.scard .top{display:flex;justify-content:space-between;align-items:center}
.ptbox{border-inline-end:4px solid var(--primary);background:var(--surface-2);border-radius:var(--r-sm);padding:14px 16px}
.controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pronbox{background:var(--accent-soft);border-radius:var(--r-sm);padding:10px 14px;font-weight:600;color:var(--accent)}
.dots{display:flex;gap:6px;justify-content:center}
.dots i{width:8px;height:8px;border-radius:50%;background:var(--line)}
.dots i.on{background:var(--primary);width:20px;border-radius:99px}
.note{font-size:.9rem;color:var(--muted)}

/* dialogue */
.bubble{max-width:88%;display:flex;flex-direction:column;gap:6px}
.bubble.a{align-self:flex-start}
.bubble.b{align-self:flex-end}
.bubble .who{font-size:.82rem;font-weight:700;color:var(--muted)}
.bubble .in{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.bubble.b .in{background:var(--primary-soft);border-color:transparent}
.bubble.now .in{outline:2px solid var(--primary)}
.bubble .in .row{align-items:flex-start}
.audiobar{position:fixed;inset:auto 0 calc(76px + env(safe-area-inset-bottom,0px)) 0;z-index:19;pointer-events:none}
.audiobar .in{pointer-events:auto;max-width:528px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);
  display:flex;align-items:center;gap:8px;padding:6px 8px}
.screen.lesson.has-audiobar{padding-bottom:calc(180px + env(safe-area-inset-bottom,0px))}

/* exercises */
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:10px 16px;border-radius:16px;border:1.5px solid var(--line);
  background:var(--surface);text-align:start;font-weight:600}
.opt .r{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);flex:none}
.opt.sel{border-color:var(--primary);background:var(--primary-soft)}
.opt.sel .r{border-color:var(--primary);background:radial-gradient(var(--primary) 45%,transparent 50%)}
.opt.good{border-color:var(--ok);background:var(--ok-soft)}
.opt.bad{border-color:var(--warn-line);background:var(--warn-soft)}
.opt.done{opacity:.55}
.match{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.match .col{display:flex;flex-direction:column;gap:10px;min-width:0}
.match .opt{min-height:64px;padding:10px 12px;font-size:.95rem}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.wchip{min-height:48px;padding:6px 14px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);font-family:var(--pt);direction:ltr;font-weight:600}
.wchip.used{visibility:hidden}
.answer{min-height:64px;border:2px dashed var(--line);border-radius:16px;padding:8px;display:flex;flex-direction:column;gap:8px;direction:ltr}
.answer .wchip{text-align:left}
.blank{display:inline-block;min-width:4.5em;border-bottom:2px solid var(--primary);text-align:center;padding:0 4px;color:var(--primary-deep)}

/* bottom sheet */
.sheet-wrap{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:rgba(10,20,18,.25)}
.sheet{width:100%;max-width:560px;border-radius:24px 24px 0 0;padding:14px max(16px,env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));
  display:flex;flex-direction:column;gap:12px;animation:up .22s ease-out}
.sheet::before{content:"";align-self:center;width:44px;height:5px;border-radius:9px;background:currentColor;opacity:.2}
.sheet.good{background:var(--ok-soft);color:var(--ok)}
.sheet.bad{background:var(--warn-soft);color:var(--warn)}
.sheet p{color:var(--ink)}
.sheet .btn.primary{background:var(--ok);color:#fff}
.sheet.bad .btn.primary{background:var(--primary);color:var(--primary-ink)}
@keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}

/* accordion */
details.more{background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
details.more>summary{list-style:none;cursor:pointer;padding:14px 16px;font-weight:700;display:flex;align-items:center;justify-content:space-between;min-height:52px}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary svg{width:20px;height:20px;transition:transform .2s}
details.more[open]>summary svg{transform:rotate(180deg)}
details.more>.in{padding:0 16px 16px;display:flex;flex-direction:column;gap:12px}
.line{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.line:first-child{border-top:0}
.line .grow{flex:1;min-width:0}

/* pocket card */
.pocket{background:var(--surface);border:2px dashed var(--line);border-radius:var(--r);padding:12px;display:flex;flex-direction:column;gap:8px}
.pocket .line{border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.check{display:flex;align-items:flex-start;gap:10px;padding:8px 0}
.check input{width:24px;height:24px;margin-top:2px;accent-color:var(--primary);flex:none}

/* complete */
.leaf{width:120px;height:120px;border-radius:50%;margin:24px auto 0;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}
.leaf svg{width:56px;height:56px}
.cando{display:flex;gap:10px;align-items:flex-start}
.cando svg{width:22px;height:22px;color:var(--ok);flex:none;margin-top:3px}

/* who */
.people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.person{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 12px;border-radius:var(--r);border:1px solid var(--line);background:var(--surface);min-height:150px;justify-content:center}
.person .avatar{width:72px;height:72px;font-size:1.8rem}
.person.add{border-style:dashed;background:transparent}
.field{display:flex;flex-direction:column;gap:6px}
.field input{min-height:52px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);padding:0 14px;font:inherit}
.field input:focus{border-color:var(--primary)}
.field input:focus-visible,.search input:focus-visible{outline:3px solid var(--primary);outline-offset:2px}

/* phrases */
.search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);padding:0 12px;min-height:52px}
.search input{flex:1;border:0;background:transparent;font:inherit;color:var(--ink);min-width:0}
.search:focus-within{border-color:var(--primary)}
.search svg{width:22px;height:22px;color:var(--muted)}
.prow{display:flex;flex-direction:column;gap:8px}
.staff{position:fixed;inset:0;z-index:50;background:var(--surface);display:flex;flex-direction:column;justify-content:center;gap:24px;
  padding:24px max(24px,env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) max(24px,env(safe-area-inset-left,0px))}
.staff .pt{font-size:2.3rem;font-weight:800;line-height:1.25}
.staff .x{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));inset-inline-start:12px}

/* progress */
.week{display:flex;justify-content:space-between;gap:4px}
.week .d{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8rem;color:var(--muted)}
.week .d i{width:34px;height:34px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center}
.week .d i.on{background:var(--primary);color:var(--primary-ink)}
.week .d i svg{width:18px;height:18px}

.toast{position:fixed;inset:auto 16px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom,0px)) 16px;z-index:60;display:flex;justify-content:center;pointer-events:none}
.toast span{background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:14px;font-size:.92rem;max-width:520px}
.row>svg{width:22px;height:22px;flex:none;color:var(--muted)}
.story .body{padding:12px 16px 14px}
.linkbtn{border:0;background:none;padding:0;color:var(--primary-deep);font-weight:700}
/* karaoke: the word being spoken lights up and the light moves word by word */
.pt .w{border-radius:6px;padding:0 2px;margin:0 -2px;transition:background-color .12s ease,color .12s ease;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.pt .w.on{background:var(--accent);color:#fff}
.pt .w.past{color:var(--primary-deep)}
@media (prefers-reduced-motion: reduce){.pt .w{transition:none}}
/* role-play */
.rp .chips .chip{min-height:44px}
.bubble.turn .in{outline:3px solid var(--accent);background:var(--accent-soft)}
.bubble.masked .pt{filter:blur(7px);user-select:none}
.countdown{display:flex;flex-direction:column;gap:6px;color:var(--accent);font-weight:700;font-size:.92rem}
.countdown i{display:block;height:6px;border-radius:9px;background:var(--accent);transform-origin:left;animation:shrink linear forwards}
@keyframes shrink{from{transform:scaleX(1)}to{transform:scaleX(0)}}
/* review */
.card.due{border:2px solid var(--accent)}
.badge{min-width:32px;height:32px;padding:0 8px;border-radius:999px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800}

/* round 4 (external review): status tags, downloads, alphabet and syllables, reference, settings, hidden translation */
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:999px;font-size:.76rem;font-weight:700;background:var(--surface-2);color:var(--muted);vertical-align:middle}
.tag.part{background:var(--warn-soft);color:var(--warn)}
.tag.good{background:var(--primary-soft);color:var(--primary-deep)}
.tag.lv-own{background:var(--ok-soft);color:var(--ok)}
.tag.lv-help{background:var(--primary-soft);color:var(--primary-deep)}
.tag.lv-more{background:var(--warn-soft);color:var(--warn)}
.dl{display:flex;flex-direction:column;gap:8px}
.dl .ok{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--ok-soft);color:var(--ok);flex:none}
.dl .ok svg{width:18px;height:18px}
.btn.sm{min-height:40px;padding:0 14px;font-size:.9rem}
.btn.danger{color:var(--accent)}
.fa-lg{font-size:1.15rem;font-weight:700}
.sec-h{padding-top:8px}
.alpha{direction:ltr;display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px}
.alpha .tile{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);min-height:72px}
.alpha .tile.vowel{border-color:var(--accent);background:var(--accent-soft)}
.alpha .big{font-family:var(--pt);font-size:1.35rem;font-weight:700;line-height:1.2}
.syl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
table.syl{border-collapse:separate;border-spacing:4px;direction:ltr;margin:0 auto}
table.syl th{font-family:var(--pt);color:var(--muted);font-size:.9rem;padding:2px 6px}
table.syl .wchip{min-width:48px}
.src{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-top:1px solid var(--line)}
.srclink{font-family:var(--pt);font-size:.85rem;color:var(--primary-deep);overflow-wrap:anywhere;word-break:normal;text-align:left;direction:ltr;display:block;max-width:100%}
.pt.saying{background:var(--primary-soft);border-radius:8px;box-shadow:0 0 0 4px var(--primary-soft)}
.hide-tr .tr{filter:blur(6px);cursor:pointer;user-select:none;transition:filter .2s}
.hide-tr .tr.show{filter:none}
.pocket.hidden-model .pt{filter:blur(7px)}
.countdown.manual{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between}
.cando.lv-1 svg{color:var(--primary)}
.cando.lv-0 svg{color:var(--muted)}

/* tablet and desktop: use the space instead of a phone column everywhere */
@media (min-width:760px){
  #app{max-width:760px}
  .nav-in{max-width:760px}
  .actionbar .in,.audiobar .in{max-width:728px}
  .sheet{max-width:640px;border-radius:24px 24px 0 0}
  .bubble{max-width:72%}
  .people{grid-template-columns:repeat(3,1fr)}
  .pt-xl{font-size:2rem}
}
@media (min-width:1100px){
  #app{max-width:960px}
  .nav-in{max-width:960px}
  .actionbar .in,.audiobar .in{max-width:928px}
}

/* Familiar, task-first layout (October 2026). Shared controls keep their labels. */
:root{--shadow:0 2px 8px rgba(16,40,36,.035)}
.row,.controls{flex-wrap:wrap}
.grow{min-width:0}
.card{gap:14px}
.chip,.pill,.btn.sm{min-height:48px}
.chip{padding:8px 14px}
.icon-btn.labeled{width:auto;min-width:48px;min-height:48px;height:auto;border-radius:12px;display:inline-flex;gap:6px;padding:8px 12px;font-size:.88rem;font-weight:600}
.icon-btn.labeled svg{width:20px;height:20px;flex:none}
.play,.play.sm{width:auto;min-width:88px;height:52px;border-radius:14px;display:inline-flex;justify-content:center;gap:8px;padding:0 14px;font-size:1rem;font-weight:700}
.play svg,.play.sm svg{width:22px;height:22px;flex:none}
.bubble .in .row{flex-direction:column;align-items:stretch}
.bubble .play{align-self:flex-start}
.person-switch{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.8rem;min-height:64px;padding:0;color:var(--primary-deep)}
.person-switch .avatar{width:40px;height:40px;font-size:1.1rem}
.hello{align-items:flex-start}
.hello .grow{flex:1}
.hello h1{font-size:1.25rem;text-wrap:wrap;overflow-wrap:anywhere}
.home-screen .hero>.body{gap:10px}
.home-screen .hero .body>.pt{display:none}
.hero details.more{box-shadow:none;border:0;background:var(--surface-2)}
.hero details.more>summary{font-size:.9rem;min-height:48px;padding:8px 12px}
.home-screen .hero .bar{height:6px}
.node.later{opacity:1}
.node .grow{text-align:start}
.chapter>.in{padding:0 12px 12px}
.chapter>summary{gap:12px}
.chapter .path{gap:8px}
.chapter[open]>summary{color:var(--primary-deep)}
.story>.in>.media{border-radius:12px}
.story>summary{font-size:.9rem;min-height:48px;padding:10px 16px}
.scard .top{gap:8px}
.scard .controls{gap:8px}
.ptbox{padding:12px}
.lhead .steps{min-width:48px}
.lhead .row{flex-wrap:nowrap}
.lhead .icon-btn.labeled{max-width:118px;padding:8px;font-size:.8rem;gap:4px}
.screen.lesson{gap:12px}
.field select{font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:14px;min-height:52px;padding:8px 12px;max-width:100%;width:100%}
.search input{min-height:48px}
.linkbtn{min-height:48px;padding:8px 4px}
.prow .controls{gap:8px}
.prow .controls .labeled{font-size:.85rem}
.check{min-height:48px;cursor:pointer}
.sheet.good .btn.primary{background:var(--primary);color:var(--primary-ink)}
/* Ensure text on the warm accent remains readable in dark mode too. */
.badge,.pt .w.on{color:var(--surface)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .badge,:root:not([data-theme="light"]) .pt .w.on{color:#14201F}}
:root[data-theme="dark"] .badge,:root[data-theme="dark"] .pt .w.on{color:#14201F}
@media (max-width:359px){
  .screen{padding-inline:12px}
  .lhead{margin-inline:-12px;padding-inline:12px}
  .scard{padding:12px}
  .scard .controls{gap:6px}
  .scard .pill{padding-inline:10px}
  .scard .play{min-width:80px;padding-inline:10px}
  .pt-xl{font-size:1.45rem}
  .nav button{font-size:.72rem}
}
@media (min-width:760px){
  .home-screen .hero{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:stretch}
  .home-screen .hero>.media{grid-column:2;grid-row:1;width:100%;align-self:center}
  .home-screen .hero>.body{grid-column:1;grid-row:1;min-width:0}
  .home-screen .hero .body>.pt{display:block}
  .screen.lesson{max-width:760px;margin-inline:auto}
  .actionbar .in,.audiobar .in{max-width:728px}
}
@media (min-width:1100px){
  body.has-nav #app{max-width:860px;margin-left:auto;margin-right:calc(220px + (100vw - 1100px)/2)}
  body.has-nav .screen{padding-bottom:32px}
  .nav{inset:0 0 0 auto;width:220px;border-top:0;border-left:1px solid var(--line);padding:48px 16px}
  .nav-in{display:flex;flex-direction:column;gap:12px;max-width:none}
  .nav button{flex-direction:row;justify-content:flex-start;gap:12px;padding:10px 12px;font-size:1rem;min-height:56px}
  .nav .ico{width:36px;height:36px;flex:none}
  .nav button.on{background:var(--primary-soft)}
  .actionbar .in,.audiobar .in{max-width:728px}
}
.story-intro{display:flex;flex-direction:column;gap:6px}
/* the story image is shown whole, full width, above its lead sentence (no more 56-px thumbnail) */
.story-teaser{display:flex;flex-direction:column;gap:8px;padding:0}
.story-teaser>.media{border-radius:12px}
.story-lead{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6}
@media (min-width:760px){.home-screen .hero.no-media{grid-template-columns:1fr}}

/* Course-player layout (2 Nov 2026): outline beside the lesson, today's goal, the «عمیق‌تر شو» row. Rules: design/revisao_interface_2026-11-02.md */
.course-pct{display:flex;flex-direction:column;gap:6px}
.course-pct strong{font-size:.9rem;color:var(--primary-deep)}
.course-pct .bar{height:6px}
.goal{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:var(--r-sm);background:var(--surface-2)}
.goal.card{background:var(--surface);padding:16px}
.goal .goal-ico{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent)}
.goal .goal-ico svg{width:20px;height:20px}
.goal.done .goal-ico{background:var(--ok-soft);color:var(--ok)}
.goal .bar{height:6px}
.goal.done .bar>i{background:var(--ok)}
.goal-card{gap:12px}
.goal-card .goal{background:transparent;padding:0}
.outline{display:flex;flex-direction:column;gap:12px}
.ohead{display:flex;flex-direction:column;gap:10px}
.ohead h2{font-size:1.05rem}
.ochapter>summary{font-size:.95rem;min-height:48px;padding:10px 12px;gap:8px}
.ochapter>summary>span{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ochapter>.in{padding:0 8px 8px}
.olist{display:flex;flex-direction:column;gap:4px}
.oitem{display:flex;align-items:center;gap:10px;width:100%;text-align:start;border:0;background:transparent;border-radius:12px;padding:8px 8px;min-height:56px}
.oitem strong{font-size:.95rem;line-height:1.4}
.oitem .odot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--surface-2);color:var(--muted);font-weight:700;font-size:.85rem;border:2px solid transparent}
.oitem .odot svg{width:16px;height:16px}
.oitem.done .odot{background:var(--primary);color:var(--primary-ink)}
.oitem.started .odot{border-color:var(--primary);background:linear-gradient(90deg,var(--primary) 50%,var(--surface-2) 50%);color:var(--primary-deep)}
.oitem.current{background:var(--primary-soft)}
.oitem.current .odot{border-color:var(--primary);background:var(--surface);color:var(--primary-deep)}
.oitem.current strong{color:var(--primary-deep)}
.oparts{display:flex;flex-direction:column;gap:2px;margin:0 0 6px 0;padding-inline-start:12px;border-inline-start:2px solid var(--primary-soft)}
.opart{display:flex;align-items:center;gap:10px;width:100%;text-align:start;border:0;background:transparent;border-radius:12px;padding:6px 8px;min-height:52px}
.opart .pico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none;background:var(--surface-2);color:var(--muted)}
.opart .pico svg{width:18px;height:18px}
.opart .pname{font-weight:700;font-size:.92rem}
.opart.done .pico{background:var(--ok-soft);color:var(--ok)}
.opart.now{background:var(--surface);box-shadow:inset 0 0 0 2px var(--primary)}
.opart.now .pico{background:var(--primary);color:var(--primary-ink)}
/* the drawer (phone and tablet): slides in from the start side, the page behind is inert */
.outline-drawer{position:fixed;inset:0;z-index:45;background:rgba(10,20,18,.35);display:flex;justify-content:flex-start}
.outline-drawer .drawer{width:min(360px,92vw);height:100%;overflow:auto;background:var(--bg);display:flex;flex-direction:column;gap:12px;
  padding:calc(10px + env(safe-area-inset-top,0px)) 12px calc(16px + env(safe-area-inset-bottom,0px));animation:slide .22s ease-out;box-shadow:var(--shadow)}
.drawer .dhead{position:sticky;top:0;background:var(--bg);padding:4px 0 8px;z-index:1}
@keyframes slide{from{transform:translateX(30%);opacity:0}to{transform:none;opacity:1}}
.outline-side{display:none}
/* the «عمیق‌تر شو» row under every part: three fixed buttons, one open panel */
.deeper{display:flex;flex-direction:column;gap:10px;padding-top:4px}
.deeper .pill{gap:8px}
.deeper-panel{margin-top:2px}
@media (max-width:420px){.lhead .outline-btn span{display:none}.lhead .outline-btn{width:48px;min-width:48px;padding:8px;border-radius:50%}}
@media (min-width:1100px){
  .lhead .outline-btn{display:none}
  /* the column sits on the start side (the right, in the Persian edition), like the lesson list of a course player */
  .outline-side{display:block;position:fixed;top:0;bottom:0;inset-inline-start:0;inset-inline-end:auto;width:340px;overflow:auto;background:var(--surface);
    border-inline-end:1px solid var(--line);padding:20px 16px 32px;z-index:14}
  body.has-outline #app{max-width:none;margin-inline-start:340px;margin-inline-end:0}
  body.has-outline .screen.lesson{max-width:760px;margin-inline:auto}
  body.has-outline .actionbar,body.has-outline .audiobar{inset-inline-start:340px}
  body.has-outline .toast{inset-inline-start:356px}
  body.has-outline .sheet-wrap{inset-inline-start:340px}
}
