/*
  GetMoreMarks pathway engine styles (TOOLS-ENGINE, 2026-09-30). Shared by every
  tool built on web/public/tool-files/_engine/pathway-engine.js. Moved out of the
  Organic Synthesis Map unchanged, plus the rules at the end for the cycle tools
  (board wording, spec notes, question-bank explanations).
  scripts/build_offline_tool.py inlines this file into each offline copy.
*/
/* Plus Jakarta Sans, self-hosted (TOOLS-05 2026-09-29): one variable latin
   woff2 for weights 400 to 800. Was loaded from Google Fonts, which nav-walk
   blocks as an off-origin request and which a pack opened offline cannot reach.
   SIL Open Font License 1.1. scripts/build_offline_tool.py inlines it. */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;
  src:url('/fonts/plus-jakarta-sans-latin.woff2') format('woff2');}
/* v31 tokens, copied from web/app/globals.css. This file cannot read the app's
   stylesheet, so the values are repeated here. Change them there first. */
:root{
  --page:#f2ece0;--r1:#e5ddd0;--r2:#d8cfc0;--r3:#cbc0ae;--r4:#bdb09c;
  --control-edge:#8f7b5c;
  --t-head:#3d3530;--t-body:#524840;--t-mid:#5c524b;--t-mute:#6c5f56;
  --primary:#4a40bc;--primary-h:#5c52cc;--primary-dim:rgba(74,64,188,0.10);--primary-rim:rgba(74,64,188,0.22);
  --primary-surface:#3d34aa;--chrome-bg:#1e1a5a;
  --grad-nav-cta:linear-gradient(180deg,#4a40bc,#3d34aa);
  --sage:#30614c;--sage-dim:rgba(50,102,80,0.10);
  --amber:#8f5c08;--amber-dim:rgba(143,92,8,0.10);
  --rust:#a33228;--rust-dim:rgba(163,50,40,0.10);
  --shadow-nav:0 1px 0 var(--r3),0 2px 10px rgba(50,35,0,0.07);
  --drop-modal:drop-shadow(0 8px 20px rgba(50,35,0,0.14));
  --clip-sm:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%);
  --clip-md:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%);
  --clip-lg:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,0 100%);
  --t-fast:0.15s ease;
  --font-sans:'Plus Jakarta Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  /* Tool-local: the compound card fill. A near-white lifted off --page so the
     map's nodes read as cards on the parchment. Not an app token. */
  --node:#fffcf6;
  --sb:288px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;}
