/* Mind Maps: same palette and type as Hex Connections so the sites feel like one family. */
:root{
  --paper:#F1F7FF; --panel:#FFFFFF; --ink:#1E2A47; --muted:#55627F; --line:#D2DEEF;
  --tile-edge:#AFC3E2; --honey:#FFC229; --honey-soft:#FFF0BF; --honey-ink:#7A4E00;
  --teal:#08756E; --teal-soft:#D3F4EF; --blue:#2F6FED; --on-blue:#FFFFFF; --danger:#B83A24; --ok:#1E9A55;
  --shadow:rgba(30,42,71,.13);
  --t0:#E1EFFF; --t1:#FFE6DE; --t2:#E2F7E8; --t3:#EEE6FF; --t4:#DDF6F5; --t5:#FFE5F0;
  --b0:#2F6FED; --b1:#D9603B; --b2:#1E9A55; --b3:#7B55D9; --b4:#08756E; --b5:#C93C7A;
  --f-display:"Bricolage Grotesque","Avenir Next","Segoe UI",sans-serif;
  --f-body:"Atkinson Hyperlegible","Segoe UI",system-ui,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#0F1730; --panel:#17213F; --ink:#EAF0FF; --muted:#A5B2D1; --line:#2B3962;
  --tile-edge:#3C5088; --honey:#FFC94D; --honey-soft:#3E3414; --honey-ink:#FFE08A;
  --teal:#3FD0C4; --teal-soft:#12393A; --blue:#78A6FF; --on-blue:#0F1730; --danger:#FF8A73; --ok:#5BD68A;
  --shadow:rgba(0,0,0,.45);
  --t0:#1D2D55; --t1:#3A2622; --t2:#183A28; --t3:#2C2550; --t4:#143A3A; --t5:#3B1E30;
  --b0:#78A6FF; --b1:#FF9A78; --b2:#5BD68A; --b3:#B49BFF; --b4:#3FD0C4; --b5:#FF8DBE;
  color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 var(--f-body);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--blue)}
h1,h2,h3{font-family:var(--f-display);line-height:1.15;margin:0 0 .5em}
h1{font-weight:800;font-size:clamp(28px,4vw,44px)}
h2{font-weight:800;font-size:clamp(22px,2.6vw,30px)}
h3{font-weight:600;font-size:19px}
.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 max(16px,env(safe-area-inset-left))}
.wrap.wide{max-width:1560px}
.wrap.narrow{max-width:760px}
.center{text-align:center}
.muted{color:var(--muted)}
.small{font-size:14px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px;top:8px;background:var(--panel);padding:8px 12px;border-radius:8px;z-index:50}
.skip:focus{left:8px}
main{flex:1;padding-bottom:48px}
section{margin-block:32px}

