/* The Dopamine Deck design tokens: low visual noise, one action at a time, big whitespace */
:root{--paper:#fbfaf6;--ink:#1f2430;--muted:#6a7282;--accent:#6c5ce7;--accent2:#e17055;--line:#e7e4da;--ok:#2e7d5b}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:var(--paper);color:var(--ink);line-height:1.65;font-size:17px}
.wrap{max-width:760px;margin:0 auto;padding:20px 18px 60px}
header.site{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:14px 0}
.brand{font-weight:800;font-size:20px;letter-spacing:.2px;color:var(--ink);text-decoration:none}
.brand span{color:var(--accent)}
nav{display:flex;flex-wrap:wrap;gap:2px 16px;align-items:center}
nav a{margin-right:0;color:var(--muted);text-decoration:none;font-size:15px;display:inline-flex;align-items:center;padding:6px 2px;min-height:24px}
nav a:hover{color:var(--ink)}
h1{font-size:2.1rem;line-height:1.2;margin:28px 0 10px;font-weight:800}
h2{font-size:1.3rem;margin:26px 0 10px}
.sub{color:var(--muted);font-size:1.05rem;margin-bottom:18px}
.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:12px 0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:16px 0}
.t{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;text-decoration:none;color:var(--ink);transition:border-color .15s}
.t:hover{border-color:var(--accent)}
.t b{display:block;font-size:1rem}.t small{color:var(--muted)}
.btn{display:inline-block;background:var(--accent);color:#fff;border-radius:10px;padding:10px 18px;text-decoration:none;font-weight:600;border:none;cursor:pointer;font-size:1rem}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn:hover{background:#5b4bd6}
.btn.ghost:hover{background:#fff;border-color:var(--accent)}
input[type=text],input[type=number],select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:10px;width:100%;margin:4px 0;background:#fff}
label{font-size:.9rem;color:var(--muted);display:block;margin-top:8px}
.foot{color:var(--muted);font-size:.85rem;margin-top:40px;border-top:1px solid var(--line);padding-top:16px}
.disclaimer{font-size:.8rem;color:#565e6e;background:#f3f1ea;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-top:20px}
.note{background:#fff7ec;border:1px solid #f0dcc2;border-radius:10px;padding:10px 14px;font-size:.92rem;margin:12px 0}
@media (max-width:480px){.chip,.preset{min-height:44px;padding:10px 16px}.choices{gap:12px}}
@media print{.no-print{display:none!important}body{background:#fff}}

/* ===== 2026-09-10 iteration: one-action-per-screen tools, disclosures, print cards ===== */
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:-9999px;top:0;background:#fff;color:var(--ink);padding:10px 14px;border-radius:0 0 10px 0;z-index:20;text-decoration:none}
.skip:focus{left:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.choices{display:grid;gap:14px;margin:20px 0 8px}
.choice{display:block;width:100%;text-align:left;font:inherit;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 22px;text-decoration:none;color:var(--ink);cursor:pointer;box-shadow:0 1px 2px rgba(31,36,48,.04)}
.choice:hover{border-color:var(--accent)}
.choice b{display:block;font-size:1.22rem;font-weight:800;line-height:1.3}
.choice small{display:block;color:var(--muted);margin-top:5px;font-size:.96rem;line-height:1.5}
.choice.primary{border-color:var(--accent);border-width:2px}
.meta{color:var(--muted);font-size:.86rem}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0;list-style:none}
.chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 14px;font:inherit;font-size:.92rem;cursor:pointer;color:var(--ink);min-height:42px}
.chip:hover{border-color:var(--accent)}
.disclose{border:1px solid var(--line);border-radius:14px;background:#fff;margin:14px 0;padding:0}
.disclose>summary{cursor:pointer;padding:16px 18px;font-weight:700;list-style:none;display:flex;align-items:center;gap:10px}
.disclose>summary::-webkit-details-marker{display:none}
.disclose>summary::before{content:"▸";color:var(--accent);font-size:1.1rem;line-height:1}
.disclose[open]>summary::before{content:"▾"}
.disclose>summary+h2{margin-top:0}
.disclose .inner{padding:0 18px 18px}
.steps{list-style:none;margin:16px 0 0;padding:0}
.steps li{border-top:1px solid var(--line);margin:0}
.steps li:first-child{border-top:0}
label.step{display:flex;gap:12px;align-items:flex-start;padding:13px 2px;cursor:pointer;margin:0;color:var(--ink);font-size:1rem}
label.step input[type=checkbox]{width:22px;height:22px;margin:2px 0 0;flex:0 0 auto;accent-color:var(--accent)}
label.step .txt{flex:1 1 auto;min-width:0;overflow-wrap:break-word}
label.step input:checked~.txt{text-decoration:line-through;color:var(--muted)}
.mins{flex:0 0 auto;font-size:.78rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 9px;white-space:nowrap}
.row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
h2.out{font-size:1.2rem;margin:0 0 4px}
.timer{position:relative;width:100%;max-width:250px;margin:6px auto 0}
.timer svg{display:block;width:100%;height:auto}
.ring-bg{fill:none;stroke:var(--line);stroke-width:12}
.ring-fg{fill:none;stroke:var(--accent);stroke-width:12;stroke-linecap:round;transition:stroke-dashoffset .3s linear}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 22px}
.time{font-size:2.6rem;font-weight:800;letter-spacing:1px;line-height:1.1}
.mode{color:var(--muted);font-size:.92rem;overflow-wrap:break-word}
.presets{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:14px 0 0}
.preset{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;font:inherit;cursor:pointer;color:var(--ink);min-height:42px}
.preset:hover{border-color:var(--accent)}
.preset[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.switch{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:.95rem;color:var(--ink)}
.switch input{width:20px;height:20px;accent-color:var(--accent);margin:0}
.printcard{border-radius:14px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{
  @page{margin:14mm}
  .no-print{display:none!important}
  .wrap{max-width:none;padding:0}
  body{background:#fff;font-size:11.5pt;line-height:1.5}
  a{color:inherit;text-decoration:none}
  .card,.disclose,label.step,li{page-break-inside:avoid}
  .printcard{border:1.5px dashed #9a9488;padding:16px 18px}
  .printcard .steps li{border-top:1px solid #ccc}
  .printcard .mins{border-color:#bbb;color:#444}
  body.printing main>h1,body.printing main>.sub,body.printing form{display:none!important}
  body.printing .print-hide{display:none!important}
  body.printing .printcard{border:1.5px dashed #9a9488}
}

/* ===== 2026-09-10 P1 (T6): self-hosted reading fonts ===== */
@font-face{font-family:"LexendDeck";src:url("../fonts/lexend-latin.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"OpenDyslexicDeck";src:url("../fonts/opendyslexic-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"OpenDyslexicDeck";src:url("../fonts/opendyslexic-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

/* text size (three states, persisted) */
html{overflow-wrap:break-word}
html.fs-2{font-size:112%}
html.fs-3{font-size:124%}
html.fs-2 body{font-size:19px}
html.fs-3 body{font-size:21px}
html.font-lex body{font-family:"LexendDeck",-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
html.font-dys body{font-family:"OpenDyslexicDeck","LexendDeck",Verdana,"Trebuchet MS",sans-serif;letter-spacing:.015em;word-spacing:.05em}
html.font-dys h1,html.font-dys h2,html.font-dys .choice b{letter-spacing:0}

/* ===== 2026-09-10 P1 (T6): Calm mode ===== */
html.calm{--paper:#f6f3ec;--ink:#2b2a26;--muted:#5b584e;--accent:#6b6355;--accent2:#7a6a55;--line:#e0dbcd;--ok:#4a6b5b}
html.calm body{background:var(--paper)}
html.calm .card,html.calm .choice,html.calm .disclose,html.calm .t,html.calm .chip,html.calm .btn.ghost,html.calm .preset,html.calm input,html.calm select,html.calm textarea{background:#fbf9f4}
html.calm .card,html.calm .choice,html.calm .t{box-shadow:none}
html.calm .btn{background:var(--accent)}
html.calm .btn:hover{background:#574f40}
html.calm .t:hover,html.calm .chip:hover,html.calm .preset:hover,html.calm .choice:hover{border-color:var(--accent)}
html.calm .note{background:#f1eee3;border-color:#ddd7c6}
html.calm .disclaimer{background:#f0ede3;color:#4e4b42;border-color:#ddd7c6}
html.calm .choice.primary{border-color:var(--accent)}
html.calm .preset[aria-pressed=true]{background:var(--accent);border-color:var(--accent)}
html.calm .step input[type=checkbox],html.calm .switch input,html.calm .prefpanel input{accent-color:var(--accent)}
html.calm *,html.calm *::before,html.calm *::after{transition:none!important;animation:none!important}
html.calm .brand span{color:var(--ink)}
html.calm img,html.calm svg{filter:saturate(.4)}

/* ===== 2026-09-10 P1 (T6): header comfort controls ===== */
.prefbtn{background:transparent;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font:inherit;font-size:14px;color:var(--muted);cursor:pointer;min-height:36px;display:inline-flex;align-items:center;gap:6px}
.prefbtn:hover{border-color:var(--accent);color:var(--ink)}
.prefbtn[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.prefpanel{border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px 16px 14px;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:8px 28px}
.prefpanel[hidden]{display:none}
.prefpanel fieldset{border:0;margin:0;padding:0;min-width:200px}
.prefpanel legend{font-size:.86rem;color:var(--muted);padding:0 0 4px}
.prefpanel label{display:flex;align-items:center;gap:8px;font-size:.95rem;color:var(--ink);margin:2px 0;padding:3px 0;cursor:pointer}
.prefpanel input[type=radio]{width:20px;height:20px;margin:0;accent-color:var(--accent)}
.prefpanel .pnote{flex:1 1 100%;font-size:.86rem;color:var(--muted);margin:2px 0 0}
@media (max-width:520px){.prefpanel{gap:8px}}

/* ===== 2026-09-10 P1 (T5): deck card preview + exact-size printing ===== */
.deckstage{position:relative;overflow:hidden;margin:14px 0 0}
.deckcard{width:3in;height:5in;transform-origin:top left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 17px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.deckcard .dch{font-size:21px;line-height:1.2;font-weight:800;margin:0}
.deckcard .dcp{font-size:13px;color:var(--muted);margin:0;line-height:1.35}
.deckcard .dcsteps{list-style:none;margin:6px 0 0;padding:0;font-size:13.5px;line-height:1.45}
.deckcard .dcsteps li{display:flex;gap:7px;padding:4px 0;border-top:1px solid var(--line)}
.deckcard .dcsteps li:first-child{border-top:0}
.deckcard .dcsteps .n{flex:0 0 auto;font-weight:700;color:var(--accent)}
.deckcard .dcf{margin-top:auto;font-size:10.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:6px}
.decksize{font-size:.84rem;color:var(--muted);margin:10px 0 0}
.sizes{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:0;list-style:none}
.sizebtn{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;font:inherit;cursor:pointer;color:var(--ink);min-height:44px}
.sizebtn:hover{border-color:var(--accent)}
.sizebtn[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.cutnote{display:none}
@media print{
  body.printing .deckstage{height:auto!important;overflow:visible;display:block!important;margin:0!important}
  body.printing .decksize{display:none!important}
  body.printing .deckcard{transform:none!important;border:0;border-radius:0}
  body.printing.cutting .deckcard{border:0;outline:1px dashed #8b8578}
  body.printing header.site,body.printing footer,body.printing .no-print{display:none!important}
  body.printing .wrap>*{display:none!important}
  body.printing .wrap>.deckstage{display:block!important}
  body.printing.cutting .wrap>.cutnote{display:block!important;font-size:9pt;color:#555;margin:0 0 4mm;text-align:center}
}

/* ===== 2026-09-10 P1 (T4): brain dump sort loop ===== */
.dumpbox textarea{min-height:180px;font-size:1.05rem;line-height:1.6;resize:vertical}
.dumpmsg{color:var(--muted);font-size:.9rem;margin-top:6px}
.sortnow{border:2px solid var(--accent);border-radius:16px;background:#fff;padding:18px 20px;margin:16px 0 0}
.sortnow .itemtext{font-size:1.22rem;font-weight:700;line-height:1.35;margin:6px 0 0;overflow-wrap:break-word}
.sortbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;padding:0;list-style:none}
.sortbtn{width:100%;min-height:62px;border-radius:14px;border:2px solid;font:inherit;font-size:1.04rem;font-weight:700;cursor:pointer;padding:8px 10px;line-height:1.2}
.sortbtn b{display:block;font-weight:600;font-size:.78rem;margin-top:3px}
.sortbtn.today{background:#e7f4ec;border-color:#2e7d5b;color:#1c5940}
.sortbtn.later{background:#e9f0fa;border-color:#2b6cb0;color:#1d4877}
.sortbtn.mine{background:#f0f1f3;border-color:#6a7282;color:#3c4250}
.sortbtn.gone{background:#fbeceb;border-color:#b23b3b;color:#8a2b2b}
.sortbtn:hover{filter:brightness(.97)}
html.calm .sortbtn{filter:none}
.sortbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}
.bar{height:9px;border-radius:999px;background:var(--line);overflow:hidden;margin-top:12px}
.bar span{display:block;height:100%;background:var(--accent);width:0}
.sorted{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:0;list-style:none}
.sorted button{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 13px;font:inherit;font-size:.9rem;cursor:pointer;color:var(--ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:40px}
.sorted button span{color:var(--muted);font-size:.8rem}
.grouplist{list-style:none;margin:8px 0 0;padding:0}
.grouplist li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line)}
.grouplist li:first-child{border-top:0}
.grouplist .gt{flex:1 1 auto;min-width:0;overflow-wrap:break-word}
.grouplist .gmini{flex:0 0 auto;font-size:.84rem;color:var(--muted);text-decoration:underline;background:none;border:0;cursor:pointer;font-family:inherit;padding:4px 2px;min-height:32px}
.grouplist select.gmini{border:1px solid var(--line);border-radius:9px;padding:4px 6px;background:#fff;color:var(--ink);min-height:36px;text-decoration:none;max-width:11rem}
.todaycard{border:2px dashed var(--accent);border-radius:14px;background:#fff;padding:16px 18px;margin:14px 0 0}
.todaycard h3{margin:0 0 4px;font-size:1.15rem}
.todaycard ul{list-style:none;margin:10px 0 0;padding:0}
.todaycard li{display:flex;gap:10px;padding:7px 0;border-top:1px solid var(--line);font-size:1.02rem}
.todaycard li:first-child{border-top:0}
.todaycard .box{flex:0 0 auto;width:19px;height:19px;border:2px solid #9a9488;border-radius:5px;margin-top:3px}
@media print{
  body.printing .todaycard{border:1px dashed #8b8578;margin:0}
  body.printing .todaycard .box{border-color:#8b8578}
}

/* ===== 2026-09-10 P1 (T5): library search / filter / card of the day ===== */
.libtools{display:grid;gap:12px;margin:16px 0 4px}
.libtools label{font-size:.9rem;color:var(--muted);margin:0}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.filterbtn{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 14px;font:inherit;font-size:.92rem;cursor:pointer;color:var(--ink);min-height:42px}
.filterbtn[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.cod{border:2px solid var(--accent);border-radius:16px;background:#fff;padding:18px 20px;margin:14px 0 0}
.cod .k{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}
.cod b{display:block;font-size:1.24rem;font-weight:800;margin:5px 0 0;line-height:1.3}
.cod small{display:block;color:var(--muted);margin-top:5px;font-size:.96rem}
.cod p{margin:10px 0 0}
.libempty{color:var(--muted);font-size:.95rem;margin:14px 0 0}
[hidden].libempty{display:none}
.libcount{color:var(--muted);font-size:.88rem;margin:12px 0 0}
.catgroup{margin:18px 0 0}
.catgroup h2{font-size:1.12rem;margin:0 0 6px}
.catgroup p{margin:0 0 8px;font-size:.98rem;color:var(--ink)}
.catgroup .pdf{font-size:.88rem;color:var(--muted)}
.catgroup[hidden]{display:none}
