  :root{
    --ink:#1C1813;--ink-soft:#4A433A;--stone:#ECE4D6;--stone-deep:#E2D8C6;--chalk:#FBF8F2;--illus:#EFE8DA;
    --bronze:#A67C42;--bronze-deep:#8A6533;--line:#D8CDB9;--line-soft:#E6DDCC;
    --d-memory:#4A5D4E;--d-hand:#9C6B3F;--d-space:#4C5A66;--d-number:#7A5C7E;--d-body:#6E7F3E;--d-sense:#A05A4A;--d-rest:#8C857A;
    --thread:#5E574C;--thread-tint:#F1EDE4;
    --shadow:0 1px 2px rgba(28,24,19,.04),0 8px 24px rgba(28,24,19,.06);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{-webkit-text-size-adjust:100%}
  body{font-family:'Hanken Grotesk',system-ui,sans-serif;background:var(--stone);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased;padding-bottom:4rem}
  .wrap{max-width:1080px;margin:0 auto;padding:0 clamp(1.1rem,4vw,2.4rem)}
  header.masthead{padding:clamp(1.8rem,5vw,3.2rem) 0 1.2rem}
  .eyebrow{font-family:'Space Mono',monospace;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:#78562B}
  :focus-visible{outline:2px solid var(--bronze);outline-offset:2px}
  button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--bronze);outline-offset:2px;border-radius:6px}
  h1.title{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(3rem,11vw,5.6rem);line-height:.92;letter-spacing:-.02em;margin:.35rem 0 .7rem}
  h1.title em{font-style:italic;font-weight:400;color:var(--bronze-deep)}
  .thesis{font-size:clamp(1.02rem,2.4vw,1.22rem);max-width:33ch;color:var(--ink-soft)}
  .childbar{display:flex;align-items:center;gap:.6rem;margin-top:1.2rem;flex-wrap:wrap}
  .childbar select{font:600 .82rem 'Hanken Grotesk',sans-serif;background:var(--chalk);border:1px solid var(--line);border-radius:99px;padding:.45rem 1rem;color:var(--ink);cursor:pointer}
  .childbar .band{font:400 .72rem 'Space Mono',monospace;letter-spacing:.06em;color:var(--ink-soft)}
  .act{font:600 .76rem 'Hanken Grotesk',sans-serif;background:var(--chalk);border:1px solid var(--line);border-radius:99px;padding:.42rem .9rem;cursor:pointer;color:var(--ink);transition:border-color .15s}
  .act:hover{border-color:var(--ink)}
  .actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
  #installBtn{display:none}#installBtn.show{display:inline-flex}
  .rule{height:1px;background:var(--line);margin:1.5rem 0}
  nav.tabs{display:flex;gap:1.5rem;margin-bottom:1.3rem;flex-wrap:wrap}
  nav.tabs button{font-family:'Space Mono',monospace;font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;background:none;border:none;cursor:pointer;color:var(--ink-soft);padding:.3rem 0 .55rem;border-bottom:2px solid transparent;transition:color .2s,border-color .2s}
  nav.tabs button[aria-selected="true"]{color:var(--ink);border-color:var(--bronze)}
  nav.tabs button:hover{color:var(--ink)}
  .banner{background:var(--chalk);border:1px dashed var(--bronze);border-radius:14px;padding:1.1rem 1.3rem;margin-bottom:1.4rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
  .banner p{color:var(--ink-soft);font-size:.95rem;flex:1;min-width:200px}
  .still{background:var(--chalk);border:1px solid var(--line);border-radius:14px;padding:1rem 1.2rem;margin-bottom:1.4rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
  .still .lbl{font:700 .64rem 'Space Mono',monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--bronze-deep)}
  .still .line{font-family:'Fraunces',serif;font-style:italic;font-size:1.1rem;color:var(--ink);flex:1;min-width:160px}
  .still .line.empty{font-style:normal;color:var(--ink-soft);font-family:'Hanken Grotesk',sans-serif;font-size:.92rem}
  .still .mini{font:600 .74rem 'Hanken Grotesk',sans-serif;background:none;border:1px solid var(--line);border-radius:99px;padding:.35rem .8rem;cursor:pointer;color:var(--ink-soft)}
  .still .mini:hover{border-color:var(--ink);color:var(--ink)}
  .breath{position:fixed;inset:0;background:rgba(28,24,19,.92);display:none;align-items:center;justify-content:center;flex-direction:column;z-index:80;color:var(--stone);text-align:center;padding:2rem}
  .breath.show{display:flex}
  .breath .orb{width:120px;height:120px;border-radius:50%;background:var(--bronze);opacity:.85;animation:breathe 8s ease-in-out infinite;display:flex;align-items:center;justify-content:center}
  .breath .orb-icon{width:42px;height:42px}
  .breath .orb-icon path{fill:var(--stone);stroke:none}
  .breath .orb-icon circle{fill:var(--stone)}
  .breath .orb-icon rect{fill:var(--stone)}
  @keyframes breathe{0%,100%{transform:scale(.6);opacity:.5}50%{transform:scale(1);opacity:.9}}
  .breath .bphase{font:700 .72rem 'Space Mono',monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--bronze);margin-top:1.1rem;min-height:1em;opacity:.9}
  .breath .bline{font-family:'Fraunces',serif;font-style:italic;font-size:1.2rem;margin-top:.6rem;max-width:30ch;min-height:1.4em}
  .breath .bcount{font-family:'Space Mono',monospace;margin-top:1rem;letter-spacing:.2em;opacity:.7}
  .breath .bdone{margin-top:1.6rem;font:600 .8rem 'Hanken Grotesk',sans-serif;background:var(--stone);color:var(--ink);border:none;border-radius:99px;padding:.5rem 1.1rem;cursor:pointer}
  .still .still-total{font:400 .74rem 'Hanken Grotesk',sans-serif;color:var(--ink-soft);opacity:.75;white-space:nowrap}
  .weekdots{display:flex;gap:.45rem;align-items:center;margin:0 0 1.1rem;font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.08em;color:var(--ink-soft)}
  .weekdots .lbl{margin-right:.4rem}
  .weekdots .wd{width:12px;height:12px;border-radius:50%;border:1px solid var(--line);background:var(--chalk)}
  .weekdots .wd.on{background:var(--bronze);border-color:var(--bronze)}
  .weekdots .wd.today{outline:2px solid var(--ink);outline-offset:2px}
  .week{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:1.8rem}
  .day-btn{background:var(--chalk);border:1px solid var(--line);border-radius:12px;padding:.85rem .5rem 1rem;cursor:pointer;text-align:left;transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden}
  .day-btn::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tone,var(--line));opacity:.85}
  .day-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
  .day-btn[aria-pressed="true"]{border-color:var(--ink);box-shadow:var(--shadow)}
  .day-name{font-family:'Space Mono',monospace;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
  .day-domain{font-family:'Fraunces',serif;font-size:clamp(.95rem,2.2vw,1.18rem);font-weight:500;margin-top:.4rem;line-height:1.05}
  .day-btn .today-pip{position:absolute;top:.65rem;right:.65rem;width:7px;height:7px;border-radius:50%;background:var(--bronze)}
  .session-head{display:flex;align-items:baseline;gap:.9rem;flex-wrap:wrap;margin-bottom:.3rem}
  .session-domain{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(1.7rem,5vw,2.5rem);line-height:1;letter-spacing:-.01em}
  .session-tag{font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--tone,var(--bronze-deep));border:1px solid var(--tone,var(--line));border-radius:99px;padding:.2rem .7rem}
  .session-why{color:var(--ink-soft);max-width:60ch;margin:.5rem 0 1.3rem}
  .reco{background:var(--chalk);border:1px solid var(--line);border-left:3px solid var(--bronze);border-radius:12px;padding:1rem 1.2rem;margin-bottom:1.4rem}
  .reco .rh{font:700 .64rem 'Space Mono',monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.5rem}
  .reco .ri{font-size:.96rem;margin-bottom:.3rem}
  .reco .ri b{font-family:'Fraunces',serif;font-weight:600}
  .reco .ri .rwhy{color:var(--ink-soft);font-size:.86rem}
  .rest{background:var(--chalk);border:1px solid var(--line);border-radius:16px;padding:clamp(2rem,6vw,3.4rem);text-align:center;box-shadow:var(--shadow)}
  .rest h3{font-family:'Fraunces',serif;font-weight:400;font-style:italic;font-size:clamp(1.6rem,5vw,2.4rem);color:var(--d-rest)}
  .rest p{color:var(--ink-soft);max-width:44ch;margin:1rem auto 0}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.1rem}
  .card{background:var(--chalk);border:1px solid var(--line);border-radius:16px;padding:1.4rem 1.4rem 1.5rem;box-shadow:var(--shadow);border-top:3px solid var(--tone,var(--bronze));display:flex;flex-direction:column;transition:transform .22s ease,box-shadow .22s ease}
  .card:active{transform:scale(.985)}
  .illus svg{transition:transform .3s ease}
  @media (hover:hover) and (pointer:fine){
    .card:hover{transform:translateY(-3px) rotate(-.35deg);box-shadow:0 16px 30px rgba(28,24,19,.14)}
    .illus:hover svg{transform:scale(1.035)}
  }
  @media (prefers-reduced-motion: reduce){
    .card,.card:active,.illus svg{transition:none}
    .card:hover,.illus:hover svg{transform:none;box-shadow:var(--shadow)}
  }
  /* The child's own screen stays completely still, whatever the parent's
     side of the app does. */
  #view-child *{transition:none!important;animation:none!important}
  .card .k-row{display:flex;justify-content:space-between;align-items:center}
  .card .k-domain{font-family:'Space Mono',monospace;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--tone,var(--bronze-deep))}
  .card .tog{font:700 .58rem 'Space Mono',monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--bronze-deep);border:1px solid var(--line);border-radius:99px;padding:.1rem .5rem}
  .card h3{font-family:'Fraunces',serif;font-weight:500;font-size:1.42rem;line-height:1.08;margin:.35rem 0 .5rem;letter-spacing:-.01em}
  .card .builds{color:var(--ink-soft);font-size:.96rem;margin-bottom:1rem}
  .illus{background:var(--ill-tint,var(--illus));border:1px solid var(--line-soft);border-radius:10px;padding:6px 10px;margin-bottom:1rem}
  .il{width:100%;height:auto;display:block}
  .il line,.il path,.il polygon,.il rect,.il circle,.il polyline{stroke:var(--ink);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .il-t{font-family:'Space Mono',monospace;font-size:13px;fill:var(--ink);stroke:none}
  .il-n{font-family:'Fraunces',serif;font-size:22px;fill:var(--ink);stroke:none}
  .meta-label{font-family:'Space Mono',monospace;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--bronze-deep);margin:.95rem 0 .4rem}
  .materials{font-family:'Space Mono',monospace;font-size:.82rem;color:var(--ink-soft);line-height:1.7}
  .steps{list-style:none;counter-reset:s}
  .steps li{position:relative;padding-left:1.7rem;margin-bottom:.35rem;font-size:.95rem}
  .steps li::before{counter-increment:s;content:counter(s);position:absolute;left:0;top:.05rem;font-family:'Space Mono',monospace;font-size:.72rem;color:var(--bronze-deep);border:1px solid var(--line);border-radius:50%;width:1.15rem;height:1.15rem;display:grid;place-items:center}
  .work-do{font-size:.96rem}
  .tiers{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem;margin-top:1rem}
  .tier-box{background:var(--stone);border:2px solid transparent;border-radius:10px;padding:.6rem .7rem;font:inherit;text-align:left;width:100%;cursor:pointer;transition:border-color .15s,background .15s}
  .tier-box:hover{border-color:var(--line)}
  .tier-box:focus-visible{outline:2px solid var(--bronze);outline-offset:2px}
  .tier-box.hl{background:var(--chalk);border-color:var(--line)}
  .tier-box.selected{border-color:var(--bronze)}
  .tier-box .t-name{font-family:'Space Mono',monospace;font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
  .tier-box.selected .t-name{color:var(--bronze-deep)}
  .tier-box .t-sel{color:var(--bronze-deep);font-weight:700}
  .tier-box .t-body{font-size:.83rem;margin-top:.2rem}
  .tier-note{font-size:.72rem;color:var(--ink-soft);margin-top:.4rem}
  .card.just-confirmed{animation:cardConfirm .5s ease-out}
  @keyframes cardConfirm{0%{box-shadow:0 0 0 0 rgba(166,124,66,.35)}100%{box-shadow:0 0 0 0 rgba(166,124,66,0)}}
  @media (prefers-reduced-motion: reduce){.card.just-confirmed{animation:none}}
  .harder{margin-top:1rem;padding-top:.9rem;border-top:1px dashed var(--line);font-size:.9rem;color:var(--ink-soft)}
  .harder b{color:var(--ink);font-weight:600}
  .tellback{margin-top:.6rem;font-size:.88rem;color:var(--ink-soft)}
  .tellback b{color:var(--ink);font-weight:600}
  .track{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line)}
  .btn-done{font:600 .8rem 'Hanken Grotesk',sans-serif;background:var(--ink);color:var(--stone);border:none;border-radius:99px;padding:.42rem .95rem;cursor:pointer;transition:background .15s}
  .btn-done.done{background:var(--d-body)}
  .pron-pick[aria-pressed="true"]{background:var(--bronze);color:#fff;border-color:var(--bronze)}
  .last{font:400 .76rem 'Space Mono',monospace;color:var(--ink-soft);margin-left:auto}
  .controls{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1.2rem}
  .filter{font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;background:var(--chalk);border:1px solid var(--line);border-radius:99px;padding:.42rem .9rem;cursor:pointer;color:var(--ink-soft);transition:all .15s}
  .filter[aria-pressed="true"]{background:var(--ink);color:var(--stone);border-color:var(--ink)}
  .search{margin-left:auto;flex:1;min-width:180px;max-width:260px;font-family:'Hanken Grotesk',sans-serif;font-size:.92rem;background:var(--chalk);border:1px solid var(--line);border-radius:99px;padding:.5rem 1rem;color:var(--ink)}
  .search:focus{outline:2px solid var(--bronze);outline-offset:1px}
  .count-note{font-family:'Space Mono',monospace;font-size:.72rem;color:var(--ink-soft);margin-bottom:1rem;letter-spacing:.06em}
  .mem-add{background:var(--chalk);border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;margin-bottom:1.4rem}
  .mem-add textarea{width:100%;font-family:'Hanken Grotesk',sans-serif;font-size:.95rem;border:1px solid var(--line);border-radius:10px;padding:.7rem;resize:vertical;min-height:64px;background:var(--stone);color:var(--ink)}
  .mem-add textarea:focus{outline:2px solid var(--bronze);outline-offset:1px}
  .mem-add .row{display:flex;gap:.6rem;margin-top:.7rem;align-items:center;flex-wrap:wrap}
  .mem-add .thumb{width:46px;height:46px;border-radius:8px;object-fit:cover;border:1px solid var(--line)}
  .mem-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}
  .mem{background:var(--chalk);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
  .mem img{width:100%;height:170px;object-fit:cover;display:block;background:var(--illus)}
  .mem .body{padding:.9rem 1rem 1rem}
  .mem .date{font:400 .68rem 'Space Mono',monospace;letter-spacing:.1em;color:var(--bronze-deep);text-transform:uppercase}
  .mem .text{font-size:.95rem;margin-top:.35rem}
  .mem .del{align-self:flex-start;margin:.2rem 0 .8rem 1rem;font:400 .72rem 'Space Mono',monospace;color:var(--ink-soft);background:none;border:none;cursor:pointer;text-decoration:underline}
  .kid{background:var(--chalk);border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;margin-bottom:.9rem}
  .kid h4{font-family:'Fraunces',serif;font-weight:500;font-size:1.3rem}
  .kid .meta{font:400 .78rem 'Space Mono',monospace;color:var(--ink-soft);margin:.2rem 0 .5rem}
  .kid .note{font-size:.92rem;color:var(--ink-soft)}
  .kid .krow{display:flex;gap:.5rem;margin-top:.8rem;flex-wrap:wrap;align-items:center}
  .field{display:block;margin-bottom:.7rem}
  .field label{display:block;font:700 .62rem 'Space Mono',monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.3rem}
  .field input,.field select{width:100%;max-width:360px;font-family:'Hanken Grotesk',sans-serif;font-size:.95rem;border:1px solid var(--line);border-radius:10px;padding:.55rem .75rem;background:var(--stone);color:var(--ink)}
  .field input:focus,.field select:focus{outline:2px solid var(--bronze);outline-offset:1px}
  .btn-primary{font:600 .82rem 'Hanken Grotesk',sans-serif;background:var(--ink);color:var(--stone);border:none;border-radius:99px;padding:.5rem 1.1rem;cursor:pointer}
  .btn-ghost{font:600 .82rem 'Hanken Grotesk',sans-serif;background:none;border:1px solid var(--line);border-radius:99px;padding:.5rem 1.1rem;cursor:pointer;color:var(--ink)}
  .toast{position:fixed;bottom:1.3rem;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--stone);padding:.55rem 1rem;border-radius:99px;font:600 .82rem 'Hanken Grotesk',sans-serif;opacity:0;transition:opacity .2s;pointer-events:none;z-index:90}
  .toast.show{opacity:1}
  footer{margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--line)}
  footer p{font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.08em;color:var(--ink-soft)}
  .mastery{margin-top:1rem;padding-top:.9rem;border-top:1px dashed var(--line)}
  .m-lbl{font-family:'Space Mono',monospace;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.55rem}
  .due-flag{color:var(--d-sense);font-weight:700}
  .steps4{display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem;position:relative}
  .steps4::before{content:"";position:absolute;top:9px;left:14%;right:14%;height:2px;background:var(--line)}
  .mstep{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:.4rem;background:none;border:none;cursor:pointer;padding:.2rem 0}
  .mstep .dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--line);background:var(--chalk);transition:background .15s,border-color .15s,box-shadow .15s}
  .mstep.cur .dot{background:var(--bronze);border-color:var(--bronze);box-shadow:0 0 0 3px rgba(166,124,66,.18)}
  .mstep:hover .dot{border-color:var(--ink)}
  .mstep .mtxt{font-family:'Space Mono',monospace;font-size:.64rem;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft);text-align:center;line-height:1.2}
  .mstep.cur .mtxt{color:var(--ink);font-weight:700}
  .ret-inline{margin-top:.85rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;font-size:.86rem;color:var(--ink-soft)}
  .ret-inline span{flex:1;min-width:150px}
  .ret-held,.ret-drop{font:600 .76rem 'Hanken Grotesk',sans-serif;border-radius:99px;padding:.35rem .85rem;cursor:pointer;border:1px solid var(--line);background:var(--chalk);color:var(--ink)}
  .ret-held{background:var(--d-body);color:#fff;border-color:var(--d-body)}
  .ret-drop{color:var(--d-sense);border-color:var(--d-sense)}
  .returns{background:var(--chalk);border:1px solid var(--line);border-left:3px solid var(--d-sense);border-radius:14px;padding:1.1rem 1.3rem;margin-bottom:1.4rem}
  .returns .rh{font:700 .64rem 'Space Mono',monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--d-sense);margin-bottom:.4rem}
  .returns .ret-note{color:var(--ink-soft);font-size:.9rem;margin-bottom:.7rem;max-width:54ch}
  .ret-item{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;padding:.6rem 0;border-top:1px solid var(--line-soft)}
  .ret-item:first-of-type{border-top:none}
  .ret-main{font-size:.95rem}
  .ret-main .ret-dom{font-family:'Space Mono',monospace;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tone,var(--bronze-deep))}
  .ret-main b{font-family:'Fraunces',serif;font-weight:600}
  .ret-main .ret-state{font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);border-radius:99px;padding:.05rem .5rem;margin-left:.3rem}
  .ret-acts{display:flex;gap:.4rem}
  .ret-more{margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--line-soft);font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.04em;color:var(--ink-soft)}
  /* Threads: told apart from the six domains by treatment, not by a new hue. */
  .thread-card{border-top:1px dashed var(--thread);background:var(--chalk)}
  .thread-card .k-domain{color:var(--thread)}
  .thread-card .tog{color:var(--thread)}
  .illus-thread{background:var(--thread-tint)}
  .il-thread line,.il-thread path,.il-thread polygon,.il-thread rect,.il-thread circle,.il-thread polyline,.il-thread ellipse{stroke:var(--thread);stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .thread-suggest{margin-top:1.6rem;padding-top:1.2rem;border-top:1px dashed var(--line)}
  .ts-head{font-family:'Space Mono',monospace;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--thread);margin-bottom:.9rem}
  .filter-sep{display:inline-block;width:1px;align-self:stretch;background:var(--line);margin:0 .2rem}
  .filter-thread{border-style:dashed}
  .filter-thread[aria-pressed="true"]{background:var(--thread);color:var(--chalk);border-color:var(--thread)}
  .filter-ready[aria-pressed="true"]{background:var(--d-body);color:#fff;border-color:var(--d-body)}
  /* Kit chips */
  .k-tags{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
  .kit-chip{font:700 .56rem 'Space Mono',monospace;letter-spacing:.08em;text-transform:uppercase;border-radius:99px;padding:.12rem .5rem;border:1px solid var(--line);background:none;cursor:pointer}
  .kit-chip:focus-visible{outline:2px solid var(--bronze);outline-offset:2px}
  .kit-basic{color:#5C6A33;border-color:#5C6A33}
  .kit-plus{color:var(--bronze-deep);border-color:var(--line)}
  .kit-else{color:var(--d-sense);border-color:var(--line)}
  .kit-wrap{position:relative;display:inline-block}
  .kit-detail{display:none;position:absolute;right:0;top:100%;margin-top:.35rem;z-index:6;width:210px;max-width:60vw;background:var(--chalk);border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;font-size:.76rem;line-height:1.35;color:var(--ink-soft);box-shadow:var(--shadow);text-align:left}
  .kit-detail-h{font:700 .58rem 'Space Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:.15rem}
  .kit-wrap.open .kit-detail{display:block}
  @media (hover:hover) and (pointer:fine){.kit-wrap:hover .kit-detail{display:block}}
  /* Basic Set page */
  .basic-actions{margin-bottom:1.2rem}
  .basic-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:1.6rem}
  .basic-item{background:var(--chalk);border:1px solid var(--line);border-radius:14px;padding:1rem 1.1rem}
  .bi-name{font-family:'Fraunces',serif;font-weight:500;font-size:1.1rem;margin-bottom:.35rem}
  .bi-why{color:var(--ink-soft);font-size:.9rem;margin-bottom:.6rem}
  .bi-sub{font-family:'Space Mono',monospace;font-size:.72rem;color:var(--ink-soft)}
  .bi-sub span{color:var(--bronze-deep);letter-spacing:.08em;text-transform:uppercase;margin-right:.3rem}
  /* Child's view */
  .child-head{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(1.8rem,5vw,2.6rem);letter-spacing:-.01em;margin:.4rem 0 1.4rem}
  .child-empty{color:var(--ink-soft);font-size:1.05rem;max-width:34ch}
  .child-grid{display:flex;flex-wrap:wrap;gap:1.1rem;align-items:flex-end}
  .ct-tile{position:relative;margin:0;background:var(--chalk);border:1px solid var(--line);border-top:3px solid var(--tone,var(--bronze));border-radius:16px;padding:1rem 1rem .6rem;width:calc(150px + 150px * (var(--ct-scale) - 0.5));box-shadow:var(--shadow)}
  .ct-thread{border-top:1px dashed var(--thread)}
  .ct-illus{background:var(--ill-tint,var(--illus));border:1px solid var(--line-soft);border-radius:10px;padding:8px 10px;margin-bottom:.6rem}
  .ct-tile figcaption{font-family:'Fraunces',serif;font-weight:500;font-size:1.05rem;line-height:1.1}
  .ct-keep{position:absolute;top:.6rem;right:.6rem;font:600 .6rem 'Space Mono',monospace;letter-spacing:.08em;text-transform:uppercase;background:var(--chalk);border:1px solid var(--line);border-radius:99px;padding:.15rem .5rem;cursor:pointer;color:var(--ink-soft);opacity:0;transition:opacity .2s}
  .ct-tile:hover .ct-keep,.ct-tile:focus-within .ct-keep{opacity:1}
  @keyframes settle{0%{opacity:0;transform:scale(.92)}60%{transform:scale(1.03)}100%{opacity:1;transform:none}}
  .ct-new{animation:settle 1.2s ease both}
  /* Keepsake card, print only */
  #keepsake{display:none}
  @media print{body.printing-keepsake>.wrap,body.printing-keepsake>.toast,body.printing-keepsake>.breath{display:none !important}
    body.printing-keepsake #keepsake{display:flex !important;align-items:center;justify-content:center;min-height:90vh}
    .ks-card{border:2px solid var(--ink);border-radius:18px;padding:2.5rem;text-align:center;max-width:420px;width:100%}
    .ks-eyebrow{font-family:'Space Mono',monospace;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--bronze-deep)}
    .ks-illus{margin:1.4rem 0}
    .ks-name{font-family:'Fraunces',serif;font-weight:500;font-size:2rem;margin-bottom:.6rem}
    .ks-line{font-family:'Fraunces',serif;font-style:italic;color:var(--ink-soft);font-size:1.1rem}
    .ks-date{font-family:'Space Mono',monospace;font-size:.8rem;letter-spacing:.1em;margin-top:.4rem}}
  /* The record */
  .rec-week{background:var(--chalk);border:1px solid var(--line);border-radius:16px;padding:1.3rem 1.4rem;margin-bottom:1.4rem;box-shadow:var(--shadow)}
  .rw-head{display:flex;align-items:center;gap:.8rem;margin-bottom:.4rem}
  .rw-title{font-family:'Fraunces',serif;font-weight:500;font-size:1.4rem}
  .mini[disabled]{opacity:.35;cursor:default}
  .rw-line{font-size:.95rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line-soft)}
  .rw-lbl{font-family:'Space Mono',monospace;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze-deep);display:block;margin-bottom:.25rem}
  .rw-state{font-family:'Space Mono',monospace;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);border-radius:99px;padding:.02rem .4rem}
  .rw-dim{color:var(--ink-soft);font-size:.82rem}
  .rw-note{margin-top:1rem}
  .rw-note label{display:block;font-size:.9rem;color:var(--ink-soft);margin-bottom:.4rem}
  .rw-note textarea{width:100%;font-family:'Hanken Grotesk',sans-serif;font-size:.95rem;border:1px solid var(--line);border-radius:10px;padding:.7rem;resize:vertical;min-height:60px;background:var(--stone);color:var(--ink);margin-bottom:.6rem}
  .rw-note textarea:focus{outline:2px solid var(--bronze);outline-offset:1px}
  .rec-quarter{background:var(--chalk);border:1px solid var(--line);border-left:3px solid var(--d-rest);border-radius:14px;padding:1.2rem 1.4rem}
  .rq-head{font-family:'Fraunces',serif;font-weight:500;font-size:1.4rem;margin-bottom:.3rem}
  .rq-intro{color:var(--ink-soft);font-size:.92rem;max-width:56ch;margin-bottom:1rem}
  .q-block{margin-bottom:1rem}
  .q-block h4{font-family:'Space Mono',monospace;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.4rem}
  .q-list{list-style:none}
  .q-list li{font-size:.95rem;padding:.2rem 0}
  .q-dom{font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--tone,var(--bronze-deep));border:1px solid var(--tone,var(--line));border-radius:99px;padding:.02rem .45rem;margin-right:.2rem}
  .q-none{color:var(--ink-soft);font-size:.9rem}
  .mem-link{font:600 .8rem 'Hanken Grotesk',sans-serif;background:var(--stone);border:1px solid var(--line);border-radius:99px;padding:.4rem .8rem;color:var(--ink);max-width:200px}
  .mem-linked{font-family:'Space Mono',monospace;font-size:.62rem;letter-spacing:.06em;color:var(--bronze-deep);margin:.4rem 1rem 0;padding-top:.4rem;border-top:1px dashed var(--line)}
  #record-print{display:none}
  @media print{body.printing-record>.wrap,body.printing-record>.toast,body.printing-record>.breath,body.printing-record>#keepsake{display:none !important}
    body.printing-record #record-print{display:block !important}
    .rp{max-width:720px;margin:0 auto;color:#1C1813}
    .rp-top h2{font-family:'Fraunces',serif;font-weight:500;font-size:2rem;margin:.2rem 0}
    .rp-period{font-family:'Space Mono',monospace;font-size:.8rem;letter-spacing:.08em}
    .rp-note{font-size:.88rem;color:#4A433A;margin:1rem 0 1.4rem;max-width:60ch}
    .rp h3{font-family:'Fraunces',serif;font-weight:500;font-size:1.3rem;margin:1.4rem 0 .6rem;border-bottom:1px solid #ccc;padding-bottom:.2rem}
    .rp-tbl{width:100%;border-collapse:collapse;font-size:.86rem}
    .rp-tbl th{text-align:left;font-family:'Space Mono',monospace;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#4A433A;border-bottom:1px solid #ccc;padding:.3rem .4rem}
    .rp-tbl td{padding:.3rem .4rem;border-bottom:1px solid #eee}
    .rp-tot td{font-weight:700;border-top:1px solid #ccc}
    .rp-ev{margin-bottom:.8rem;break-inside:avoid}
    .rp-ev-h{font-family:'Space Mono',monospace;font-size:.66rem;letter-spacing:.06em;color:#8A6533;margin-bottom:.2rem}}
  /* Evidence line on a work */
  .evidence{margin-top:1rem;padding:.8rem .9rem;background:var(--illus);border-radius:10px;font-size:.88rem;color:var(--ink-soft)}
  .ev-lbl{display:block;font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.25rem}
  .evidence.reason{background:none;border:1px dashed var(--line)}
  .evidence.reason .ev-lbl{color:var(--ink-soft)}
  /* Parent tab */
  .parent-list{display:grid;gap:1.1rem}
  .parent-piece{background:var(--chalk);border:1px solid var(--line);border-top:3px solid var(--tone,var(--bronze));border-radius:16px;padding:1.3rem 1.4rem;box-shadow:var(--shadow)}
  .pp-thread{border-top:1px dashed var(--thread)}
  .pp-head{margin-bottom:.6rem}
  .pp-dom{font-family:'Fraunces',serif;font-weight:500;font-size:1.5rem;letter-spacing:-.01em}
  .pp-block{margin-top:.8rem}
  .pp-block h4{font-family:'Space Mono',monospace;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.25rem}
  .pp-block p{font-size:.95rem;color:var(--ink);max-width:64ch}
  /* Onboarding */
  .onboard-overlay{position:fixed;inset:0;background:var(--stone);display:flex;align-items:center;justify-content:center;padding:1.2rem;z-index:120;overflow-y:auto}
  .ob-card{background:var(--chalk);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:2rem 1.8rem 1.6rem;max-width:460px;width:100%;max-height:92vh;overflow-y:auto}
  .ob-eyebrow{font-family:'Space Mono',monospace;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--bronze-deep)}
  .ob-title{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(1.8rem,6vw,2.4rem);line-height:1;margin:.4rem 0 .9rem;letter-spacing:-.01em}
  .ob-body p{color:var(--ink-soft);font-size:1rem;margin-bottom:.6rem}
  .ob-actions{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-top:1.4rem;flex-wrap:wrap}
  .ob-nav{display:flex;gap:.5rem}
  .modal-overlay{position:fixed;inset:0;background:rgba(28,24,19,.5);display:flex;align-items:center;justify-content:center;padding:1.2rem;z-index:100;opacity:0;transition:opacity .16s}
  .modal-overlay.show{opacity:1}
  .modal{background:var(--chalk);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:1.5rem 1.5rem 1.3rem;max-width:420px;width:100%;max-height:90vh;overflow-y:auto}
  .modal-title{font-family:'Fraunces',serif;font-weight:500;font-size:1.5rem;letter-spacing:-.01em;margin-bottom:.5rem}
  .modal-body{color:var(--ink-soft);font-size:.95rem;margin-bottom:1rem}
  .modal-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.2rem;flex-wrap:wrap}
  .btn-ghost.danger{color:var(--d-sense);border-color:var(--d-sense)}
  .set-note{background:var(--chalk);border:1px solid var(--line);border-left:3px solid var(--bronze);border-radius:12px;padding:1.1rem 1.3rem;margin-bottom:1.4rem}
  .set-note p{color:var(--ink-soft);font-size:.95rem}
  .set-note b{color:var(--ink)}
  .set-block{background:var(--chalk);border:1px solid var(--line);border-radius:14px;padding:1.2rem 1.3rem;margin-bottom:1rem}
  .set-block h3{font-family:'Fraunces',serif;font-weight:500;font-size:1.3rem;margin-bottom:.3rem}
  .set-block p{color:var(--ink-soft);font-size:.92rem;margin-bottom:.9rem;max-width:52ch}
  .set-version{font-family:'Space Mono',monospace;font-size:.9rem;color:var(--ink)}
  .changelog{margin-top:.4rem}
  .cl-head{font-family:'Space Mono',monospace;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--bronze-deep);margin-bottom:.4rem}
  .changelog ul{list-style:none;margin-bottom:.6rem}
  .changelog li{font-size:.9rem;color:var(--ink-soft);padding:.15rem 0 .15rem 1rem;position:relative}
  .changelog li::before{content:"\00B7";position:absolute;left:.2rem;color:var(--bronze-deep)}
  .hidden{display:none !important}
  @media (max-width:620px){.week{grid-template-columns:repeat(4,1fr)}.tiers{grid-template-columns:1fr}nav.tabs{gap:1rem}}
  @media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}
  @keyframes riseIn{from{opacity:0}to{opacity:1}}
  @keyframes riseSlide{from{transform:translateY(8px)}to{transform:translateY(0)}}
  /* Two animations, not one: riseIn holds its end state (both) so
     nothing flashes at full opacity before it plays, but riseSlide
     does not hold forwards, so once the entrance finishes it lets go
     of transform entirely. An animation with fill-forwards otherwise
     pins the property at higher priority than any ordinary rule,
     which would silently block the hover tilt below forever. */
  .rise{animation:riseIn .32s ease both,riseSlide .32s ease}
  .gw-notice{display:flex;align-items:center;gap:.4rem .9rem;flex-wrap:wrap;background:var(--chalk);border:1px solid var(--line);border-radius:12px;padding:.55rem .6rem .55rem 1rem;margin:-.3rem 0 1.5rem}
  .gw-notice p{flex:1 1 18rem;color:var(--ink-soft);font-size:.88rem}
  .gw-notice .nb{display:flex;gap:.3rem;margin-left:auto}
  .gw-notice .btn-ghost{padding:.38rem .9rem;font-size:.76rem}
  .gw-notice .quiet{font:600 .76rem 'Hanken Grotesk',sans-serif;background:none;border:none;color:var(--ink-soft);cursor:pointer;padding:.38rem .6rem;border-radius:99px}
  .gw-notice .quiet:hover{color:var(--ink)}
  .set-block .set-last{color:var(--ink);font-size:.9rem;margin-bottom:.8rem}
  .set-block .set-hint{font-size:.84rem;margin-top:-.3rem}
  .set-block .field{margin-bottom:.6rem}
  .set-block .keep-steps{margin:0 0 .9rem 1.1rem;color:var(--ink-soft);font-size:.92rem;max-width:52ch}
  .set-block .keep-steps li{margin-bottom:.35rem}
  .import-list{list-style:none;margin:.7rem 0;padding:0}
  .import-list li{padding:.4rem 0;border-top:1px solid var(--line-soft)}
  .import-list li:last-child{border-bottom:1px solid var(--line-soft)}
  .import-list b{color:var(--ink);font-weight:600}
  .import-list span{display:block;font-size:.85rem}
  a.btn-primary,a.btn-ghost{display:inline-block;text-decoration:none}
  @media print{.gw-notice{display:none}}
  @media print{body{background:#fff}.week,nav.tabs,.controls,.actions,.track,.mastery,.returns,.weekdots,.childbar,.still,.reco{display:none}.card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}