/* header */
.top{display:flex;align-items:center;gap:16px;padding-block:14px 12px;border-bottom:3px solid transparent;border-image:linear-gradient(90deg,var(--blue),var(--teal),var(--honey),var(--danger)) 1;flex-wrap:wrap}
.brand{font:800 21px var(--f-display);display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.brand img{width:32px;height:32px}
.nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav a{color:var(--ink);text-decoration:none;font-weight:700;padding:7px 12px;border-radius:999px}
.nav a:hover{background:var(--panel)}
.nav a[aria-current]{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}
footer{border-top:1px solid var(--line);color:var(--muted);font-size:14px;padding-block:18px 28px}
footer a{color:inherit}

/* buttons and fields */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:700 16px var(--f-body);color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:9px 18px;cursor:pointer;text-decoration:none;min-height:42px}
.btn:hover{border-color:var(--tile-edge)}
.btn.primary{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}
.btn.ghost{background:transparent}
.btn.danger{color:var(--danger)}
.btn.small{font-size:14px;padding:6px 12px;min-height:34px}
.btn:disabled{opacity:.6;cursor:default}
:focus-visible{outline:3px solid var(--honey);outline-offset:2px}
input,textarea,select{font:inherit;font-weight:400;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px;width:100%}
textarea{resize:vertical}
input.num{width:90px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row>input,.row>select{flex:1;min-width:140px}
.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.actions.center{justify-content:center}
.field{margin:0 0 18px;border:0;padding:0}
.field>label,.field legend{font-weight:700;display:block}
.field>label input,.field>label textarea{margin-top:6px}
.field>label.check,.field label.check{font-weight:400}
.help{color:var(--muted);font-size:14px;margin:6px 0 0}
.check{display:flex;gap:8px;align-items:flex-start;font-weight:400;margin:6px 0}
.check input{width:auto;margin-top:4px}
.inline{display:inline-flex;gap:6px;align-items:center;font-weight:400}
.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 2px 10px var(--shadow)}
.cards{display:grid;gap:18px}
.cards.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.cards.three{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.cards.list{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}
.tag{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:2px 10px;background:var(--teal-soft);color:var(--teal)}
.tag.mind{background:var(--honey-soft);color:var(--honey-ink)}
.tag.recall{background:var(--teal-soft);color:var(--teal)}
.tag.revise{background:var(--t0);color:var(--blue)}
.eyebrow{font-weight:700;color:var(--teal);margin:0 0 6px}
.lead{color:var(--muted);font-size:18px;max-width:40em}
.crumbs{margin:18px 0 6px;font-size:15px}

/* home */
.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:40px;align-items:center;padding-block:28px 8px}
.hero h1{font-size:clamp(34px,5.2vw,58px);line-height:1.04}
.hero-art svg{width:100%;height:auto}
.art-links path{stroke:var(--tile-edge);stroke-width:3;fill:none}
.art-links .x{stroke:var(--teal);stroke-dasharray:2 0}
.art-pills rect{fill:var(--panel);stroke:var(--line)}
.art-pills text{font:700 13px var(--f-body);fill:var(--muted);text-anchor:middle}
.art-nodes rect{fill:var(--panel);stroke:var(--tile-edge);stroke-width:2}
.art-nodes rect.hub{fill:var(--honey);stroke:var(--honey)}
.art-nodes rect.t{fill:var(--teal-soft);stroke:var(--teal)}
.art-nodes text{font:700 16px var(--f-body);fill:var(--ink);text-anchor:middle}
.art-nodes text.big{font:800 19px var(--f-display);fill:#1E2A47}
.open-link{margin-top:22px;max-width:460px}
.open-link label{font-weight:700;display:block;margin-bottom:6px}
.research .cite{color:var(--muted);font-size:13px;font-style:italic;margin:0}
.steps{max-width:820px;margin:0 auto;display:grid;gap:12px;padding-left:24px}
.empty ol{margin:0;padding-left:22px}
.act h3 a{color:var(--ink);text-decoration:none}
.act h3{margin-top:10px}
.backup{margin-top:20px}
.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;flex-wrap:wrap;margin:24px 0 20px}
.page-head .lead{margin:0}