body{font-family:var(--font-sans);background:var(--page);color:var(--t-body);-webkit-font-smoothing:antialiased;line-height:1.5;}
a{color:inherit;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
/* The hidden attribute must win over any display rule (TOOLS-07: .dl's display:flex
   kept the pack button visible in the offline copy although it was marked hidden). */
[hidden]{display:none!important;}

/* Header - matches the app header (Header.tsx): parchment bar, logo left, CTA right */
.gmm-header{background:var(--page);box-shadow:var(--shadow-nav);position:sticky;top:0;z-index:300;}
.gmm-nav{max-width:1240px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:16px;}
.gmm-logo-link{display:flex;align-items:center;flex-shrink:0;}
.gmm-logo-link img{display:block;width:40px;height:40px;}
.gmm-nav-links{display:flex;gap:18px;margin-left:4px;}
.gmm-nav-links a{font-size:14px;font-weight:600;text-decoration:none;color:var(--t-mid);}
.gmm-nav-links a:hover{color:var(--primary);}
.gmm-nav-right{margin-left:auto;display:flex;align-items:center;gap:14px;}
.gmm-login{font-size:14px;font-weight:600;color:var(--t-head);text-decoration:none;}
.gmm-login:hover{color:var(--primary);}
.gmm-cta{background:var(--grad-nav-cta);color:#fff;font-size:14px;font-weight:600;padding:8px 18px 8px 14px;
  clip-path:var(--clip-sm);text-decoration:none;white-space:nowrap;transition:opacity var(--t-fast);}
.gmm-cta:hover{opacity:.9;}

/* Subscription strip - same offer and wording as SubscriptionBanner.tsx */
.gmm-sub{background:var(--primary-surface);color:#fff;}
.gmm-sub-in{max-width:1240px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;}
.gmm-sub-title{font-size:15px;font-weight:700;}
.gmm-sub-points{font-size:13px;color:rgba(255,255,255,0.85);flex:1;min-width:220px;}
.gmm-sub-cta{background:var(--page);color:var(--primary);font-weight:700;font-size:14px;padding:8px 18px;
  clip-path:var(--clip-sm);text-decoration:none;white-space:nowrap;transition:opacity var(--t-fast);}
.gmm-sub-cta:hover{opacity:.9;}
.gmm-sub-x{color:rgba(255,255,255,0.8);font-size:20px;line-height:1;padding:2px 6px;}

.gmm-breadcrumb{max-width:1240px;margin:0 auto;padding:12px 16px 0;font-size:13px;color:var(--t-mute);
  display:flex;gap:8px;flex-wrap:wrap;}
.gmm-breadcrumb a{color:var(--primary);text-decoration:none;}
.gmm-breadcrumb a:hover{text-decoration:underline;}

/* Title row with the download offer */
.tool-head{max-width:1240px;margin:0 auto;padding:10px 16px 14px;display:flex;gap:16px 28px;align-items:flex-end;flex-wrap:wrap;}
.tool-head-text{flex:1;min-width:260px;}
.tool-h1{font-size:28px;line-height:1.2;font-weight:800;color:var(--t-head);letter-spacing:-0.01em;}
.tool-lede{font-size:15px;color:var(--t-body);margin-top:6px;max-width:620px;}
.dl{display:flex;flex-direction:column;align-items:flex-start;gap:4px;}
.dl-btn{background:var(--primary-surface);color:#fff;font-size:15px;font-weight:700;padding:11px 22px;
  clip-path:var(--clip-sm);text-decoration:none;white-space:nowrap;transition:background var(--t-fast);}
.dl-btn:hover{background:var(--primary-h);}
.dl-note{font-size:12px;color:var(--t-mute);max-width:280px;}

/* The tool itself */
.app{max-width:1240px;margin:0 auto;padding:0 16px;}
.app-frame{height:min(80vh,860px);min-height:520px;display:flex;flex-direction:column;background:var(--page);
  box-shadow:inset 0 0 0 1px var(--r3);clip-path:var(--clip-lg);overflow:hidden;}
.bar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--r3);background:var(--r1);flex-wrap:wrap;}
.mode-tabs{display:flex;gap:2px;background:var(--page);padding:3px;clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--control-edge);}
.mtab{font-size:13px;font-weight:600;padding:6px 12px;color:var(--t-mid);transition:background var(--t-fast),color var(--t-fast);}
.mtab[aria-selected="true"]{background:var(--primary-surface);color:#fff;}
.bar-togs{display:flex;gap:6px;margin-left:auto;}
.tog{font-size:12px;font-weight:600;padding:6px 10px;color:var(--t-mid);background:var(--page);
  clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--control-edge);}
.tog[aria-pressed="true"]{background:var(--primary-dim);color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary);}
.sb-toggle{font-size:12px;font-weight:600;padding:6px 10px;color:var(--t-mid);background:var(--page);
  clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--control-edge);}
