/*
 * Author: Frandy Slueue | Alias: CodeBreeder | Title: Software Engineering · DevOps Security · IT Ops
 * Portfolio: https://frandycode.dev | GitHub: https://github.com/frandycode
 * Email: frandyslueue@gmail.com | Location: Tulsa, OK & Dallas, TX (Central Time)
 * Project: Study Desk — Styles: index-card design tokens, light and dark themes, tablet layout
 */
/* Layout: sticky desk header over a cool desk surface; one column of ruled index cards, max 780px */
:root{
 --desk:#e7eef6;--desk-2:#d8e3ef;--paper:#ffffff;--rule:#dce8f7;--margin:#f2958b;
 --ink:#1c2540;--ink-2:#566079;--line:#c4d0df;
 --pencil:#ffcb3d;--pencil-deep:#cf9300;--on-pencil:#2b2100;
 --go:#16905c;--on-go:#ffffff;--miss:#d8473b;--on-miss:#ffffff;--focus:#2f6fe0;
 --spelling:#f2731f;--math:#2f6fe0;--words:#7f4fe4;--teal:#0f8fa6;--pink:#c2418d;--science:#0e8f8a;--biology:#3f8f2a;--history:#a5622a;
 --shadow:0 1px 0 rgba(28,37,64,.05),0 10px 24px -14px rgba(28,37,64,.45);
 --f-display:"Baloo 2",ui-rounded,"Trebuchet MS",system-ui,sans-serif;
 --f-body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;
 --f-letter:"Andika","Atkinson Hyperlegible",system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
 --desk:#121928;--desk-2:#1a2337;--paper:#1e283e;--rule:#273652;--margin:#9c5148;
 --ink:#eef2fb;--ink-2:#a6b1cb;--line:#34435f;
 --pencil:#ffcb3d;--pencil-deep:#a87700;--on-pencil:#2b2100;
 --go:#3cc488;--on-go:#05261a;--miss:#ff6f63;--on-miss:#2e0703;--focus:#86acff;
 --spelling:#ff9b57;--math:#78a3ff;--words:#ab8cff;--teal:#3cc3da;--pink:#ff7cc4;--science:#3fd0c8;--biology:#7fcc5c;--history:#e09a5c;
 --shadow:0 1px 0 rgba(0,0,0,.2),0 12px 26px -14px rgba(0,0,0,.8);color-scheme:dark}}
:root[data-theme="dark"]{
 --desk:#121928;--desk-2:#1a2337;--paper:#1e283e;--rule:#273652;--margin:#9c5148;
 --ink:#eef2fb;--ink-2:#a6b1cb;--line:#34435f;
 --pencil:#ffcb3d;--pencil-deep:#a87700;--on-pencil:#2b2100;
 --go:#3cc488;--on-go:#05261a;--miss:#ff6f63;--on-miss:#2e0703;--focus:#86acff;
 --spelling:#ff9b57;--math:#78a3ff;--words:#ab8cff;--teal:#3cc3da;--pink:#ff7cc4;--science:#3fd0c8;--biology:#7fcc5c;--history:#e09a5c;
 --shadow:0 1px 0 rgba(0,0,0,.2),0 12px 26px -14px rgba(0,0,0,.8);color-scheme:dark}

:root{color-scheme:light;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}
html{background:var(--desk);-webkit-text-size-adjust:100%}
*{box-sizing:border-box}
body{background:var(--desk);color:var(--ink);font:400 17px/1.5 var(--f-body);-webkit-font-smoothing:antialiased;
 padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 40px;min-height:100vh}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--desk)}