/* builder */
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:8px 0 18px}
.tab{font:700 15px var(--f-body);color:var(--muted);background:none;border:0;border-bottom:3px solid transparent;padding:10px 12px;cursor:pointer}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--honey)}
.tab-body>*+*{margin-top:18px}
.form{max-width:760px}
.parts{list-style:none;padding:0;display:grid;gap:8px}
.parts li{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.parts li>input{max-width:240px}
table{border-collapse:collapse;width:100%}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.terms td:first-child{width:28%}
.terms td:last-child{width:44px}
.bulk{display:grid;gap:8px;margin-top:16px}
.bulk label{font-weight:700}
.bulk code{font-weight:400;background:var(--paper);padding:1px 6px;border-radius:6px}
.share .url,.url{font-family:ui-monospace,Menlo,monospace;font-size:13px}
.subs{font-size:15px}
.stats{display:grid;grid-template-columns:auto auto;gap:4px 14px;margin:8px 0}
.stats dt{color:var(--muted)}
.stats dd{margin:0;font-weight:700}
.stats.wide{grid-template-columns:max-content auto}
.bars{list-style:none;padding:0;display:grid;gap:8px;margin:8px 0}
.bars li{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(80px,1fr) 46px;gap:10px;align-items:center;font-size:15px}
.bt{height:12px;background:var(--paper);border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.bf{display:block;height:100%;background:var(--teal)}
.bv{text-align:right;font-weight:700}

/* map pages */
.map-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;flex-wrap:wrap;margin:18px 0 12px}
.map-head h1{margin:0}
.map-head .focus{margin:6px 0 0;font-size:18px}
.status.warn{color:var(--danger);font-weight:700}
.phase-bar{display:none;border-radius:14px;padding:12px 16px;margin-bottom:12px;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.phase-bar.recall{display:flex;background:var(--teal-soft)}
.phase-bar.revise{display:flex;background:var(--t0)}
.foot-actions{margin-top:12px}
.grade-box{display:grid;gap:6px;padding:14px 16px}
.big-grade{font:800 32px var(--f-display);margin:0}
.feedback-box{margin-top:16px;display:grid;gap:8px}
.feedback-box label{font-weight:700}
.comment{margin:0 0 12px;font-size:18px}
.notes{background:var(--paper);border-radius:12px;padding:10px 12px;margin-bottom:12px}
.notes summary{font-weight:700;cursor:pointer}
.notes .pre{white-space:pre-wrap}
.defs dt{font-weight:700;margin-top:6px}
.defs dd{margin:0;color:var(--muted)}
.issues{padding-left:20px}
.prose li{margin-bottom:8px}
.sources li{font-size:15px}

/* editor */
.ed{display:grid;gap:14px;grid-template-columns:220px minmax(0,1fr) 320px;align-items:start}
.ed.no-tray{grid-template-columns:minmax(0,1fr) 340px}
.tray,.side{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;max-height:72vh;overflow:auto}
.tray-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;font-size:14px}
.tray-part{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:10px 0 4px}
.tray-group{display:flex;flex-wrap:wrap;gap:6px}
.tray-part{flex-basis:100%}
.chip{font:700 15px var(--f-body);color:var(--ink);background:var(--paper);border:1px solid var(--tile-edge);border-radius:10px;padding:6px 10px;cursor:pointer;text-align:left}
.chip:hover{border-color:var(--blue)}
.own{margin-top:14px;display:grid;gap:6px}
.own label{font-weight:700;font-size:14px}
.own input{min-width:0}
.stage{min-width:0}
.tools{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tool{font:700 14px var(--f-body);color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px 11px;cursor:pointer;min-width:38px;min-height:36px}
.tool[aria-pressed="false"]{opacity:.6}
.tools .spacer{flex:1}
.canvas-wrap{position:relative}
.canvas{display:block;width:100%;height:68vh;min-height:420px;background:var(--panel);border:1px solid var(--line);border-radius:18px;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;
  background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:22px 22px}
.canvas-hint{position:absolute;left:50%;top:12px;transform:translateX(-50%);background:var(--ink);color:var(--paper);font-size:14px;font-weight:700;padding:6px 14px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90%;text-align:center}
.canvas-hint.on{opacity:.92}
.node{cursor:pointer}
.node rect{fill:var(--panel);stroke:var(--tile-edge);stroke-width:2}
.node text{font:700 15px var(--f-body);fill:var(--ink);text-anchor:middle;pointer-events:none}
.node text.big{font:800 19px var(--f-display);fill:#1E2A47}
.node text.badge{font:700 10.5px var(--f-body);letter-spacing:.08em;fill:var(--muted)}
.node.k-topic rect{fill:var(--honey);stroke:var(--honey)}
.node.k-own rect{fill:var(--teal-soft);stroke:var(--teal)}
.node.k-blank rect{fill:var(--paper);stroke:var(--honey-ink);stroke-dasharray:6 4}
.node.k-blank.filled rect{fill:var(--honey-soft);stroke-dasharray:none}
.node.locked rect{stroke-width:3}
.node.root rect{stroke:var(--honey);stroke-width:4}
.node.revise rect{stroke:var(--blue);stroke-dasharray:5 4}
.node.sel rect{stroke:var(--blue);stroke-width:4}
.node.from rect{stroke:var(--teal);stroke-width:4}
.node:focus-visible{outline:none}
.node:focus-visible rect{stroke:var(--honey);stroke-width:5}
.node.br0 rect{fill:var(--t0);stroke:var(--b0)} .node.br1 rect{fill:var(--t1);stroke:var(--b1)} .node.br2 rect{fill:var(--t2);stroke:var(--b2)}
.node.br3 rect{fill:var(--t3);stroke:var(--b3)} .node.br4 rect{fill:var(--t4);stroke:var(--b4)} .node.br5 rect{fill:var(--t5);stroke:var(--b5)}
.node.br0.sel rect,.node.br1.sel rect,.node.br2.sel rect,.node.br3.sel rect,.node.br4.sel rect,.node.br5.sel rect{stroke:var(--ink)}
.handle{cursor:crosshair}
.handle circle{fill:var(--blue);stroke:var(--panel);stroke-width:3}
.handle path{stroke:var(--on-blue);stroke-width:2.5;stroke-linecap:round}
.link{cursor:pointer}
.link .hit{stroke:transparent;stroke-width:18;fill:none}
.link .line{stroke:var(--muted);stroke-width:2.5;fill:none;stroke-linecap:round}
.arrowhead{fill:var(--muted)}
.link.cross .line{stroke:var(--teal)}
.link.revise .line{stroke-dasharray:7 6}
.link.sel .line{stroke:var(--blue);stroke-width:4}
.link.br0 .line{stroke:var(--b0);stroke-width:4} .link.br1 .line{stroke:var(--b1);stroke-width:4} .link.br2 .line{stroke:var(--b2);stroke-width:4}
.link.br3 .line{stroke:var(--b3);stroke-width:4} .link.br4 .line{stroke:var(--b4);stroke-width:4} .link.br5 .line{stroke:var(--b5);stroke-width:4}
.link.sel.br0 .line,.link.sel.br1 .line,.link.sel.br2 .line,.link.sel.br3 .line,.link.sel.br4 .line,.link.sel.br5 .line{stroke:var(--ink)}
.link.score0 .line{stroke:var(--danger);stroke-width:4} .link.score1 .line{stroke:var(--honey);stroke-width:4} .link.score2 .line{stroke:var(--ok);stroke-width:4}
.pill rect{fill:var(--panel);stroke:var(--line)}
.pill text{font:700 12.5px var(--f-body);fill:var(--ink);text-anchor:middle}
.pill.empty text{fill:var(--muted);font-style:italic;font-weight:400}
.pill.empty rect{stroke-dasharray:4 3;stroke:var(--honey-ink)}
.link.sel .pill rect{stroke:var(--blue);stroke-width:2}
.temp-link{stroke:var(--blue);stroke-width:3;stroke-dasharray:6 5}
.ghost{stroke:var(--danger);stroke-width:2;stroke-dasharray:3 6;fill:none;opacity:.7}
.ghost-t{font:700 11px var(--f-body);fill:var(--danger);text-anchor:middle;opacity:.85}
.side h3{margin:0 0 6px;font-size:20px}
.side .tip{color:var(--muted);font-size:14px;margin-top:0}
.side .fld{font-weight:700;font-size:14px;display:block;margin:14px 0 6px}
.side>.btn{display:flex;width:fit-content;margin-top:10px}
.side .def{margin:0 0 6px;color:var(--muted)}
.side .reason{white-space:pre-wrap;margin:0}
.side .phrase{font-weight:700;margin:6px 0}
.count{font-size:13px;color:var(--danger);font-weight:700}
.count.ok{color:var(--ok)}
.linkhead{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-weight:700}
.linkhead .arrow{color:var(--muted)}
.linkbtn{font:inherit;color:var(--blue);background:none;border:0;padding:0;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.linklist{list-style:none;padding:0;margin:0;display:grid;gap:4px;font-size:14px}
.scores{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.score{font:700 13px var(--f-body);color:var(--ink);background:var(--panel);border:2px solid var(--line);border-radius:10px;padding:8px 4px;cursor:pointer}
.score b{font-size:18px;display:block}
.score.s0.on{border-color:var(--danger);background:var(--t1)} .score.s1.on{border-color:var(--honey);background:var(--honey-soft)} .score.s2.on{border-color:var(--ok);background:var(--t2)}
.score:disabled{cursor:default}
.legend{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lg{display:inline-block;width:28px;border-top:3px solid var(--muted)}
.lg.dashed{border-top-style:dashed}
.summary details{margin:8px 0}
.summary summary{cursor:pointer;font-weight:700}

/* dialogs and toasts */
.dlg{border:0;border-radius:20px;padding:22px;max-width:min(560px,92vw);width:100%;background:var(--panel);color:var(--ink);box-shadow:0 20px 60px var(--shadow)}
.dlg::backdrop{background:rgba(15,23,48,.45)}
.dlg h2{font-size:24px}
.dlg-body{display:grid;gap:10px}
.dlg-body p{margin:0}
.dlg-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:999px;font-weight:700;opacity:0;transition:.2s;pointer-events:none;z-index:60;max-width:90vw;text-align:center}
#toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-width:1100px){
  .ed,.ed.no-tray{grid-template-columns:minmax(0,1fr)}
  .tray{max-height:none}
  .tray-group{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
  .chip{white-space:nowrap}
  .side{max-height:none}
  .canvas{height:58vh}
}
@media (max-width:760px){
  .hero{grid-template-columns:minmax(0,1fr)}
  .hero-art{order:-1;max-width:420px}
  .nav a{padding:6px 9px;font-size:15px}
  .terms,.terms tbody,.terms tr,.terms td{display:block;width:100%!important}
  .terms thead{display:none}
  .terms tr{padding:8px 0;border-bottom:1px solid var(--line)}
  .terms td{border:0;padding:3px 0}
  .subs{display:block;overflow-x:auto;white-space:nowrap}
  .bars li{grid-template-columns:minmax(0,1fr) 70px 42px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{
  header.top,footer,.tray,.side,.tools,.actions,.phase-bar,.foot-actions,.tabs,.crumbs,.feedback-box,.grade-box .btn,.canvas-hint{display:none!important}
  .ed{display:block}
  .canvas{height:auto;min-height:0;aspect-ratio:4/3;border:0;background:none}
  body{background:#fff}
}
.bulk .btn,.bulk .row{justify-self:start}

/* accounts */
.account{display:flex;align-items:center}
.acct{gap:8px}
.acct .tag{font-size:11px}
.banner{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px;background:var(--t0)}
.banner p{margin:0}
.signin{display:grid;gap:10px}
.signin .wide{width:100%}
.signin .or{text-align:center;color:var(--muted);font-size:14px}
.email-form{display:grid;gap:8px}
.email-form label{font-weight:700;font-size:14px;display:grid;gap:4px}
.err{color:var(--danger);font-weight:700;margin:0}
.err:empty{display:none}
.posts{list-style:none;padding:0;display:grid;gap:10px;margin:0 0 14px}
.post{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center;border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.code{font:700 18px ui-monospace,Menlo,monospace;letter-spacing:.08em;background:var(--honey-soft);color:var(--honey-ink);padding:2px 10px;border-radius:8px}
.join{display:grid;gap:10px;max-width:360px;margin:20px auto;text-align:left}
.join label{font-weight:700}
.code-in{font:700 26px ui-monospace,Menlo,monospace;letter-spacing:.12em;text-align:center;text-transform:uppercase}