.body{display:flex;flex:1;min-height:0;}
.sb{width:var(--sb);flex-shrink:0;border-right:1px solid var(--r3);display:flex;flex-direction:column;min-height:0;background:var(--page);}
.sb.collapsed{display:none;}
.sb-head{padding:12px 14px;border-bottom:1px solid var(--r3);}
.sb-lbl{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);}
.sb-sub{font-size:13px;color:var(--t-mute);}
.sb-body{flex:1;overflow-y:auto;min-height:0;}
.pane{display:none;}.pane.on{display:block;}
.sec-tabs{display:flex;gap:4px;padding:10px 12px;border-bottom:1px solid var(--r3);flex-wrap:wrap;}
.stab{font-size:12px;font-weight:600;padding:5px 10px;color:var(--t-mid);background:var(--r1);clip-path:var(--clip-sm);}
.stab[aria-pressed="true"]{background:var(--primary-surface);color:#fff;}
.leg-wrap{padding:10px 14px;border-bottom:1px solid var(--r3);}
.leg-hd{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);margin-bottom:6px;}
.leg-row{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%;text-align:left;font-size:13px;color:var(--t-body);}
.leg-row[aria-pressed="false"]{opacity:.35;}
.leg-sw{width:24px;height:0;border-top:3px solid;flex-shrink:0;}
.map-info{padding:10px 14px;font-size:13px;color:var(--t-mute);line-height:1.7;}
.map-info b{color:var(--t-head);display:block;}
.key-line{display:inline-block;width:22px;border-top:2px solid var(--t-mid);vertical-align:middle;margin-right:6px;}
.key-line.dash{border-top-style:dashed;}

.rp-hd{display:flex;align-items:center;gap:8px;padding:10px 14px;}
.rp-badge{font-size:11px;font-weight:700;letter-spacing:.06em;background:var(--primary-surface);color:#fff;padding:3px 8px;clip-path:var(--clip-sm);}
.rp-hdtxt{font-size:13px;color:var(--t-mute);}
.rp-body{padding:0 14px 12px;display:flex;flex-direction:column;gap:8px;}
.rp-sel{width:100%;padding:10px;font:inherit;font-size:14px;color:var(--t-head);background:var(--node);border:none;
  box-shadow:inset 0 0 0 1px var(--control-edge);clip-path:var(--clip-sm);}
.rp-hint{font-size:12px;color:var(--t-mute);}
.rp-cur{padding:12px 14px;border-bottom:1px solid var(--r3);}
.rp-curlbl{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);margin-bottom:6px;}
.rp-curpill{display:inline-flex;flex-direction:column;background:var(--primary-dim);box-shadow:inset 0 0 0 2px var(--primary);padding:8px 14px;clip-path:var(--clip-sm);}
.rp-curname{font-size:15px;font-weight:700;color:var(--primary);}
.rp-curform{font-family:var(--font-mono);font-size:12px;color:var(--t-mute);}
.rp-opts{padding:0 14px 10px;display:flex;flex-direction:column;gap:6px;}
.rp-opt{width:100%;padding:10px 12px;text-align:left;background:var(--node);box-shadow:inset 0 0 0 1px var(--r3);clip-path:var(--clip-sm);transition:box-shadow var(--t-fast);}
.rp-opt:hover{box-shadow:inset 0 0 0 2px var(--primary);}
.rp-opt-name{display:block;font-size:14px;font-weight:700;color:var(--t-head);}
.rp-opt-form{font-family:var(--font-mono);font-size:11px;color:var(--t-mute);font-weight:400;margin-left:4px;}
.rp-opt-rxn{display:inline-block;font-size:11px;font-weight:700;color:#fff;padding:2px 6px;margin:4px 0;}
.rp-opt-r{display:block;font-family:var(--font-mono);font-size:12px;color:var(--t-mid);}
.rp-end{padding:8px 0;font-size:13px;font-weight:700;color:var(--sage);}
.rp-pathlist{border-top:1px solid var(--r3);padding:10px 14px;}
.rp-path-hd{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);margin-bottom:6px;}
.rp-ps{display:flex;gap:8px;}
.rp-pline{width:14px;display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.rp-pdot{width:10px;height:10px;border-radius:50%;margin-top:9px;flex-shrink:0;}
.rp-pvl{width:2px;flex:1;min-height:8px;opacity:.45;}
.rp-pc{flex:1;padding:5px 0 7px;border-bottom:1px solid var(--r2);}
.rp-pname{font-size:14px;font-weight:700;}
.rp-parr{font-size:12px;color:var(--t-mute);}
.rp-ctrl{display:flex;gap:6px;padding:10px 14px;border-top:1px solid var(--r3);flex-wrap:wrap;}
.rp-done-hd{padding:14px 14px 4px;font-size:17px;font-weight:700;color:var(--sage);}
.rp-sum{padding:0 14px 10px;font-size:14px;color:var(--t-body);}
.empty{padding:14px;font-size:13px;color:var(--t-mute);}
.btn{padding:8px 14px;font-size:13px;font-weight:700;clip-path:var(--clip-sm);transition:background var(--t-fast),color var(--t-fast);}
.btn-primary{background:var(--primary-surface);color:#fff;}.btn-primary:hover{background:var(--primary-h);}
.btn-ghost{background:var(--page);color:var(--t-mid);box-shadow:inset 0 0 0 1px var(--control-edge);}.btn-ghost:hover{color:var(--t-head);}

.quiz-body,.exam-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px;}
.scoreboard{display:flex;justify-content:space-around;padding:8px;background:var(--r1);clip-path:var(--clip-sm);}
.sbi{text-align:center;}.sbv{font-size:20px;font-weight:800;color:var(--t-head);}.sbv.g{color:var(--sage);}.sbv.b{color:var(--rust);}
.sblbl{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);}
.lbl-sm{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);margin-bottom:5px;}
.diff-row{display:flex;gap:4px;}
.diff-btn{flex:1;padding:7px;font-size:12px;font-weight:600;color:var(--t-mid);background:var(--page);clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--control-edge);}
.diff-btn[aria-pressed="true"]{background:var(--primary-surface);color:#fff;box-shadow:none;}
.qstep{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);text-align:center;}
.qprompt{background:var(--r1);padding:10px 12px;clip-path:var(--clip-sm);}
.qfromto{font-size:15px;font-weight:700;color:var(--t-head);}
.qrxt{font-size:12px;color:var(--t-mute);margin-top:2px;}
.qopts{display:flex;flex-direction:column;gap:6px;}
.qopt{width:100%;padding:9px 10px;display:flex;align-items:flex-start;gap:8px;text-align:left;font-family:var(--font-mono);font-size:13px;
  color:var(--t-head);background:var(--node);clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--r3);}