h1,h2,h3{font-family:var(--f-display);font-weight:800;line-height:1.1;margin:0;text-wrap:balance}
p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:10px}
.wrap{max-width:780px;margin:0 auto}
.icon{width:1.2em;height:1.2em;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:9;background:var(--desk);margin:0 calc(-1*max(16px,env(safe-area-inset-left,0px)));padding:10px max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--desk-2)}
.top .wrap{display:flex;align-items:center;gap:10px}
.brand{display:flex;align-items:center;gap:8px;background:none;border:0;padding:0;cursor:pointer;margin-right:auto}
.brand b{font-family:var(--f-display);font-weight:800;font-size:1.35rem;letter-spacing:.2px}
.logo{width:34px;height:34px}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 11px;background:var(--paper);border:1.5px solid var(--line);font-weight:700;font-variant-numeric:tabular-nums;font-size:.95rem;white-space:nowrap}
button.pill{cursor:pointer}
.pill.star .icon{color:var(--pencil-deep);fill:var(--pencil);stroke:var(--pencil-deep)}
.pill.fire .icon{color:var(--spelling)}
.av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:800 .8rem var(--f-display);color:#fff;flex:none}
.iconbtn{border:0;background:none;padding:6px;border-radius:10px;cursor:pointer;color:var(--ink-2);display:grid;place-items:center}
.iconbtn .icon{width:24px;height:24px}
@media (max-width:520px){.brand b{display:none}.pill .lbl{display:none}.top .wrap{gap:6px}.pill{padding:4px 9px}}

/* keys (buttons) */
.key{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:8px 18px;border-radius:14px;cursor:pointer;
 background:var(--paper);border:2px solid var(--line);border-bottom-width:5px;font-family:var(--f-display);font-weight:700;font-size:1.05rem;line-height:1.1;transition:transform .06s;text-align:center}
