/* ==== gg token system (the deliverable): CSS custom properties, dark default ==== */
.ggf{
--bg:#0f1417;--s1:#141b20;--s2:#19232a;--line:#233038;--line2:#31434d;
--fg:#d8e2e7;--fg2:#9fb1b9;--fg3:#647880;
--acc:#4cb8c4;--acc2:#7cd2dc;--accbg:rgba(76,184,196,.13);--accln:rgba(76,184,196,.45);
--chS:52%;--chL:58%;--chipInk:#0c1114;
--a0:#f2a35c;--a1:#c98a52;--a2:#8c7358;--a3:#56656d;
--sk:#7bb0f2;--st:#e3c07b;--ss:#8fcf9d;--sc:#5c7480;--sf:#b79ce0;--sn:#e6a17a;
--addbg:rgba(78,190,140,.12);--addgut:rgba(78,190,140,.2);--addmk:#57c98e;
--delbg:rgba(224,115,111,.1);--delgut:rgba(224,115,111,.18);--delmk:#e0736f;
--hunkbg:rgba(76,184,196,.08);--hunkfg:#7fa2ab;
--mono:ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;
background:var(--bg);color:var(--fg);color-scheme:dark}
.ggf[data-theme="light"]{
--bg:#ffffff;--s1:#f2f5f6;--s2:#e9eef0;--line:#dbe3e6;--line2:#c3cfd4;
--fg:#18242a;--fg2:#46575f;--fg3:#6d7f87;
--acc:#177f8c;--acc2:#0e5f6a;--accbg:rgba(23,127,140,.1);--accln:rgba(23,127,140,.4);
--chS:60%;--chL:37%;--chipInk:#ffffff;
--a0:#c9661c;--a1:#a86c36;--a2:#89704f;--a3:#7e8d95;
--sk:#1d61b5;--st:#8a5a12;--ss:#2c7a4d;--sc:#71838c;--sf:#6a45a8;--sn:#b3562a;
--addbg:#e6f6ee;--addgut:#cfeeda;--addmk:#1c8a52;
--delbg:#fdecea;--delgut:#f6d5d0;--delmk:#c0433c;
--hunkbg:#e8f3f5;--hunkfg:#4b6d75;
color-scheme:light}
.ggf .k{color:var(--sk)}.ggf .t{color:var(--st)}.ggf .s{color:var(--ss)}
.ggf .c{color:var(--sc);font-style:italic}.ggf .f{color:var(--sf)}.ggf .n{color:var(--sn)}
.ggf a{color:var(--acc)}.ggf a:hover{color:var(--acc2)}
/* ==== gg component classes (map 1:1 to the maud partials) ==== */
.gnav{display:flex;align-items:center;gap:14px;padding:8px 12px;background:var(--s1);border-bottom:1px solid var(--line)}
.gbrand{display:inline-flex;align-items:center;font-family:var(--mono);font-weight:700;font-size:14px;letter-spacing:-.02em;color:var(--fg);text-decoration:none}
.gbrand:hover{color:var(--fg);text-decoration:none}
.gdot{display:inline-block;width:5px;height:5px;background:var(--acc);margin-left:3px}
.gfind{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--s2);border-radius:4px;padding:4px 9px;color:var(--fg3);font-size:12px;min-width:230px}
.gkbd{border:1px solid var(--line2);border-radius:3px;padding:0 5px;font-family:var(--mono);font-size:10.5px;color:var(--fg3)}
.gthm{display:inline-flex;align-items:center;gap:6px;background:var(--s2);border:1px solid var(--line);color:var(--fg2);border-radius:4px;padding:4px 9px;font-size:11.5px;cursor:pointer;font-family:inherit}
.gthm:hover{border-color:var(--line2);color:var(--fg)}
.gava{width:22px;height:22px;border-radius:4px;display:inline-grid;place-items:center;font-family:var(--mono);font-size:10px;font-weight:700;color:var(--acc2);background:var(--accbg);border:1px solid var(--accln);flex:none}
.gava.sm{width:16px;height:16px;font-size:8.5px;border-radius:3px}
.gava.bot{color:var(--fg2);background:var(--s2);border:1px dashed var(--line2)}
.gbadge{font-size:9px;letter-spacing:.07em;text-transform:uppercase;border:1px solid var(--line2);padding:1px 4px;border-radius:2px;color:var(--fg3);white-space:nowrap}
.gsig{color:var(--ss);font-size:10px;white-space:nowrap}
.gtool{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--fg2);background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:3px 8px;text-decoration:none;cursor:pointer;font-family:inherit}
.gtool:hover{border-color:var(--line2);color:var(--fg);text-decoration:none}
.gtool.on{color:var(--acc2);background:var(--accbg);border-color:var(--accln)}
.gchip{display:inline-flex;align-items:stretch;font-family:var(--mono);font-size:10.5px;line-height:1;border:1px solid hsl(var(--h) var(--chS) var(--chL)/.5);border-radius:3px;overflow:hidden;text-decoration:none;white-space:nowrap;flex:none}
a.gchip:hover{text-decoration:none;border-color:hsl(var(--h) var(--chS) var(--chL))}
.gchip .o{background:var(--s2);padding:3px 5px;color:var(--fg3)}
.gchip .p{background:hsl(var(--h) var(--chS) var(--chL));color:var(--chipInk);padding:3px 4px;font-weight:700}
.gchip .r{background:hsl(var(--h) var(--chS) var(--chL)/.14);padding:3px 5px;color:var(--fg)}
.gcrumb{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12.5px;color:var(--fg3);flex-wrap:wrap}
.gcrumb a{color:var(--fg2);text-decoration:none}
.gcrumb a:hover{color:var(--acc)}
.gref{color:var(--acc2);background:var(--accbg);border:1px solid var(--accln);border-radius:3px;padding:1px 7px;font-size:11px}
.gbar{display:flex;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--line);background:var(--s1);flex-wrap:wrap}
.gmeta{font-family:var(--mono);font-size:11px;color:var(--fg3)}
.gmeta b{color:var(--fg2);font-weight:600}
.gfoot{display:flex;align-items:center;gap:14px;padding:6px 12px;border-top:1px solid var(--line);background:var(--s1);font-family:var(--mono);font-size:10.5px;color:var(--fg3);flex-wrap:wrap}
.gfoot b{color:var(--fg2);font-weight:600}
.gln{display:grid;grid-template-columns:3.2em 1fr;font-family:var(--mono);font-size:12.5px;line-height:1.6}
.gln:hover{background:var(--s1)}
.gln .no{text-align:right;padding:0 10px;color:var(--fg3);user-select:none}
.gln .cd{white-space:pre;padding:0 14px}
.gln.hit,.gln:target{background:var(--accbg);box-shadow:inset 2px 0 0 var(--acc)}
.gln.hit .no,.gln:target .no{color:var(--acc2)}
.drow{display:grid;grid-template-columns:44px 44px 1fr;font-family:var(--mono);font-size:12px;line-height:1.6}
.drow .o,.drow .n{text-align:right;padding:0 8px;color:var(--fg3);user-select:none}
.drow .o{border-right:1px solid var(--line)}
.drow .c2{white-space:pre;padding:0 12px}
.drow.add{background:var(--addbg)}
.drow.add .o,.drow.add .n{background:var(--addgut)}
.drow.add .mk{color:var(--addmk)}
.drow.del{background:var(--delbg)}
.drow.del .o,.drow.del .n{background:var(--delgut)}
.drow.del .mk{color:var(--delmk)}
.drow.hk .c2{color:var(--hunkfg)}
.drow.hk{background:var(--hunkbg)}
.gprose{padding:18px 22px;max-width:72ch;font-size:13px;line-height:1.65;color:var(--fg2)}
.gprose h1{font-size:20px;letter-spacing:-.02em;margin:0 0 2px;font-weight:650;color:var(--fg)}
.gprose h2{font-size:14.5px;margin:18px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line);font-weight:600;color:var(--fg)}
.gprose p{margin:7px 0}
.gprose code{font-family:var(--mono);font-size:.85em;background:var(--s2);border:1px solid var(--line);border-radius:3px;padding:.05em .35em;color:var(--fg)}
.gprose pre{background:var(--s2);border:1px solid var(--line);border-radius:4px;padding:10px 12px;overflow-x:auto;margin:8px 0}
.gprose pre code{border:0;background:transparent;padding:0;font-size:12px}
.gprose ul{margin:6px 0;padding-left:20px}
.gprose li{margin:3px 0}
.gsub{font-family:var(--mono);color:var(--acc2);font-size:12.5px;margin:0 0 10px}
:focus-visible{outline:2px solid #4cb8c4;outline-offset:2px;border-radius:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