.qopt:hover:not(:disabled){box-shadow:inset 0 0 0 2px var(--primary);}
.qopt:disabled{cursor:default;}
.qbadge{flex-shrink:0;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);
  font-size:11px;font-weight:700;background:var(--r2);color:var(--t-mid);}
.qopt.correct,.qopt.reveal{background:var(--sage-dim);box-shadow:inset 0 0 0 2px var(--sage);}
.qopt.correct .qbadge,.qopt.reveal .qbadge{background:var(--sage);color:#fff;}
.qopt.wrong{background:var(--rust-dim);box-shadow:inset 0 0 0 2px var(--rust);}
.qopt.wrong .qbadge{background:var(--rust);color:#fff;}
.qfb{padding:9px 12px;font-size:13px;display:none;}
.qfb.show{display:block;}.qfb.ok{background:var(--sage-dim);color:var(--sage);box-shadow:inset 3px 0 0 var(--sage);}
.qfb.bad{background:var(--rust-dim);color:var(--rust);box-shadow:inset 3px 0 0 var(--rust);}
.ecard{background:var(--node);padding:12px;box-shadow:inset 3px 0 0 var(--primary),inset 0 0 0 1px var(--r3);clip-path:var(--clip-md);}
.ecard-hd{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;}
.ecard-type{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);}
.emarks{font-size:12px;font-weight:700;color:var(--t-mid);}
.eqtxt{font-size:14px;color:var(--t-head);margin-bottom:8px;}
.eans{width:100%;min-height:80px;padding:8px;font:inherit;font-size:13px;color:var(--t-head);background:var(--page);border:none;resize:vertical;
  box-shadow:inset 0 0 0 1px var(--control-edge);}
.ereveal{margin-top:6px;width:100%;}
.emodel{display:none;margin-top:6px;padding:10px;font-size:13px;color:var(--t-body);background:var(--sage-dim);box-shadow:inset 3px 0 0 var(--sage);}
.emodel.show{display:block;}.emodel strong{color:var(--sage);}

/* Canvas */
.cw{flex:1;position:relative;overflow:hidden;background:var(--page);cursor:grab;touch-action:none;min-width:0;}
.cw.dragging{cursor:grabbing;}
#svgMap{position:absolute;inset:0;width:100%;height:100%;}
.zoom-wrap{position:absolute;bottom:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:5;}
.zbtn{width:38px;height:38px;font-size:18px;font-weight:700;color:var(--t-head);background:var(--node);
  clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--control-edge);}