.key:active{transform:translateY(3px);border-bottom-width:2px;margin-bottom:3px}
.key.pencil{background:var(--pencil);border-color:var(--pencil-deep);color:var(--on-pencil)}
.key.go{background:var(--go);border-color:color-mix(in srgb,var(--go) 65%,#000);color:var(--on-go)}
.key.miss{background:var(--miss);border-color:color-mix(in srgb,var(--miss) 65%,#000);color:var(--on-miss)}
.key.small{min-height:38px;padding:4px 12px;font-size:.95rem;border-bottom-width:4px}
.key.big{min-height:58px;font-size:1.25rem;padding:10px 26px}
.key[disabled]{opacity:.45;pointer-events:none}
.link{background:none;border:0;padding:4px 2px;color:var(--ink-2);font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.center{justify-content:center}
.between{justify-content:space-between}
.muted{color:var(--ink-2)}
.tiny{font-size:.85rem}
.label{font:700 .78rem var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2)}

/* paper: index card surface */
.paper{background:var(--paper);border-radius:14px;box-shadow:var(--shadow);position:relative;
 background-image:repeating-linear-gradient(to bottom,transparent 0 33px,var(--rule) 33px 34px)}
.paper.plain{background-image:none}
.paper.topline::before{content:"";position:absolute;left:0;right:0;top:46px;height:2px;background:var(--margin);opacity:.8}
section.view{padding-top:18px;display:grid;gap:18px}
.panel{padding:18px}
.stack{display:grid;gap:12px}

/* home */
.hello{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.hello h1{font-size:clamp(1.9rem,6vw,2.6rem)}
.addbig{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:16px 18px;border-radius:18px;cursor:pointer;background:var(--pencil);color:var(--on-pencil);border:2px solid var(--pencil-deep);border-bottom-width:6px}
.addbig:active{transform:translateY(3px);border-bottom-width:3px}
.addbig .plus{width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.55);display:grid;place-items:center;flex:none}
.addbig .plus .icon{width:30px;height:30px}
.addbig b{font:800 1.35rem var(--f-display);display:block}
.addbig span{font-weight:700;opacity:.9}
.today{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:18px;background:var(--paper);box-shadow:var(--shadow);border:2.5px solid var(--go);flex-wrap:wrap}
.today .ring{width:56px;height:56px;flex:none}
.today b{font:800 1.25rem var(--f-display);display:block}
.today .grow{flex:1;min-width:12em}
.today.done{border-color:var(--line)}
.decks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.deck{border:0;font:inherit;color:inherit;text-align:left;width:100%;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px;min-height:150px;border-radius:14px;box-sizing:border-box;transition:transform .15s}
.deck:hover{transform:translateY(-3px) rotate(-.4deg)}
.deck:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.tagrow{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{align-self:flex-start;font:700 .75rem var(--f-body);letter-spacing:.08em;text-transform:uppercase;padding:2px 9px;border-radius:6px;color:#fff}
.t-spelling{background:var(--spelling)}.t-math{background:var(--math)}.t-words{background:var(--words)}.t-science{background:var(--science)}.t-biology{background:var(--biology)}.t-history{background:var(--history)}
.tchip{font:700 .78rem var(--f-body);padding:1px 9px;border-radius:6px;border:1.5px solid var(--line);color:var(--ink)}
.tchip.soon{background:var(--miss);border-color:var(--miss);color:var(--on-miss)}
.deck .dt{font:800 1.3rem/1.15 var(--f-display);margin-top:14px}
.deck .dm{color:var(--ink-2);font-size:.92rem;margin-top:auto}
.mast{display:flex;height:9px;border-radius:9px;overflow:hidden;background:var(--desk-2)}
.mast i{display:block;height:100%}
.mast .k{background:var(--go)}.mast .l{background:var(--pencil)}
.ex{font-size:.75rem;font-weight:700;color:var(--ink-2);border:1.5px dashed var(--line);border-radius:6px;padding:0 6px;margin-left:6px}
.empty{padding:28px;text-align:center}

/* deck view */
.dhead{display:grid;gap:10px}
.dhead h1{font-size:clamp(1.8rem,6vw,2.5rem)}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.9rem;color:var(--ink-2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:0}
.seg{display:inline-flex;background:var(--desk-2);border-radius:12px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;padding:6px 13px;border-radius:9px;font-weight:700;cursor:pointer;color:var(--ink-2)}
.seg button[aria-pressed="true"]{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.toggle{display:inline-flex;align-items:center;gap:8px;font-weight:700;cursor:pointer}
.toggle input{width:20px;height:20px;accent-color:var(--go)}
.testplan{display:grid;gap:6px;padding:12px 14px;border-radius:12px;background:var(--desk-2)}
.testplan b{font-family:var(--f-display);font-size:1.1rem}
.modes{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:14px}
.mode{border:2px solid transparent;font:inherit;color:inherit;text-align:left;box-sizing:border-box;cursor:pointer;background:var(--paper);border-radius:16px;box-shadow:var(--shadow);padding:16px;display:grid;gap:6px;align-content:start;transition:transform .12s,border-color .12s}
.mode:hover{transform:translateY(-2px);border-color:var(--line)}
.mode .mi{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;color:#fff}
.mode .mi .icon{width:26px;height:26px}
.mode b{font:800 1.15rem var(--f-display)}
.mode span{color:var(--ink-2);font-size:.92rem;line-height:1.35}
.mode em{font-style:normal;font-size:.8rem;font-weight:700;color:var(--go)}
.cardlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 16px;padding:14px 18px;margin:0;list-style:none}
.cardlist li{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--rule);padding:4px 0;min-width:0}
.cardlist li span{overflow-wrap:anywhere}
.dot{width:10px;height:10px;border-radius:50%;flex:none;margin-top:8px;background:var(--desk-2)}
.dot.l{background:var(--pencil)}.dot.k{background:var(--go)}
details.more summary{cursor:pointer;font-weight:700;list-style:none;padding:12px 18px}
details.more summary::-webkit-details-marker{display:none}
.sheet{max-width:100%;max-height:420px;border-radius:10px;display:block;margin:0 auto;border:1px solid var(--line)}

/* play */
.playbar{display:flex;align-items:center;gap:12px}
.pbar{flex:1;height:14px;border-radius:9px;background:var(--desk-2);overflow:hidden}
.pbar i{display:block;height:100%;background:var(--go);border-radius:9px;transition:width .35s}
.pbar.clock i{background:var(--pencil);transition:width .2s linear}
.pcount{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-2);min-width:3.6em;text-align:right}
.stage{display:grid;gap:16px;justify-items:center;text-align:center}
.ask{font:800 1.05rem var(--f-display);color:var(--ink-2)}
.from{font-size:.85rem;font-weight:700;color:var(--ink-2)}
.flipwrap{width:100%;max-width:560px;perspective:1200px}
.fcard{cursor:pointer;width:100%}
.fin{position:relative;min-height:min(52vh,340px);transition:transform .55s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}
.flipped .fin{transform:rotateY(180deg)}
.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:56px 18px 22px;border-radius:18px}
.face.back{transform:rotateY(180deg)}
.face .corner{position:absolute;top:12px;left:16px}
.prompt{font:800 clamp(1.7rem,7vw,2.8rem)/1.2 var(--f-display);overflow-wrap:anywhere;max-width:100%}
.prompt.math{font-size:clamp(2.4rem,11vw,4.2rem);font-variant-numeric:tabular-nums}
.prompt.long{font:700 clamp(1.15rem,4.5vw,1.5rem)/1.4 var(--f-body)}
.answer{font:800 clamp(1.6rem,6.5vw,2.6rem)/1.2 var(--f-display);color:var(--go);overflow-wrap:anywhere}
.answer.long{font:700 clamp(1.1rem,4.3vw,1.45rem)/1.45 var(--f-body);color:var(--ink)}
.word{font:700 clamp(2.6rem,13vw,4.6rem)/1 var(--f-letter);letter-spacing:.02em;overflow-wrap:anywhere}
.letters{font:700 1.5rem var(--f-letter);letter-spacing:.45em;color:var(--ink-2)}
.slots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.slot{width:clamp(30px,8vw,46px);height:clamp(40px,10vw,56px);border-bottom:4px solid var(--ink-2);display:grid;place-items:center;font:700 clamp(1.4rem,6vw,2.1rem) var(--f-letter)}
.slot.ok{border-color:var(--go);color:var(--go)}.slot.no{border-color:var(--miss);color:var(--miss)}
.slot.sp{border-color:transparent;width:14px}
.cardimg{max-height:130px;max-width:80%;border-radius:10px;object-fit:contain}
.ansin{font:700 clamp(1.5rem,6vw,2rem) var(--f-letter);text-align:center;width:min(100%,14em);padding:10px 14px;border-radius:14px;border:2.5px solid var(--line);background:var(--paper)}
.ansin:focus{border-color:var(--focus);outline:none}
.fb{min-height:2.2em;font-weight:700;font-size:1.15rem;display:grid;gap:8px;justify-items:center}
.ok{color:var(--go)}.no{color:var(--miss)}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:600px}
@media (max-width:460px){.choices.wide{grid-template-columns:1fr}}
.choice{border:2.5px solid var(--line);border-bottom-width:6px;color:inherit;box-sizing:border-box;cursor:pointer;min-height:68px;padding:12px 14px;border-radius:16px;background:var(--paper);box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;font:700 1.15rem/1.3 var(--f-body);text-align:left;overflow-wrap:anywhere}
.choice.sp{font:700 1.5rem var(--f-letter);justify-content:center;text-align:center}
.choice kbd{font:700 .8rem var(--f-body);color:var(--ink-2);border:1.5px solid var(--line);border-radius:6px;padding:0 6px;flex:none}
.choice.right{border-color:var(--go);background:color-mix(in srgb,var(--go) 16%,var(--paper))}
.choice.wrong{border-color:var(--miss);background:color-mix(in srgb,var(--miss) 14%,var(--paper))}
.choices.done .choice{pointer-events:none}
.tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.tile{border:2px solid var(--pencil-deep);border-bottom-width:5px;cursor:pointer;width:clamp(42px,11vw,56px);height:clamp(48px,12vw,62px);display:grid;place-items:center;border-radius:12px;background:var(--pencil);color:var(--on-pencil);font:700 clamp(1.4rem,6vw,2rem) var(--f-letter);padding:0}
.tile[disabled]{visibility:hidden}
.slot.fill{cursor:pointer}
.match{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:640px}
@media (max-width:460px){.match{grid-template-columns:repeat(2,1fr)}}
.mt{color:inherit;box-sizing:border-box;cursor:pointer;min-height:82px;padding:10px;border-radius:14px;background:var(--paper);box-shadow:var(--shadow);border:2.5px solid var(--line);display:grid;place-items:center;text-align:center;font:700 1.02rem/1.25 var(--f-body);overflow-wrap:anywhere;transition:transform .15s,opacity .3s}
.mt.f{font:800 1.25rem var(--f-display)}
.mt.f.sm{font-size:clamp(.92rem,3.8vw,1.05rem)}
.mt.sel{border-color:var(--focus);transform:scale(1.04)}
.mt.gone{opacity:0;pointer-events:none;transform:scale(.8)}
.mt.bad{border-color:var(--miss)}
.shake{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-8px)}50%{transform:translateX(7px)}75%{transform:translateX(-4px)}}
.pop{animation:pop .35s}
@keyframes pop{40%{transform:scale(1.1)}}
.bigclock{font:800 2.2rem var(--f-display);font-variant-numeric:tabular-nums}
canvas.pad{width:100%;height:200px;border-radius:12px;border:2px dashed var(--line);background:var(--paper);touch-action:none;display:block}
.wpadwrap{width:100%;max-width:620px;position:relative}
canvas.wpad{width:100%;height:clamp(180px,34vh,260px);border-radius:16px;border:2.5px solid var(--line);touch-action:none;display:block;cursor:crosshair;
 background:var(--paper) linear-gradient(to bottom,transparent calc(30% - 1px),var(--rule) calc(30% - 1px) 30%,transparent 30% calc(55% - 1px),var(--rule) calc(55% - 1px) 55%,transparent 55% calc(80% - 1.5px),var(--margin) calc(80% - 1.5px) 80%,transparent 80%)}
.how{width:100%;max-width:560px;text-align:left;padding:16px 18px;display:grid;gap:10px;border-left:6px solid var(--math)}
.how ol{margin:0;padding-left:1.4em;display:grid;gap:6px;font-size:1.1rem}
.how li{animation:rise .3s both}
@keyframes rise{from{opacity:0;transform:translateY(6px)}}
.sentence{font-size:1.2rem;max-width:34em}
.testnum{font:800 4rem/1 var(--f-display);color:var(--pink)}
.tlist{width:100%;max-width:560px;display:grid;text-align:left}
.trow{display:grid;grid-template-columns:2em 1fr auto;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--rule)}
.trow .n{color:var(--ink-2);font-weight:700;font-variant-numeric:tabular-nums}
.trow .w{font:700 1.25rem var(--f-letter);overflow-wrap:anywhere}
.trow .yours{font:400 1rem var(--f-letter)}
.mark{display:flex;gap:6px}
.mark button{width:42px;height:42px;border-radius:12px;border:2px solid var(--line);background:var(--paper);cursor:pointer;display:grid;place-items:center;color:var(--ink-2)}
.mark button[aria-pressed="true"].y{background:var(--go);border-color:var(--go);color:var(--on-go)}
.mark button[aria-pressed="true"].n{background:var(--miss);border-color:var(--miss);color:var(--on-miss)}

/* results */
.results{padding:28px 18px;text-align:center;display:grid;gap:14px;justify-items:center;width:100%}
.results h2{font-size:clamp(2rem,8vw,3rem)}
.medal{width:120px;height:120px}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chip{border-radius:999px;padding:3px 12px;background:var(--desk-2);font-weight:700}
.newstk{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:14px;background:color-mix(in srgb,var(--pencil) 25%,var(--paper));font-weight:700}
.newstk svg{width:46px;height:46px}

/* rewards & stickers */
.balance{display:flex;align-items:center;gap:16px;padding:18px}
.balance .big{font:800 3rem/1 var(--f-display);font-variant-numeric:tabular-nums}
.balance svg.icon{width:56px;height:56px;color:var(--pencil-deep);fill:var(--pencil);stroke:var(--pencil-deep)}
.rewards{display:grid;gap:12px}
.reward{display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:center;padding:14px 16px}
.reward b{font:800 1.2rem var(--f-display);overflow-wrap:anywhere}
.reward .bar{grid-column:1/-1;height:10px;border-radius:9px;background:var(--desk-2);overflow:hidden}
.reward .bar i{display:block;height:100%;background:var(--pencil)}
.stickers{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:14px;padding:18px}
.stk-cell{display:grid;justify-items:center;gap:4px;text-align:center;align-content:start}
.stk-cell b{font:800 .98rem/1.15 var(--f-display)}
.stk-cell span{font-size:.8rem;color:var(--ink-2);line-height:1.25}
.stk{width:76px;height:76px}
.stk.off{opacity:.55}
.claimed{padding:24px;text-align:center;display:grid;gap:10px;justify-items:center;border:3px dashed var(--pencil-deep)}