.zbtn:hover{background:var(--r1);}
.zoom-badge{position:absolute;bottom:12px;left:12px;font-size:12px;color:var(--t-mid);background:var(--node);padding:4px 8px;
  clip-path:var(--clip-sm);box-shadow:inset 0 0 0 1px var(--r3);pointer-events:none;z-index:5;}
.node{cursor:pointer;}
.node:focus{outline:none;}
.node:focus-visible .node-ring{stroke:var(--primary);stroke-width:2.5;opacity:1;}

/* Reaction detail modal */
.modal-overlay{position:fixed;inset:0;background:rgba(42,36,32,0.45);z-index:500;display:none;}
.modal-overlay.show{display:block;}
.modal-shell{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:501;width:min(480px,calc(100vw - 32px));
  display:none;filter:var(--drop-modal);}
.modal-shell.show{display:block;}
.modal{background:var(--page);clip-path:var(--clip-md);max-height:84vh;display:flex;flex-direction:column;}
.modal-hdr{padding:16px 52px 12px 18px;border-bottom:1px solid var(--r3);position:relative;}
.modal-name{font-size:19px;font-weight:800;color:var(--t-head);}
.modal-form{font-family:var(--font-mono);font-size:13px;color:var(--t-mute);}
.modal-sub{font-size:13px;color:var(--t-mute);margin-top:2px;}
.modal-x{position:absolute;top:12px;right:14px;width:32px;height:32px;font-size:20px;color:var(--t-mid);background:var(--r1);clip-path:var(--clip-sm);}
.modal-x:hover{background:var(--r2);color:var(--t-head);}
.modal-tabs{display:flex;border-bottom:1px solid var(--r3);}
.modal-tab{flex:1;padding:10px;font-size:13px;font-weight:700;color:var(--t-mute);box-shadow:inset 0 -2px 0 transparent;}
.modal-tab[aria-selected="true"]{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary);}
.modal-body{overflow-y:auto;padding:14px 18px 18px;}
.modal-sec-hd{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t-mute);margin:14px 0 8px;}
.modal-sec-hd:first-child{margin-top:0;}
.rxn-card{display:block;width:100%;text-align:left;padding:10px 12px;margin-bottom:8px;background:var(--node);clip-path:var(--clip-sm);
  box-shadow:inset 0 0 0 1px var(--r3);}