/* parent */
.ptiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media (max-width:600px){.ptiles{grid-template-columns:repeat(2,1fr)}}
.ptile{padding:14px 16px;display:grid;gap:2px}
.ptile b{font:800 2rem/1.1 var(--f-display);font-variant-numeric:tabular-nums}
.ptile span{color:var(--ink-2);font-size:.9rem}
.bars{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;align-items:end;height:170px;padding:8px 4px 0;border-bottom:1.5px solid var(--line)}
.bars .col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}
.bars .v{font-size:.8rem;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}
.bars .b{width:70%;max-width:44px;border-radius:7px 7px 0 0;background:var(--math);min-height:2px}
.bars .col.now .b{background:var(--go)}
.days{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;text-align:center;font-size:.82rem;font-weight:700;color:var(--ink-2)}
.plist{display:grid}
.prow{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--rule);align-items:center}
.prow>*{min-width:0}
.prow b{font-weight:700;overflow-wrap:anywhere}
.prow .s{font-size:.85rem;color:var(--ink-2)}
.prow .r{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.pinbox{display:grid;gap:12px;justify-items:center;padding:28px;text-align:center}
.pinin{font:800 2rem var(--f-display);letter-spacing:.5em;text-align:center;width:7.5em;max-width:100%;padding:8px;border-radius:14px;border:2.5px solid var(--line);background:var(--paper)}

/* add & review */
.tabs3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.src{font:800 1rem var(--f-display);color:inherit;box-sizing:border-box;cursor:pointer;padding:14px 10px;border-radius:16px;background:var(--paper);box-shadow:var(--shadow);border:2.5px solid transparent;display:grid;justify-items:center;gap:6px;text-align:center}
.src .icon{width:30px;height:30px}
.src[aria-pressed="true"]{border-color:var(--pencil-deep);background:color-mix(in srgb,var(--pencil) 22%,var(--paper))}
.drop{border:2.5px dashed var(--line);border-radius:16px;padding:22px;display:grid;gap:12px;justify-items:center;text-align:center}
.drop.over{border-color:var(--focus);background:color-mix(in srgb,var(--focus) 8%,transparent)}
.thumbs{display:flex;flex-wrap:wrap;gap:10px}
.thumb{position:relative}
.thumb img{width:96px;height:120px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block}
.thumb button{position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;border:0;background:var(--ink);color:var(--paper);cursor:pointer;display:grid;place-items:center}
.thumb button .icon{width:16px;height:16px}
textarea{width:100%;min-height:200px;resize:vertical;border-radius:14px;border:2px solid var(--line);background:var(--paper);padding:12px 14px;line-height:1.55}
textarea:focus,input.f:focus,select.f:focus{border-color:var(--focus);outline:none}
input.f,select.f{border-radius:12px;border:2px solid var(--line);background:var(--paper);padding:9px 12px;max-width:100%}
.field{display:grid;gap:6px}
.status{display:flex;gap:10px;align-items:center;font-weight:700}
.spin{width:22px;height:22px;border-radius:50%;border:3px solid var(--desk-2);border-top-color:var(--pencil-deep);animation:spin .8s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.note{padding:12px 14px;border-radius:12px;background:var(--desk-2);font-size:.95rem}
.split{display:grid;grid-template-columns:1fr 240px;gap:16px}
@media (max-width:680px){.split{grid-template-columns:1fr}}
.split>*{min-width:0}
.rv{display:grid;gap:8px}
.rvrow{display:grid;grid-template-columns:2em 1fr 1fr auto auto;gap:8px;align-items:center}
.rvrow.one{grid-template-columns:2em 1fr auto auto}
.rvrow input{width:100%;min-width:0}
.rvrow .n{color:var(--ink-2);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.rvrow input.need{border-color:var(--miss)}
.rvpic{width:40px;height:40px;border-radius:10px;border:2px solid var(--line);background:var(--paper) center/cover;cursor:pointer;display:grid;place-items:center;color:var(--ink-2)}
@media (max-width:520px){.rvrow{grid-template-columns:1.6em 1fr auto auto}.rvrow .b{grid-column:2/3;grid-row:2}}

dialog{border:0;border-radius:18px;padding:0;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);width:min(520px,calc(100vw - 32px))}
dialog::backdrop{background:rgba(12,18,32,.5)}
.dlg{padding:20px;display:grid;gap:16px}
.kidrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule)}
.kidrow .nm{flex:1;min-width:0;font-weight:700;overflow-wrap:anywhere}
.kidrow .av{width:34px;height:34px;font-size:1rem}
.cur{font-size:.8rem;color:var(--go);font-weight:700}
input[type=range]{accent-color:var(--focus);width:100%}

#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--desk);padding:10px 18px;border-radius:12px;z-index:20;font-weight:700;max-width:calc(100vw - 32px);text-align:center}
#fx{position:fixed;inset:0;pointer-events:none;z-index:15;width:100%;height:100%}
@media (prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}}

/* ---------- tablet tuning ---------- */
button,.key,.tile,.choice,.mt,.src,.deck,.mode,.fcard,label.key{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.key,.tile,.choice,.mt,.fcard,.src,.mode,.deck,.seg button,.pill{-webkit-user-select:none;user-select:none}
@media (pointer:coarse){
 .key{min-height:52px}.key.small{min-height:44px;padding:6px 14px}
 .seg button{padding:10px 16px}.iconbtn{padding:10px}.link{padding:10px 4px}
 .mark button{width:50px;height:50px}.pill{padding:6px 12px;min-height:44px}
}
@media (display-mode:standalone){html,body{overscroll-behavior-y:none}}
.home-side,.home-main{display:grid;gap:18px;align-content:start;min-width:0}
#installBox:empty{display:none}
.about{padding:56px 22px 28px;display:grid;gap:10px;justify-items:center;text-align:center;max-width:560px;width:100%;margin:0 auto}
.about h1{font-size:2.4rem}.about img{border-radius:22px;max-width:96px}
.foot{max-width:1100px;margin:28px auto 0;padding-top:16px;border-top:1px solid var(--desk-2);text-align:center;font-size:.85rem;color:var(--ink-2)}
.install{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:14px;background:var(--paper);border:2px dashed var(--line)}
.install b{font-family:var(--f-display);font-size:1.05rem}
@media (min-width:1000px){
 .wrap{max-width:1100px}
 #v-home{grid-template-columns:minmax(0,370px) minmax(0,1fr);align-items:start;column-gap:28px}
 .home-side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 76px)}
 .flipwrap{max-width:640px}.wpadwrap{max-width:760px}
 canvas.wpad{height:clamp(220px,38vh,320px)}
}

/* timeline (history) */
.tlorder{list-style:none;margin:0;padding:0;display:grid;gap:8px;width:100%;max-width:600px;text-align:left}
.tlslot{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;min-height:56px;padding:8px 14px;border-radius:14px;border:2.5px dashed var(--line);background:transparent}
.tlslot.fill{border-style:solid;background:var(--paper);box-shadow:var(--shadow);cursor:pointer;font-weight:700}
.tlslot.ok{border-color:var(--go)}.tlslot.no{border-color:var(--miss)}
.tln{font:800 1.05rem var(--f-display);color:var(--history);min-width:2.2em;font-variant-numeric:tabular-nums}
.tlpool{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px;width:100%;max-width:600px}