.rxn-card:hover{box-shadow:inset 0 0 0 2px var(--primary);}
.rxn-name{font-size:14px;font-weight:700;}
.rxn-to{font-size:13px;color:var(--primary);margin:2px 0 6px;}
.rxn-row{display:flex;gap:8px;font-size:13px;margin-bottom:2px;}
.rxn-lbl{width:84px;flex-shrink:0;font-weight:700;color:var(--t-mute);}
.rxn-val{font-family:var(--font-mono);color:var(--t-head);}
.badges{display:flex;gap:4px;margin-top:6px;}
.badge{font-size:11px;font-weight:700;padding:2px 7px;}
.badge.as{background:var(--sage-dim);color:var(--sage);}
.badge.a2{background:var(--amber-dim);color:var(--amber);}
.badge.core{background:var(--primary-dim);color:var(--primary);}
.badge.ext{background:var(--r2);color:var(--t-mid);}
.link{color:var(--primary);font-weight:600;text-decoration:underline;}
.big-val{font-family:var(--font-mono);font-size:16px;font-weight:700;color:var(--t-head);margin-bottom:12px;}

/* Text equivalent of the map */
.list-sec{max-width:1240px;margin:28px auto 0;padding:0 16px;}
.list-sec h2{font-size:20px;font-weight:800;color:var(--t-head);margin-bottom:4px;}
.list-sec p{font-size:14px;color:var(--t-body);margin-bottom:12px;}
.list-sec h3{font-size:15px;font-weight:700;color:var(--t-head);margin:18px 0 6px;}
.tbl-wrap{overflow-x:auto;}
table.rxn-tbl{border-collapse:collapse;width:100%;font-size:13px;min-width:720px;}
.rxn-tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute);padding:6px 8px;border-bottom:2px solid var(--r3);}
.rxn-tbl td{padding:6px 8px;border-bottom:1px solid var(--r2);vertical-align:top;color:var(--t-head);}
.rxn-tbl td.mono{font-family:var(--font-mono);font-size:12px;}
.sw-inline{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:middle;}

/* Footer - Important Notice + site links, the PageFooter pair for a static page */
.gmm-footer{margin-top:40px;border-top:1px solid var(--r3);}
.gmm-footer-in{max-width:1240px;margin:0 auto;padding:24px 16px 32px;display:flex;flex-direction:column;gap:18px;}
.gmm-notice{background:var(--amber-dim);box-shadow:inset 3px 0 0 var(--amber);padding:12px 14px;}
.gmm-notice-title{font-size:13px;font-weight:700;color:var(--amber);}
.gmm-notice-text{font-size:13px;color:var(--t-body);}
.gmm-footer-cta{background:var(--chrome-bg);color:#fff;padding:22px;display:flex;gap:18px;align-items:center;flex-wrap:wrap;clip-path:var(--clip-lg);}
.gmm-footer-cta-text{flex:1;min-width:240px;}
.gmm-footer-headline{font-size:20px;font-weight:800;}
.gmm-footer-sub{font-size:14px;color:rgba(255,255,255,0.8);margin-top:4px;}
.gmm-footer-btn{background:var(--page);color:var(--primary);font-weight:700;font-size:14px;padding:10px 20px;clip-path:var(--clip-sm);text-decoration:none;white-space:nowrap;}
.gmm-footer-bar{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--t-mute);}
.gmm-footer-bar a{color:var(--primary);text-decoration:none;font-weight:600;}

@media (max-width:760px){
  .gmm-nav-links{display:none;}
  .gmm-sub-points{display:none;}
  .gmm-sub-in{padding:8px 16px;}
  .tool-h1{font-size:23px;}
  .app{padding:0;}
  .app-frame{height:calc(100vh - 64px);min-height:560px;clip-path:none;box-shadow:inset 0 1px 0 var(--r3),inset 0 -1px 0 var(--r3);/* clip-shadow-ok: clip-path is none here, so the inset hairlines render */}
  .body{flex-direction:column-reverse;}
  .sb{width:100%;height:48%;border-right:none;border-top:1px solid var(--r3);}
  .bar-togs{margin-left:0;}
  .mtab{padding:6px 9px;}
  .modal-shell{top:auto;bottom:0;left:0;transform:none;width:100%;filter:none;}
  .modal{clip-path:none;border-top-left-radius:20px;border-top-right-radius:20px;max-height:85vh;}
}
@media print{
  .gmm-header,.gmm-sub,.gmm-breadcrumb,.dl,.bar,.sb,.zoom-wrap,.zoom-badge,.gmm-footer-cta,.modal-shell,.modal-overlay{display:none!important;}
  body{background:#fff;}
  .app-frame{height:auto;min-height:0;box-shadow:none;clip-path:none;/* clip-shadow-ok: this rule removes both the clip and the shadow */}
  .cw{height:170mm;flex:none;}
  .list-sec{page-break-before:always;}
}
/* Offline mode (TOOLS-07): the copy inside the paid pack zip. The build script
   adds class="offline" to <html>. No site header, offer strip or breadcrumb
   (the buyer already has the pack); a large logo instead; the footer stays. */
.offline-brand{display:none;}
html.offline .gmm-header,html.offline .gmm-sub,html.offline .gmm-breadcrumb{display:none!important;}
html.offline .offline-brand{display:flex;align-items:stretch;gap:16px;max-width:1240px;margin:0 auto;padding:24px 16px 4px;}
html.offline .offline-brand img{display:block;width:120px;height:120px;}
/* Founder, 2026-09-30: the call to action sits in line with the logo in the
   offline copy, not in the footer. */
html.offline .offline-brand .gmm-footer-cta{flex:1;min-width:0;}
html.offline .gmm-footer .gmm-footer-cta{display:none;}
@media (max-width:760px){
  html.offline .offline-brand{flex-direction:column;}
  html.offline .offline-brand img{width:96px;height:96px;}
}

/* Embed mode (TOOLS-06): inside the app page's iframe. Fixed pixel heights,
   because vh inside an iframe that grows to fit its content would grow forever. */
html.embed .gmm-header,html.embed .gmm-sub,html.embed .gmm-breadcrumb,html.embed .tool-head,html.embed .gmm-footer{display:none!important;}
html.embed body{background:var(--page);}
html.embed .app{padding:0;max-width:none;}
html.embed .app-frame{height:640px;min-height:0;position:relative;}
html.embed .list-sec{max-width:none;padding:0 2px;margin-top:24px;}
html.embed .modal-overlay{position:absolute;}
html.embed .modal-shell{position:absolute;}
html.embed .modal{max-height:560px;}
@media (max-width:760px){
  html.embed .app-frame{height:600px;clip-path:none;}
  html.embed .modal-shell{top:auto;bottom:0;left:0;transform:none;width:100%;}
  html.embed .modal{max-height:520px;}
}

/* TOOLS-ENGINE additions: cycle tools */
.board-row{padding:10px 14px;border-bottom:1px solid var(--r2);}
.node-about{font-size:14px;color:var(--t-body);line-height:1.6;margin-bottom:12px;}
.edge-detail{font-size:14px;color:var(--t-body);line-height:1.6;}
.spec-note{margin-top:14px;padding:10px 12px;font-size:13px;line-height:1.6;color:var(--t-head);background:var(--amber-dim);box-shadow:inset 3px 0 0 var(--amber);}
.spec-note b{color:var(--amber);}
.qwhy{margin-top:6px;color:var(--t-body);font-size:13px;line-height:1.55;}
mark.bw{background:var(--primary-dim);color:var(--t-head);padding:0 2px;box-shadow:inset 0 -1px 0 var(--primary);}
.wording-note{margin-top:10px;font-size:12px;color:var(--t-mute);}
.count-tbl{border-collapse:collapse;width:100%;font-size:13px;margin:6px 0 10px;}
.count-tbl th,.count-tbl td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--r2);vertical-align:top;color:var(--t-head);}
.count-tbl th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute);border-bottom:2px solid var(--r3);}
.count-sec{padding:10px 14px;font-size:13px;color:var(--t-body);line-height:1.6;}
.count-sec b{color:var(--t-head);}
