:root{color-scheme:dark;--glee-bg:#000000;--glee-bg-2:#05080B;--glee-panel:#090F14;--glee-raise:#121A21;--glee-line:#1C252C;--glee-line-soft:#141C22;--glee-text:#E9E7E2;--glee-dim:#BAC1C9;--glee-faint:#859099;--glee-accent:#C9A96B;--glee-accent-2:#4A8CFF;--glee-green:#3ECFB6;--glee-red:#E15A5A;--glee-cyan:#4A8CFF;--glee-gold:#C9A96B;--glee-purple:#A86CFF;--glee-amber:#F5B74E;--glee-radius:10px;--glee-gap:14px;--glee-pad:16px;--glee-font:ui-monospace,'Cascadia Code','SF Mono',Menlo,Consolas,monospace;--glee-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--glee-glow:0 0 22px;--glee-shadow:0 18px 60px rgba(0,0,0,.5);--glee-grid:rgba(233,231,226,.028);--glee-card:var(--glee-panel);--line:#1C252C;--blue:#4A8CFF;--green:#3ECFB6;--gold:#C9A96B;--red:#E15A5A}[data-style-pack="warm"]{--glee-bg:#15110b;--glee-bg-2:#1b150d;--glee-panel:#211a10;--glee-raise:#2a2113;--glee-line:#3a2f1c;--glee-line-soft:#2b2213;--glee-text:#f0e4cf;--glee-dim:#b99e76;--glee-faint:#7c6843;--glee-accent:#e9a23b;--glee-accent-2:#c97d3a;--glee-green:#9bbf5a;--glee-radius:7px;--glee-card:linear-gradient(180deg,var(--glee-panel),var(--glee-bg-2));--glee-grid:rgba(233,162,59,.06)}[data-style-pack="starlit"]{--glee-bg:#0a0c18;--glee-bg-2:#0e1226;--glee-panel:#141a32;--glee-raise:#1a2240;--glee-line:#283358;--glee-line-soft:#1d2647;--glee-text:#eef0fb;--glee-dim:#9aa6d4;--glee-faint:#5a648f;--glee-accent:#f0d08a;--glee-accent-2:#8fb4ff;--glee-cyan:#86c7ff;--glee-radius:12px;--glee-font:'Iowan Old Style',Georgia,serif;--glee-grid:rgba(143,180,255,.06)}[data-style-pack="signal"]{--glee-bg:#05070a;--glee-bg-2:#080c12;--glee-panel:#0c1219;--glee-raise:#101822;--glee-line:#1a2632;--glee-line-soft:#131c26;--glee-text:#eafaff;--glee-dim:#86a0b0;--glee-faint:#4d6573;--glee-accent:#3be8ff;--glee-accent-2:#5ba8ff;--glee-green:#39e6a0;--glee-radius:6px;--glee-glow:0 0 26px;--glee-grid:rgba(59,232,255,.07)}[data-style-pack="field"]{--glee-bg:#14140f;--glee-bg-2:#191a12;--glee-panel:#1f2017;--glee-raise:#26281c;--glee-line:#3a3c2b;--glee-line-soft:#2c2e20;--glee-text:#ece7d3;--glee-dim:#aaa888;--glee-faint:#6f6e52;--glee-accent:#c2a23f;--glee-accent-2:#8a9b5a;--glee-green:#8bb35a;--glee-radius:8px;--glee-glow:0 0 0;--glee-font:'Iowan Old Style',Georgia,serif;--glee-grid:rgba(194,162,63,.06)}body[data-mood="trust"]{--glee-font:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--glee-text:#e9e6de;--glee-grid:transparent;--glee-glow:0 0 0;--glee-gold:#b8b09a;--glee-accent:#b8b09a;--glee-radius:12px;--glee-pad:20px}body[data-mood="trust"] .os-main{max-width:1080px;margin:0 auto;width:100%;padding:28px 20px}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

    :root{--gm-focus:#D8C08A;--gm-instant:80ms;--gm-quick:140ms;--gm-standard:280ms;--gm-slow:450ms;--gm-ease-precise:cubic-bezier(0.2,0,0.1,1);--gm-ease-alive:cubic-bezier(0.23,1,0.32,1);--gm-ease-exit:cubic-bezier(0.4,0,1,1);--gm-lift-subtle:-2px;--gm-lift:-3px;--gm-lift-emphatic:-6px;--gm-scale-up-subtle:1.006;--gm-scale-up:1.015;--gm-scale-up-emphatic:1.022;--gm-nudge:2px;--gm-rise:6px;--gm-scale-down:0.985;--gm-scale-pickup:1.02;--gm-shadow-rest:0 0 0 rgba(0,0,0,0);--gm-shadow-subtle:0 4px 12px rgba(0,0,0,0.45);--gm-shadow-lift:0 10px 28px rgba(0,0,0,0.55);--gm-shadow-emphatic:0 20px 52px rgba(0,0,0,0.6);--gm-shadow-drag:0 18px 44px rgba(0,0,0,0.65)}.gm-subtle{--gm-lift:var(--gm-lift-subtle);--gm-scale-up:var(--gm-scale-up-subtle);--gm-shadow-lift:var(--gm-shadow-subtle)}.gm-emphatic{--gm-lift:var(--gm-lift-emphatic);--gm-scale-up:var(--gm-scale-up-emphatic);--gm-shadow-lift:var(--gm-shadow-emphatic)}.gm-hover-lift{transition:transform var(--gm-quick) var(--gm-ease-alive),box-shadow var(--gm-quick) var(--gm-ease-alive),border-color var(--gm-instant) var(--gm-ease-precise)}.gm-hover-lift:hover,.gm-hover-lift.is-lifted{transform:translateY(var(--gm-lift));box-shadow:var(--gm-shadow-lift)}.gm-hover-object{transition:transform var(--gm-quick) var(--gm-ease-alive),box-shadow var(--gm-quick) var(--gm-ease-alive),border-color var(--gm-instant) var(--gm-ease-precise);will-change:transform}.gm-hover-object:hover,.gm-hover-object.is-lifted{transform:translateY(var(--gm-lift)) scale(var(--gm-scale-up));box-shadow:var(--gm-shadow-lift)}.gm-hover-tint{transition:color var(--gm-instant) var(--gm-ease-precise),background-color var(--gm-instant) var(--gm-ease-precise),border-color var(--gm-instant) var(--gm-ease-precise)}.gm-press{transition:transform var(--gm-instant) var(--gm-ease-precise)}.gm-press:active{transform:scale(var(--gm-scale-down))}.gm-hover-lift.gm-press:active{transform:translateY(var(--gm-lift)) scale(var(--gm-scale-down))}.gm-hover-object.gm-press:active{transform:translateY(var(--gm-lift)) scale(var(--gm-scale-down))}.gm-focus-ring{transition:box-shadow var(--gm-instant) var(--gm-ease-precise),border-color var(--gm-instant) var(--gm-ease-precise)}.gm-focus-ring:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg,#000),0 0 0 4px var(--sand,var(--gm-focus))}.gm-expand{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--gm-standard) var(--gm-ease-alive),opacity var(--gm-standard) var(--gm-ease-alive);opacity:0}.gm-expand>.gm-expand-inner{overflow:hidden;min-height:0}.gm-expand.is-open,[data-gm-open="true"]>.gm-expand{grid-template-rows:1fr;opacity:1}@keyframes gm-enter-kf{from{opacity:0;transform:translateY(var(--gm-rise))}to{opacity:1;transform:translateY(0)}}@keyframes gm-exit-kf{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(calc(var(--gm-nudge) * -2))}}.gm-enter{animation:gm-enter-kf var(--gm-standard) var(--gm-ease-alive) both}.gm-exit{animation:gm-exit-kf var(--gm-quick) var(--gm-ease-exit) both}.gm-selectable{transition:border-color var(--gm-instant) var(--gm-ease-precise),box-shadow var(--gm-instant) var(--gm-ease-precise),background-color var(--gm-instant) var(--gm-ease-precise)}.gm-selectable.is-selected{border-color:var(--sand,var(--gm-focus));box-shadow:inset 0 0 0 1px var(--sand,var(--gm-focus))}.gm-drag-pickup{transform:scale(var(--gm-scale-pickup));box-shadow:var(--gm-shadow-drag);cursor:grabbing;transition:transform var(--gm-instant) var(--gm-ease-precise),box-shadow var(--gm-instant) var(--gm-ease-precise)}.gm-dragging{transition:none!important;will-change:transform}@keyframes gm-settle-kf{0%{transform:scale(var(--gm-scale-pickup))}60%{transform:scale(0.995)}100%{transform:scale(1)}}.gm-drop-settle{animation:gm-settle-kf var(--gm-standard) var(--gm-ease-alive) both}@keyframes gm-route-kf{from{opacity:0;transform:translateY(calc(var(--gm-nudge) * 2))}to{opacity:1;transform:translateY(0)}}.gm-route-in{animation:gm-route-kf var(--gm-standard) var(--gm-ease-alive) both}@keyframes gm-pulse-kf{0%,100%{opacity:0.45}50%{opacity:1}}.gm-pending{animation:gm-pulse-kf 1400ms var(--gm-ease-precise) infinite}.gm-progress>.gm-progress-fill{transition:width var(--gm-standard) var(--gm-ease-precise)}.gm-camera{transform:translate3d(var(--gm-cam-x,0),var(--gm-cam-y,0),0) scale(var(--gm-cam-scale,1));transform-origin:0 0;transition:transform var(--gm-slow) var(--gm-ease-precise)}.gm-camera.gm-camera-live{transition:none}@media (prefers-reduced-motion:reduce){.gm-hover-lift:hover,.gm-hover-lift.is-lifted,.gm-hover-object:hover,.gm-hover-object.is-lifted,.gm-press:active,.gm-hover-lift.gm-press:active,.gm-hover-object.gm-press:active,.gm-drag-pickup{transform:none!important}.gm-enter,.gm-exit,.gm-route-in,.gm-drop-settle{animation:none!important;opacity:1;transform:none!important}.gm-pending{animation:none!important;opacity:0.7}.gm-dragging{transform:revert!important}}
    *{box-sizing:border-box;margin:0;padding:0}
    html,body{height:100%}
    body{font-family:var(--glee-font);color:var(--glee-text);background:var(--glee-bg);
      background-image:linear-gradient(var(--glee-grid) 1px,transparent 1px),linear-gradient(90deg,var(--glee-grid) 1px,transparent 1px);
      background-size:48px 48px;-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}
    body:before{content:"";position:fixed;inset:0;z-index:-1;background:#000}
    a{color:inherit;text-decoration:none}
    .panel-label{font-family:var(--glee-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--glee-faint);margin-bottom:12px}
    
    /* Layout components */
    .app-chrome{position:sticky;top:0;z-index:5;border-bottom:1px solid var(--glee-line-soft);background:rgba(0,0,0,.88);backdrop-filter:blur(16px)}
    .app-bar{width:min(1180px,calc(100vw - 32px));height:58px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px}
    .brand{display:flex;align-items:center;gap:10px;color:var(--glee-text);text-decoration:none;font-weight:800}
    .brand b{color:var(--glee-accent)}
    .brand-mark{width:28px;height:28px;border:1px solid rgba(216,192,138,.45);border-radius:7px;display:grid;place-items:center;color:var(--glee-gold);background:var(--glee-panel)}
    .nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
    .nav a{min-height:34px;display:inline-flex;align-items:center;border-radius:6px;padding:0 10px;color:var(--glee-dim);text-decoration:none;font-size:.9rem;font-weight:500;transition:color .2s,background .2s}
    .nav a:hover{background:var(--glee-raise);color:var(--glee-text)}
    
    .platform-shell{width:min(1180px,calc(100vw - 32px));min-height:calc(100vh - 58px);margin:0 auto;padding:32px 0 64px}
    .panel{width:100%;border:1px solid var(--glee-line);border-radius:var(--glee-radius);background:var(--glee-panel);padding:32px;box-shadow:var(--glee-shadow);position:relative;overflow:hidden}
    .panel::before{content:"";position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.06),transparent)}
    .panel+.panel{margin-top:24px}
    
    /* UI Primitives */
    .eyebrow{margin:0 0 var(--glee-space-3);color:var(--glee-cyan);font-family:var(--glee-mono);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
    h1{max-width:780px;margin:0 0 8px;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--glee-text)}
    .lede{max-width:700px;margin:12px 0 28px;color:var(--glee-dim);font-size:1.05rem;line-height:1.6}
    
    .button, .btn {
      display:inline-flex;min-height:40px;align-items:center;justify-content:center;border-radius:6px;
      border:1px solid transparent;background:var(--glee-accent);color:var(--glee-bg)!important;font-weight:600;
      padding:0 18px;text-decoration:none;cursor:pointer;font-size:14px;font-family:var(--glee-font);
      box-shadow:0 2px 10px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.2);
      transition:transform 0.1s, filter 0.1s;
    }
    .button:hover, .btn:hover{filter:brightness(1.1);transform:translateY(var(--gm-lift))}
    .button:active, .btn:active{transform:translateY(0)}
    .button.secondary, .btn.ghost{border-color:var(--glee-line);background:var(--glee-raise);color:var(--glee-text)!important;box-shadow:none}
    .button.secondary:hover, .btn.ghost:hover{background:var(--glee-line-soft);border-color:var(--glee-faint)}
    
    .fine-print,.muted{color:var(--glee-faint);font-size:.85rem}
    .fine-print{margin-top:20px}
    .account-heading{display:flex;gap:16px;align-items:center;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--glee-line-soft)}
    .avatar{width:56px;height:56px;border:1px solid var(--glee-line);border-radius:10px;background:var(--glee-bg-2)}
    
    .field{display:grid;gap:8px;margin:0 0 16px}
    .field label{font-family:var(--glee-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--glee-dim)}
    .field input,.field textarea,.field select{width:100%;border:1px solid var(--glee-line);border-radius:6px;background:var(--glee-bg-2);color:var(--glee-text);padding:10px 14px;font:inherit;outline:none;transition:border-color 0.2s, box-shadow 0.2s}
    .field textarea{min-height:120px;resize:vertical;line-height:1.5}
    .field input:focus,.field textarea:focus,.field select:focus{border-color:var(--glee-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--glee-accent) 15%,transparent)}
    
    .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
    .masonry{columns:320px;column-gap:16px}
    .masonry>.card,.masonry>article,.masonry>section{break-inside:avoid;margin:0 0 16px;display:block}
    .wide-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.8fr);gap:24px}
    
    /* CANON: gm-hover-lift. Values come from the motion canon, not from here —
       retuning --gm-lift / --gm-quick moves every card on both stacks at once. */
    .card{min-height:142px;border:1px solid var(--glee-line-soft);border-radius:var(--glee-radius);background:var(--glee-card);padding:24px;transition:border-color var(--gm-instant) var(--gm-ease-precise),transform var(--gm-quick) var(--gm-ease-alive),box-shadow var(--gm-quick) var(--gm-ease-alive);display:flex;flex-direction:column;position:relative;overflow:hidden}
    .card::before{content:"";position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.03),transparent)}
    .card:hover{border-color:var(--glee-line);transform:translateY(var(--gm-lift));box-shadow:var(--gm-shadow-lift)}
    .card h2,.card h3{margin:0 0 8px;color:var(--glee-text);font-size:1.1rem;font-weight:600;letter-spacing:-.01em}
    .card p{margin:0 0 16px;color:var(--glee-dim);line-height:1.55;font-size:.95rem}
    
    .empty-state{text-align:center;padding:48px 24px;border:1px dashed var(--glee-line);border-radius:var(--glee-radius);background:color-mix(in srgb,var(--glee-bg-2) 40%,transparent)}
    .empty-state h3{color:var(--glee-text);margin-bottom:8px}
    .empty-state p{color:var(--glee-faint);margin-bottom:20px;font-size:.95rem}
    
    .status-pill{display:inline-flex;align-items:center;gap:6px;min-height:24px;border:1px solid color-mix(in srgb,var(--glee-green) 30%,transparent);border-radius:999px;padding:0 10px;color:var(--glee-green);background:color-mix(in srgb,var(--glee-green) 10%,transparent);font-size:.75rem;font-weight:700;font-family:var(--glee-mono);text-transform:uppercase;letter-spacing:.05em}
    .status-pill:before{content:"";width:6px;height:6px;border-radius:999px;background:var(--glee-green);box-shadow:0 0 6px var(--glee-green)}
    
    .link-list{display:grid;gap:10px}
    .link-list a{display:block;border:1px solid var(--glee-line);border-radius:6px;padding:12px 14px;color:var(--glee-text);text-decoration:none;background:var(--glee-bg-2);transition:border-color 0.15s, background 0.15s}
    .link-list a:hover{border-color:var(--glee-accent);background:var(--glee-raise)}
    .fine-status{color:var(--glee-faint);font-size:.85rem;font-family:var(--glee-mono)}
    
    details{border-top:1px solid var(--glee-line-soft);padding-top:16px}
    summary{list-style:none;cursor:pointer;font-weight:600;color:var(--glee-text)}
    summary::-webkit-details-marker{display:none}
    summary:after{content:"+";float:right;color:var(--glee-dim);font-family:var(--glee-mono)}
    details[open] summary:after{content:"-"}
    pre{font-family:var(--glee-mono);font-size:.85rem;line-height:1.5;background:var(--glee-bg-2);padding:16px;border-radius:6px;border:1px solid var(--glee-line);overflow-x:auto}
    .logout{display:inline-flex;margin-top:16px;color:var(--glee-faint);font-size:.9rem}
    .logout:hover{color:var(--glee-text)}
    .top-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
    
    @media (max-width:860px){
      .app-bar{height:auto;min-height:58px;align-items:flex-start;flex-direction:column;padding:12px 0}
      .nav{width:100%}
      .nav a{padding:0 8px}
      .grid,.wide-grid{grid-template-columns:1fr}
      .platform-shell{padding:20px 0 44px}
      .panel{padding:24px}
      h1{font-size:2rem}
    }
  

.jspace-panel{font-family:var(--glee-font);display:flex;flex-direction:column;gap:0}
.jsp-head{padding-bottom:11px;border-bottom:1px solid var(--glee-line-soft);margin-bottom:6px}
.jsp-kick{display:flex;align-items:center;justify-content:space-between;font-family:var(--glee-mono);
  font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--glee-faint);margin-bottom:8px}
.jsp-tier{color:var(--glee-accent);border:1px solid var(--glee-accent);border-radius:100px;padding:1px 7px;letter-spacing:.08em}
.jsp-intent{font-size:13.5px;font-weight:600;color:var(--glee-text);line-height:1.4;
  border-left:2px solid var(--glee-accent);padding-left:9px;margin-bottom:11px}
.jsp-intent.jsp-empty{color:var(--glee-faint);font-weight:400;font-style:italic;border-left-color:var(--glee-line)}
.jsp-conf{display:flex;align-items:center;gap:8px;font-family:var(--glee-mono);font-size:9.5px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--glee-dim)}
.jsp-meter{flex:1;height:4px;border-radius:100px;background:var(--glee-raise);overflow:hidden}
.jsp-meter i{display:block;height:100%;border-radius:100px;
  background:linear-gradient(90deg,var(--glee-red),var(--glee-gold) 55%,var(--glee-green))}
.jsp-conf b{color:var(--glee-green);font-weight:700}
.jsp-by{margin-top:7px;font-family:var(--glee-mono);font-size:9.5px;color:var(--glee-faint)}
.jsp-by .jsp-writer{color:var(--glee-dim)}
.jsp-fields{display:flex;flex-direction:column}
.jsp-f{display:grid;grid-template-columns:3px 1fr;gap:9px;padding:7px 0;align-items:start;
  border-top:1px solid var(--glee-line-soft)}
.jsp-f:first-child{border-top:0}
.jsp-stripe{border-radius:100px;align-self:stretch;background:var(--glee-line)}
.jsp-k{font-family:var(--glee-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--glee-faint);margin-bottom:2px}
.jsp-v{font-size:12px;color:var(--glee-text);line-height:1.42;word-break:break-word}
.jsp-v.jsp-empty{color:var(--glee-faint)}
.jsp-state .jsp-stripe{background:var(--glee-dim)} .jsp-state .jsp-k{color:var(--glee-dim)}
.jsp-assume .jsp-stripe{background:var(--glee-accent-2)} .jsp-assume .jsp-k{color:var(--glee-accent-2)}
.jsp-block .jsp-stripe{background:var(--glee-gold)} .jsp-block .jsp-k{color:var(--glee-gold)}
.jsp-ask .jsp-stripe{background:var(--glee-cyan)} .jsp-ask .jsp-k{color:var(--glee-cyan)}
.jsp-risk .jsp-stripe{background:var(--glee-red)} .jsp-risk .jsp-k{color:var(--glee-red)}
.jsp-rcpt .jsp-stripe{background:var(--glee-green)} .jsp-rcpt .jsp-k{color:var(--glee-green)}
.jsp-next .jsp-stripe{background:var(--glee-accent)} .jsp-next .jsp-k{color:var(--glee-accent)}
.jsp-hand .jsp-stripe{background:var(--glee-accent-2)} .jsp-hand .jsp-k{color:var(--glee-accent-2)}
.jsp-empty-note{margin-top:10px;font-size:11px;line-height:1.45;color:var(--glee-faint);font-style:italic}

/* OS Shell Chrome Overrides */
.os-top{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:14px;height:54px;padding:0 16px;
  background:color-mix(in srgb,var(--glee-bg) 86%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--glee-line-soft)}
.os-top .brand{font-weight:800;letter-spacing:.3em;text-indent:.3em;text-decoration:none}
.os-top .os-exit{font-size:12px;font-weight:600;color:var(--glee-dim);text-decoration:none;padding:6px 12px;border-radius:8px;border:1px solid var(--glee-line);margin-left:6px}
.os-top .os-exit:hover{color:var(--glee-text);border-color:var(--glee-accent)}
.os-top .brand b{color:var(--glee-accent)}
.os-top .cmd{flex:1;min-width:0;max-width:560px;background:var(--glee-bg-2);border:1px solid var(--glee-line);border-radius:8px;
  padding:8px 12px;color:var(--glee-dim);font-family:var(--glee-mono);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os-top .spacer{flex:1}
.os-top .av{display:inline-block;width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--glee-accent),var(--glee-accent-2))}
/* FiCiFi ("Find it, Change it, Fix it") -- universal visual-targeting overlay.
   Trigger sits in the persistent top bar, same relative position on every route
   (Captain: "usable from literally every site on glee, and in the same location so
   people know where it is"). Everything else is z-index-stacked above all page
   content while active, since it needs to draw over arbitrary page surfaces. */
.ficifi-trigger{background:none; border:1px solid var(--glee-line); color:var(--glee-dim);
  font-family:var(--glee-mono,monospace); font-size:11px; font-weight:700; letter-spacing:.04em;
  padding:6px 10px; border-radius:8px; cursor:pointer; margin-left:2px;
}
.ficifi-trigger:hover{color:#e05fd0; border-color:#e05fd0}
body.ficifi-active .ficifi-trigger{color:#e05fd0; border-color:#e05fd0; background:rgba(224,95,208,0.12)}
.ficifi-overlay{position:fixed; inset:0; z-index:9000; display:none}
body.ficifi-active .ficifi-overlay{display:block}
/* Dims the page so drawn boxes read clearly against it, but stays translucent enough
   that the user can still see and target the actual content underneath. */
.ficifi-draw-surface{position:absolute; inset:0; background:rgba(5,6,10,0.35); cursor:crosshair}
.ficifi-box{position:absolute; border:2px solid; border-radius:2px; pointer-events:none;
  box-shadow:0 0 0 1px rgba(0,0,0,0.4), 0 0 12px currentColor;
}
.ficifi-box-label{position:absolute; top:-20px; left:-2px; font-family:var(--glee-mono,monospace);
  font-size:10px; font-weight:700; padding:1px 5px; border-radius:3px 3px 0 0; color:#050608;
  background:currentColor; white-space:nowrap;
}
.ficifi-panel{position:absolute; top:16px; right:16px; bottom:16px; width:300px; max-width:calc(100vw - 32px);
  background:#0c0d12; border:1px solid rgba(224,95,208,0.35); border-radius:10px;
  display:flex; flex-direction:column; padding:12px; gap:8px; overflow:hidden;
  box-shadow:0 12px 32px rgba(0,0,0,0.5); color:#d8d8e0; font-family:var(--glee-mono,monospace);
}
.ficifi-panel-head{display:flex; align-items:center; justify-content:space-between; font-weight:800; color:#e05fd0}
.ficifi-panel-close{background:none; border:0; color:#d8d8e0; font-size:16px; cursor:pointer; line-height:1}
.ficifi-panel-hint{font-size:11px; color:#8a8a96; margin:0}
.ficifi-panel-list{flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:10px}
.ficifi-panel-item{border-left:3px solid; padding:6px 0 6px 8px; display:flex; flex-direction:column; gap:5px}
.ficifi-panel-item select{background:#15161d; color:#d8d8e0; border:1px solid #2a2a35; border-radius:5px;
  font-family:inherit; font-size:11px; padding:2px 4px; width:fit-content;
}
.ficifi-panel-item textarea{background:#15161d; color:#d8d8e0; border:1px solid #2a2a35; border-radius:5px;
  font-family:inherit; font-size:12px; padding:6px; resize:vertical; min-height:44px;
}
.ficifi-panel-item .ficifi-item-head{display:flex; align-items:center; gap:6px; font-size:11px; font-weight:700}
.ficifi-panel-item .ficifi-item-swatch{width:9px; height:9px; border-radius:50%; background:currentColor}
.ficifi-panel-actions{display:flex; gap:8px; justify-content:flex-end}
.ficifi-panel-actions button{background:none; border:1px solid #2a2a35; color:#d8d8e0; border-radius:6px;
  font-family:inherit; font-size:11px; padding:5px 10px; cursor:pointer;
}
#ficifi-submit{border-color:#e05fd0; color:#e05fd0}
#ficifi-submit:disabled{opacity:.4; cursor:not-allowed}
.ficifi-status{font-size:11px; color:#8a8a96; margin:0; min-height:14px}
.ficifi-status.ok{color:#39ff6a}
.ficifi-status.err{color:#ff5c5c}
/* body layout -- dock moved to a top strip (Captain 2026-07-04: "terminal file path,
   top not side"), so .os-body only needs main + inspector columns now. */
.os-body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--glee-gap);
  padding:var(--glee-gap);min-height:calc(100vh - 54px - 40px - 46px)}

/* ---------- Terminal tree dock -- matrix/hacker terminal aesthetic, top-positioned,
   sticky under the top bar. Deliberately its own green-phosphor palette (scoped to
   .terminal-tree only) rather than the platform's amber/blue brand colors -- this one
   component is meant to read as "you dropped into a real terminal," on purpose. ---------- */
.terminal-tree{
  --tt-green:#39ff6a; --tt-green-dim:#1c8f3c; --tt-bg:#050b05; --tt-line:rgba(57,255,106,0.18);
  /* Domain color palette -- Captain 2026-07-04: each top-level domain gets its own
     color, every descendant inherits it. Reuses hues already meaningful elsewhere in
     GLEE's palette (blue=intelligence, amber=focus/platform-accent, violet=
     speculative) plus cyan for the fourth domain, kept distinct from all three. */
  --tt-domain-0:#5b98d8; --tt-domain-1:#e7c384; --tt-domain-2:#8b7fde; --tt-domain-3:#4fd6d6;
  position:sticky; top:54px; z-index:5; background:var(--tt-bg);
  border-bottom:1px solid var(--tt-line); padding:3px 12px;
  font-family:var(--glee-mono); font-size:12px; line-height:1.4;
  box-shadow:0 8px 24px rgba(0,0,0,0.4), inset 0 0 40px rgba(57,255,106,0.03);
}
.terminal-tree::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:repeating-linear-gradient(0deg, rgba(57,255,106,0.025) 0 1px, transparent 1px 3px);
}
.m-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--glee-faint)}
.m-dot.live{background:var(--glee-green)} .m-dot.proto{background:var(--glee-accent)} .m-dot.planned{background:var(--glee-faint)}
/* Full mode: ASCII box-drawing tree (like the tree CLI command) -- capped height so
   even "expanded" never eats the whole screen, per Captain's feedback. */
/* Wraps the keypad grid. overflow must stay visible: the keypad's children need to be
   able to grow/wrap without being clipped; an earlier overflow:auto setting here
   silently broke a prior dropdown-based design even though the clipped element's own
   display/geometry looked correct in isolation (found via elementFromPoint hit-testing,
   not visible from computed style alone -- see receipt). */
/* overflow MUST stay fully visible here (no overflow-y:auto) -- this wraps the
   absolutely-positioned .tt-key-group overlay, and any overflow value other than
   visible clips it even though the group's own display/geometry looks correct in
   isolation. This is the SAME bug class caught earlier this session (see the
   elementFromPoint hit-testing note above) -- reintroduced once already when a later
   edit added max-height/overflow-y:auto to this same rule for vertical mode's sidebar
   scroll without scoping it away from horizontal mode. That scroll behavior now lives
   ONLY on body.nav-mode-full below, where the group is back in normal flow (position:
   static) and safe to clip/scroll. */
.nav-keypad-wrap{margin-top:3px; overflow:visible}
body.nav-mode-full .nav-keypad-wrap{max-height:56vh; overflow-y:auto}

/* View toggle -- Horizontal (default, .nav-mode-micro) vs Vertical (.nav-mode-full).
   One tree structure (renderDomainBar), two orientations via CSS only. Shrunk to
   single letters (Captain 2026-07-04: "can just become letters and smaller") and now
   sits directly at the top of the dock -- the old "$ cd desktop" breadcrumb row this
   used to share space with was removed entirely as redundant chrome. */
.tt-view-toggle{display:flex; gap:2px; background:var(--tt-bg);
  border:1px solid var(--tt-line); border-radius:5px; padding:2px; width:fit-content}
.tt-view-btn{background:none; border:0; color:var(--tt-green-dim); font-family:var(--glee-mono);
  font-weight:700; font-size:10.5px; min-width:16px; height:16px; padding:0; border-radius:3px; cursor:pointer}
.tt-view-btn:hover{color:var(--tt-green)}
.tt-view-btn.active{background:rgba(57,255,106,0.14); color:var(--tt-green)}
body.nav-mode-full .tt-keypad, body.nav-mode-full .tt-key-group{flex-direction:column; align-items:flex-start}
body.nav-mode-full .tt-key-node{flex-direction:column}
/* Vertical mode moves the whole dock to a left sidebar; horizontal mode (default)
   keeps it as a top strip. Captain 2026-07-04: "vertical should go on the left of the
   screen and horizontal should go along the top." position:fixed sidebar rather than
   restructuring the grid -- .os-body gets matching left margin so content doesn't run
   under it. Desktop-width only (matches the existing 880px collapse breakpoint) --
   narrow screens keep the top-strip layout in both modes, there's no room for a
   sidebar there. */
@media (min-width: 881px) {
  body.nav-mode-full .terminal-tree{
    position:fixed; top:54px; left:0; bottom:40px; width:230px; height:auto;
    border-bottom:none; border-right:1px solid var(--tt-line); overflow-y:auto;
  }
  body.nav-mode-full .os-body{margin-left:230px}
  body.nav-mode-full .os-body.has-rail{margin-left:0}
}

/* ---------- Keypad nav -- Captain 2026-07-04: "a menu like a keypad, when you click
   on it all the options pop up around it and the keypad gets more buttons" / "grid
   that grows like a calculator gaining rows." One flex-wrapping button grid; clicking
   a folder key reveals its children as MORE keys in the SAME grid (they wrap to a new
   row when the grid runs out of width) -- not a separate floating panel. Click-toggle,
   not hover (a keypad is pressed). Color signals expandability: amber = folder, green
   = leaf, consistent with the rest of the terminal-tree palette. ---------- */
/* Proximity type-out -- Captain 2026-07-04: "i like the buttons... when you move the
   mouse near the closest letter type out into full words." Buttons are back (chrome
   restored); the nearest key to the cursor (within a radius, see script below) types
   its abbreviation out into the full word letter-by-letter, then reverts when the
   cursor moves on to a new closest key. Replaces the separate cursor-tooltip approach
   -- the key itself is the readout now, not a floating label beside the mouse. */
/* Kept compact -- Captain 2026-07-04: "reduce the amount of space taken up." Smaller
   min-size/padding/gaps than a normal button row would use by default. */
.tt-keypad{display:flex; flex-wrap:wrap; align-items:flex-start; gap:6px; margin-top:2px; max-width:100%}
/* Each folder button + its children travel together as one unit. IMPORTANT: a wide
   expanded group used to be laid out IN-FLOW below the button inside this node, which
   made the whole node as WIDE as its widest expanded descendant -- that reserved width
   pushed sibling domain buttons far to the right even though nothing actually filled
   that space at the button's own row (Captain: "huge space... used for nothing").
   Fixed by taking the group out of flow (position:absolute) in horizontal mode so it
   can never affect a sibling's position -- it just overlays below its own button. */
.tt-key-node{position:relative; display:inline-flex}
/* The connecting line -- a left border + indent reading as "these belong to the
   button above," without reverting to a full vertical list. Still flex-wrap
   internally so a folder with many children stays compact/horizontal. */
/* Explicit width, not just max-width: an absolutely-positioned flex container with no
   width falls back to shrink-to-fit sizing, which (with flex-wrap) can collapse to the
   width of a single child -- every item then wraps onto its own row (one item, 7 rows
   tall) instead of packing several per row. width:max-content isn't right either (that
   would fit ALL children on one row, defeating wrap). A concrete width forces real
   wrapping at a sane row length. */
/* Width sized for 5 keys per row (Captain 2026-07-04: "we should have 5 per row then
   it makes a new row") -- ~30px per key (22px box + gap) x 5 = 150px, rounded up a
   little for longer 3-letter abbreviations. */
/* Solid-enough background panel behind an open group -- Captain 2026-07-04: "there
   needs to be a colored overlay when a letter is open... it should help the buttons
   be clearer." Without this the page content behind (ledger cards, images) bled
   through and made the open buttons hard to read. Tinted in the domain's own color at
   low alpha over a near-opaque dark base, so it reads as "this group belongs to this
   domain" AND blocks whatever is visually behind it. */
.tt-key-group{position:absolute; top:calc(100% + 5px); left:0; z-index:10;
  display:flex; flex-wrap:wrap; align-items:flex-start; gap:6px;
  width:172px; max-width:min(70vw, 480px);
  margin-left:8px; padding:8px 8px 6px 9px; border-left:2px solid var(--tt-accent, var(--tt-line));
  border-radius:0 6px 6px 0;
  background:color-mix(in srgb, var(--tt-accent, var(--tt-green-dim)) 16%, var(--tt-bg) 84%);
  box-shadow:0 10px 28px rgba(0,0,0,0.55);
}
/* Vertical mode: groups go back to normal flow (stack in-document, growing the
   sidebar downward) -- there's no sibling-pushing problem there since it's already a
   single column, and the sidebar's own solid background already prevents bleed-through. */
body.nav-mode-full .tt-key-group{position:static; width:auto; max-width:none; margin-top:4px;
  background:none; box-shadow:none; border-radius:0}
/* display:contents -- this span exists only to set --tt-accent for CSS custom
   property inheritance; it must not participate in the flex layout itself (a real
   box here would break .tt-keypad's flex-wrap row of key-nodes). */
.tt-domain-scope{display:contents}
/* FIXED width (not min-width) -- Captain 2026-07-04: "the rows act weird when a word
   expands the row and kicks one button to the next row... buttons stay attached to
   the row they start in." A flex item's box normally grows with its text content,
   which reflows every sibling after it once a proximity-expanded word gets long. A
   locked width + overflow:visible means the box that flex-wrap measures NEVER
   changes size regardless of textContent length -- the expanded word visually spills
   out past the button's own edge instead of resizing it, so siblings never move.
   left-aligned (not centered) so the overflow only ever extends rightward, one
   predictable direction, not growing both ways into two different neighbors. */
/* Single element again, natural sizing -- Captain 2026-07-04: "the button extends
   right into the other buttons when the word writes out... the buttons need to move
   as one grows." The previous fixed-anchor/overlay split deliberately prevented
   siblings from moving; that's exactly what's wrong now -- growth should PUSH
   neighbors over via ordinary flex-wrap resize, not overlay them in place. A smooth
   width transition makes that push read as an intentional move rather than a jump. */
.tt-key{display:inline-flex; align-items:center; justify-content:flex-start;
  min-width:24px; height:22px; padding:0 5px; border-radius:5px; text-decoration:none;
  font-weight:700; font-size:11.5px; font-family:var(--glee-mono); cursor:pointer;
  white-space:nowrap; position:relative;
  transition:border-color 0.15s ease, box-shadow 0.15s ease, min-width 0.15s ease;
}
.tt-key[aria-disabled]{opacity:.4; pointer-events:none}
/* Folders: solid border + tinted fill in the domain's color -- reads as "expandable."
   Leaves: same hue, no border/fill, dimmer -- reads as "destination, not a container."
   This is the "separate end paths from sub-domains by color" distinction, done via
   weight/fill within one shared hue rather than a second color axis. Leaf opacity
   raised from an earlier, too-dim 0.68 to 0.92 per Captain: "some of the buttons are
   very opacity high i can barely see them." */
.tt-key.tt-key-folder{color:var(--tt-accent, #e7c384); border:1px solid var(--tt-accent, var(--tt-line));
  background:color-mix(in srgb, var(--tt-accent, #e7c384) 12%, transparent)}
.tt-key.tt-key-folder:hover{box-shadow:0 0 6px var(--tt-accent, transparent)}
.tt-key.tt-key-leaf{color:var(--tt-accent, var(--tt-green-dim)); opacity:.92; border:1px solid transparent}
.tt-key.tt-key-leaf:hover{opacity:1; border-color:var(--tt-accent, var(--tt-green-dim))}
.tt-key.on{opacity:1; font-weight:800; box-shadow:0 0 8px var(--tt-accent, var(--tt-green))}
/* Proximity-expanded state -- glows while typing/showing the full word, distinct from
   plain hover so it's clear this key is the one currently "speaking." */
.tt-key.tt-key-near{box-shadow:0 0 10px var(--tt-accent, currentColor); opacity:1}
/* "open" state -- a small dot before the label. */
.tt-key.tt-key-folder.open{padding-left:14px}
.tt-key.tt-key-folder.open::before{content:""; position:absolute; left:6px; top:50%; transform:translateY(-50%);
  width:4px; height:4px; border-radius:50%; background:currentColor}

/* Badge Styles */
.badge-row{display:inline-flex;gap:4px;align-items:center}
.badge{font-family:var(--glee-mono);font-size:9px;font-weight:700;letter-spacing:.05em;padding:2px 6px;border-radius:4px;text-transform:uppercase}
.badge.live{background:rgba(85,214,137,0.12);color:var(--glee-green);border:1px solid rgba(85,214,137,0.25)}
.badge.soft-live{background:rgba(85,214,214,0.12);color:var(--glee-cyan);border:1px solid rgba(85,214,214,0.25)}
.badge.building{background:rgba(230,184,92,0.12);color:var(--glee-gold);border:1px solid rgba(230,184,92,0.25)}
.badge.planned{background:rgba(154,163,180,0.12);color:var(--glee-dim);border:1px solid rgba(154,163,180,0.25)}
.badge.disabled{background:rgba(235,94,85,0.12);color:var(--glee-red);border:1px solid rgba(235,94,85,0.25)}
.badge.sign-in{background:rgba(186,104,200,0.12);color:#ba68c8;border:1px solid rgba(186,104,200,0.25)}

/* Directory Explorer Styles */
.directory-explorer-box{background:var(--glee-panel);border:1px solid var(--glee-line);border-radius:var(--glee-radius);padding:24px;font-family:var(--glee-mono);box-shadow:var(--glee-shadow);margin-top:16px}
.explorer-folder{margin-top:14px;margin-bottom:14px}
.explorer-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:6px;background:var(--glee-bg-2);border-bottom:1px solid var(--glee-line-soft);font-weight:700;color:var(--glee-text);font-size:14px;gap:12px;flex-wrap:wrap}
.explorer-name{display:flex;align-items:center;gap:8px}
.explorer-content{border-left:1px dashed var(--glee-line-soft);margin-left:12px;padding-left:4px}
.explorer-item{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-radius:6px;font-size:13px;margin-top:4px;gap:12px;flex-wrap:wrap}
.explorer-item:hover{background:var(--glee-raise)}
.explorer-link{color:var(--glee-dim);text-decoration:none;display:flex;align-items:center;gap:8px}
.explorer-link:hover{color:var(--glee-accent)}
.explorer-link[aria-disabled]{opacity:.5;pointer-events:none}
@media (max-width:480px) {
  .explorer-header, .explorer-item {flex-direction:column;align-items:flex-start;gap:6px}
  .explorer-header .badge-row, .explorer-item .badge-row {margin-left:24px}
}

.os-main{min-width:0;display:flex;flex-direction:column;gap:var(--glee-gap)}
.os-inspector{width:248px;background:var(--glee-panel);border:1px solid var(--glee-line);border-radius:var(--glee-radius);padding:16px;height:max-content;position:sticky;top:68px;box-shadow:var(--glee-shadow)}
/* desktop */
.desktop-hero h1{font-size:clamp(22px,3.2vw,34px);margin:6px 0 8px;letter-spacing:0}
.desktop-hero p{color:var(--glee-dim);max-width:640px;line-height:1.55;font-size:14px}
.desktop-hero a{color:var(--glee-accent);text-decoration:none}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:var(--glee-gap);margin-top:18px}
.tile{background:var(--glee-card);border:1px solid var(--glee-line);border-radius:var(--glee-radius);padding:16px;
  text-decoration:none;display:flex;flex-direction:column;gap:9px;min-height:104px;
  /* CANON: gm-hover-lift */
  transition:border-color var(--gm-instant) var(--gm-ease-precise),transform var(--gm-quick) var(--gm-ease-alive),box-shadow var(--gm-quick) var(--gm-ease-alive)}
.tile:hover{border-color:var(--glee-accent);transform:translateY(var(--gm-lift));box-shadow:var(--gm-shadow-lift)}
.tile-glyph{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--glee-accent),var(--glee-accent-2));box-shadow:var(--glee-glow) color-mix(in srgb,var(--glee-accent) 30%,transparent)}
.tile strong{font-size:14px}
.tile em{font-style:normal;display:flex;align-items:center;gap:6px;font-family:var(--glee-mono);font-size:10px;letter-spacing:.1em;color:var(--glee-faint);text-transform:uppercase}
.tile.planned{opacity:.6}
/* module registry */
.module-registry{background:var(--glee-panel);border:1px solid var(--glee-line);border-radius:var(--glee-radius);padding:18px}
.m-group{margin-bottom:18px}
.m-grouphead{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.m-grouphead h3{font-size:14px} .m-grouphead span{color:var(--glee-faint);font-family:var(--glee-mono);font-size:11px}
.m-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,160px),1fr));gap:10px}
.m-card{display:flex;align-items:center;gap:8px;background:var(--glee-bg-2);border:1px solid var(--glee-line-soft);
  border-radius:8px;padding:11px 12px;text-decoration:none;font-size:13px}
.m-card em{margin-left:auto;font-style:normal;font-family:var(--glee-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--glee-faint)}
.m-card.planned{opacity:.62}
/* style window */
.style-window{background:var(--glee-panel);border:1px solid var(--glee-line);border-radius:var(--glee-radius);padding:18px}
.sw-lede{color:var(--glee-dim);font-size:13px;margin-bottom:14px;line-height:1.5}
.sw-lede b{color:var(--glee-green);font-family:var(--glee-mono);font-size:12px}
.packs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,190px),1fr));gap:10px;margin-bottom:16px}
.pack{cursor:pointer;text-align:left;background:var(--glee-bg-2);border:1px solid var(--glee-line);border-radius:8px;
  padding:11px 12px;color:var(--glee-text);font-size:13px;font-weight:700;display:flex;flex-direction:column;gap:4px}
.pack span{font-weight:400;color:var(--glee-dim);font-size:11px}
.pack.on{border-color:var(--glee-accent);box-shadow:0 0 0 1px var(--glee-accent)}
.sliders{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:14px;margin-bottom:14px}
.sl{display:flex;flex-direction:column;gap:6px;font-family:var(--glee-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--glee-faint)}
.sl input{width:100%}
.sw-actions{display:flex;align-items:center;gap:10px}
.btn{cursor:pointer;font-family:var(--glee-font);font-weight:700;font-size:12px;color:var(--glee-bg);background:var(--glee-accent);border:0;border-radius:8px;padding:10px 16px}
.btn.ghost{background:var(--glee-raise);color:var(--glee-text);border:1px solid var(--glee-line)}
.sw-msg{font-family:var(--glee-mono);font-size:11px;color:var(--glee-green)}
/* bottom strip */
.os-strip{position:sticky;bottom:0;z-index:6;display:flex;align-items:center;gap:16px;height:40px;padding:0 16px;
  background:color-mix(in srgb,var(--glee-bg) 90%,transparent);backdrop-filter:blur(14px);border-top:1px solid var(--glee-line-soft);
  font-family:var(--glee-mono);font-size:11px;overflow-x:auto;white-space:nowrap}
.strip-cell{display:inline-flex;gap:6px;color:var(--glee-dim);flex:0 0 auto} .strip-cell b{color:var(--glee-faint);font-weight:600}
.strip-cell.ok{color:var(--glee-green)} .strip-cell.warn{color:var(--glee-red)} .strip-cell.dim{color:var(--glee-faint)}
.strip-grow{flex:1}
/* boot overlay */
.glee-boot{position:fixed;inset:0;z-index:30;background:var(--glee-bg);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:22px;transition:opacity .5s}
.glee-boot.done{opacity:0;pointer-events:none}
.boot-mark{font-weight:800;letter-spacing:.4em;text-indent:.4em;font-size:clamp(28px,6vw,56px);text-shadow:0 0 26px color-mix(in srgb,var(--glee-accent) 35%,transparent)}
.boot-mark b{color:var(--glee-accent)} .boot-mark span{display:block;text-indent:0;letter-spacing:.3em;font-size:11px;color:var(--glee-faint);font-family:var(--glee-mono);text-transform:uppercase;margin-top:10px}
.boot-log{width:min(520px,90vw);min-height:150px;font-family:var(--glee-mono);font-size:13px;line-height:1.9}
.boot-row{display:flex;gap:10px;opacity:0;animation:bootin .3s ease forwards}
.boot-row .bk{width:14px} .boot-row .bl{flex:1;color:var(--glee-dim)} .boot-row .bs{font-size:11px;letter-spacing:.1em}
.boot-row .ok{color:var(--glee-green)} .boot-row .pv{color:var(--glee-accent)}
.boot-meter{width:min(520px,90vw);height:3px;background:var(--glee-line);border-radius:3px;overflow:hidden}
.boot-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--glee-accent),var(--glee-accent-2));transition:width .4s}
.boot-teach{color:var(--glee-faint);font-family:var(--glee-mono);font-size:12px}
.boot-skip{color:var(--glee-faint);font-family:var(--glee-mono);font-size:11px;letter-spacing:.08em;margin-top:18px;opacity:0;animation:bootin 1s ease 1.2s forwards}
@keyframes bootin{to{opacity:1}}
/* T2: the rail is shell chrome, so its column belongs to the shell grid.
   Fixed width on every Mission Control route means the region left of the
   content cannot change size between them. */
@media (min-width:881px){
  .os-body.has-rail{grid-template-columns:200px minmax(0,1fr) auto}
}
@media (max-width:880px){
  .os-body.has-rail{grid-template-columns:1fr}
}
@media (max-width:880px){
  .os-body{grid-template-columns:1fr}
  .os-inspector{position:static;width:auto}
  .os-strip{position:static;height:auto;min-height:40px;flex-wrap:wrap;white-space:normal;align-items:flex-start;padding:10px 16px}
  .os-top{overflow:hidden}
  .os-top .os-exit[href="https://gleephoenix.com/bridge/"],.os-top .os-exit[href="/projects"],.os-top .os-exit[href="/feed"],.os-top .os-exit[href="/business"],.os-top .os-exit[href="/play"]{display:none}
}
@media (max-width:600px){
  .os-top{gap:4px;padding:0 8px;overflow:hidden}
  .os-top .cmd,.os-top .spacer,.nav-toggle-group{display:none!important}
  .os-top .os-exit[href="https://gleephoenix.com/bridge/"],.os-top .os-exit[href="/projects"],.os-top .os-exit[href="/feed"],.os-top .os-exit[href="/business"],.os-top .os-exit[href="/play"]{display:none}
  .os-top .os-exit{margin-left:0;padding:6px 8px}
  .ficifi-trigger{margin-left:0;padding:6px 8px}
  #user-header-area{gap:4px!important}
}

/* Sidebar transition & invisible state layout */
.os-body{transition:grid-template-columns 0.2s ease}
body.nav-mode-invisible .os-body{grid-template-columns:minmax(0,1fr) auto !important}
/* T3 fix, found by the browser and not by any unit test: the rule above is
   !important, so it beat .os-body.has-rail and collapsed the three-column
   Mission Control layout back to two. The rail then occupied a 553px column and
   sat UNDER the view region, which intercepted every rail click. The rail is
   shell chrome and its column is not the nav dock's to remove, so has-rail
   restates the three columns at equal weight in every nav mode. */
body.nav-mode-invisible .os-body.has-rail{grid-template-columns:200px minmax(0,1fr) auto !important}
body.nav-mode-invisible .os-dock{display:none !important}
@media (max-width:880px){
  body.nav-mode-invisible .os-body.has-rail{grid-template-columns:1fr !important}
}
/* micro (horizontal) vs full (vertical) both show the same .nav-keypad-wrap now --
   only the flex-direction differs, set above near .tt-keypad. */

/* Header navigator toggle styles */
.nav-toggle-group{display:flex;align-items:center;gap:4px;margin-left:14px;background:var(--glee-bg-2);border:1px solid var(--glee-line);border-radius:6px;padding:2px}
.nav-toggle-btn{cursor:pointer;font-family:var(--glee-mono);font-size:10px;background:none;border:0;padding:4px 8px;border-radius:4px;color:var(--glee-dim)}
.nav-toggle-btn.active{background:var(--glee-accent);color:var(--glee-bg)!important;font-weight:700}
.nav-toggle-btn:hover:not(.active){background:var(--glee-raise);color:var(--glee-text)!important}

/* The workspace toolbar sits BELOW the global bar now, so it stops being sticky
   at 0 and stops carrying a brand. Captain, 2026-08-22: "The platform's
   hm / fd / ag / rc module switcher can remain as an advanced Workspace
   toolbar" -- remain, beneath, not instead of. */
.os-top{top:var(--gs-header-h,58px)}
.os-whoami .av{display:inline-block;width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--glee-accent),var(--glee-accent-2))}

/* T3: the view region is the ONLY thing that changes on a rail click, so its
   geometry is pinned. Without a reserved height the page collapses to the
   loading state's height and the shell above it moves -- which is the exact
   complaint the router exists to fix, reintroduced by the fix. */
.os-body.has-rail #os-view{min-height:70vh;contain:layout}
#os-view[data-loading] > *{opacity:.35;transition:opacity 90ms linear}
@media (prefers-reduced-motion:reduce){
  #os-view[data-loading] > *{transition:none}
}
:root{--c-danger:#d15b5b;--c-gold:#c9a96b;--c-gold-mid:#d8bc85;--c-ink-2:#0a0a0a;--c-ok:#45a862;--c-surface:#0a0a0a;--c-surface-2:#111111;--c-surface-3:#242424;--c-teal:#3ecfb6;--glee-brass:#d8bb78;--glee-brass-hi:#f0d79e;--glee-cyan:#74e4e9;--glee-graphite:#a4a4a4;--glee-ivory:#f5f5f5;--glee-navy-0:#000000;--glee-serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--radius-2:2px;--radius-8:8px;--radius-pill:999px;--rose:#dd6d84;--space-12:12px;--space-16:16px;--space-2:2px;--space-24:24px;--space-4:4px;--space-64:64px;--space-8:8px;--text-11:11px;--text-12:12px;--text-13:13px;--text-14:14px;--text-16:16px;--text-28:28px}:root{--gs-header-h:58px;--gs-pad-x:24px;--gs-container:1180px;--gs-mark:22px;--gs-nav-gap:4px;--gs-nav-pad-x:10px;--gs-font-display:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--gs-font-ui:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--gs-font-data:ui-monospace,"Cascadia Code","SF Mono",Menlo,Consolas,monospace;--gs-ground-default:#000000;--gs-ink-default:#F5F5F5;--gs-ink-2-default:#CCCCCC;--gs-muted-default:#9A9A9A;--gs-gold-default:#C9A96B;--gs-muted:var(--gd-muted,var(--gs-muted-default));--gs-gold-hi-default:#E4CFA1;--gs-hairline-default:#242424;--gs-panel-default:#0A0A0A;--gs-ground:var(--gd-canvas,var(--gs-ground-default));--gs-ink:var(--gd-ink,var(--gs-ink-default));--gs-ink-2:var(--gd-ink-2,var(--gs-ink-2-default));--gs-gold:var(--gd-gold,var(--gs-gold-default));--gs-gold-hi:var(--gd-gold-hi,var(--gs-gold-hi-default));--gs-hairline:var(--gd-hairline,var(--gs-hairline-default));--gs-panel:var(--gd-panel,var(--gs-panel-default))}body:has(>header.gs-shell),body[data-gs-mounted]{margin:0}.gs-shell{position:sticky;top:0;z-index:200;background:color-mix(in srgb,var(--gs-ground) 88%,transparent);backdrop-filter:blur(14px) saturate(120%);border-bottom:1px solid var(--gs-hairline);font-family:var(--gs-font-ui)}.gs-bar{max-width:var(--gs-container);margin:0 auto;padding:0 var(--gs-pad-x);min-height:var(--gs-header-h);display:flex;align-items:center;gap:var(--space-16)}.gs-brand{display:inline-flex;align-items:center;gap:var(--space-8);flex:none;color:var(--gs-ink);text-decoration:none;min-height:32px}.gs-mark{width:var(--gs-mark);height:var(--gs-mark);color:var(--gs-gold);flex:none;transition:transform 420ms cubic-bezier(.16,1,.3,1),color 220ms}.gs-brand:hover .gs-mark{color:var(--gs-gold-hi);transform:translateY(-1px) scale(1.05)}.gs-wordmark{font-family:var(--gs-font-display);font-size:var(--text-16);font-weight:500;letter-spacing:.26em;text-transform:uppercase;line-height:1}.gs-nav{display:flex;align-items:center;gap:var(--gs-nav-gap);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%)}.gs-nav::-webkit-scrollbar{display:none}.gs-nav-a{padding:6px var(--gs-nav-pad-x);border-radius:var(--radius-8);color:var(--gs-muted);text-decoration:none;font-size:var(--text-12);font-weight:600;letter-spacing:.13em;text-transform:uppercase;white-space:nowrap;transition:color 140ms,background 140ms}.gs-nav-a:hover{color:var(--gs-ink);background:rgba(201,169,107,.08)}.gs-nav-a.is-on{color:var(--gs-gold-hi);background:rgba(201,169,107,.12)}@media (max-width:1040px){.gs-nav-a{padding:var(--space-4) var(--space-8);letter-spacing:.08em}}.gs-nav-key{margin-left:var(--space-4);font-family:var(--gs-font-data);font-size:var(--text-13);letter-spacing:0;opacity:.55}.gs-right{display:flex;align-items:center;gap:var(--space-8);flex:none;margin-left:auto}.gs-right a,.gs-right button,.gstate a,.gstate button{display:inline-flex;align-items:center;min-height:28px}.gs-cmd{display:inline-flex;align-items:center;gap:var(--space-8);padding:var(--space-4) var(--space-12);border:1px solid var(--gs-hairline);border-radius:var(--radius-pill);color:var(--gs-muted);text-decoration:none;font-size:var(--text-12);transition:border-color 140ms,color 140ms}.gs-cmd:hover{border-color:rgba(201,169,107,.30);color:var(--gs-ink)}.gs-cmd-key{font-family:var(--gs-font-data);font-size:var(--text-13);opacity:.8}.gs-session{padding:var(--space-4) var(--space-12);border-radius:var(--radius-8);background:linear-gradient(180deg,var(--c-gold-mid),var(--c-gold));color:var(--c-ink-2);text-decoration:none;font-size:var(--text-12);font-weight:700;letter-spacing:.06em;white-space:nowrap}.gs-session.is-in{background:transparent;border:1px solid var(--gs-hairline);color:var(--gs-ink-2);font-weight:600}.gs-lnav{border-bottom:1px solid var(--gs-hairline);background:color-mix(in srgb,var(--gs-panel) 60%,transparent)}.gs-lnav-in{max-width:var(--gs-container);margin:0 auto;padding:10px var(--gs-pad-x);display:flex;gap:var(--space-24);flex-wrap:wrap;overflow-x:auto;scrollbar-width:none}.gs-lnav-in::-webkit-scrollbar{display:none}.gs-lnav-g{display:flex;align-items:baseline;gap:var(--space-12);white-space:nowrap}.gs-lnav-t{font-size:var(--text-11);letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--gs-muted)}.gs-lnav-g a{color:var(--gs-ink-2);text-decoration:none;font-size:var(--text-13)}.gs-lnav-g a:hover{color:var(--gs-gold-hi)}.gs-frame{width:100%}.gs-content{max-width:var(--gs-container);margin:0 auto;padding:40px var(--gs-pad-x) 96px;display:block}.gs-frame--specialized>.gs-content{max-width:none;padding-left:var(--gs-pad-x);padding-right:var(--gs-pad-x)}.gs-frame--immersive>.gs-content{max-width:none;padding:0}.gs-shell.gs-immersive{position:fixed;background:transparent;border-bottom:0;backdrop-filter:none}.gs-shell.gs-immersive .gs-bar{min-height:44px}@media (max-width:760px){:root{--gs-pad-x:14px;--gs-header-h:52px}.gs-bar{gap:var(--space-12);flex-wrap:nowrap}.gs-bar>*{min-width:0}.gs-nav{gap:0}.gs-nav-a{padding:var(--space-4) var(--space-4);font-size:var(--text-11);letter-spacing:.04em}.gs-nav-key{display:none}.gs-session{padding:var(--space-4) var(--space-8);font-size:var(--text-11)}.gs-right .gstate{display:none}.gs-wordmark{letter-spacing:.18em;font-size:var(--text-14)}.gs-content{padding-top:var(--space-24)}}@media (prefers-reduced-motion:reduce){.gs-brand:hover .gs-mark{transform:none}.gs-mark,.gs-nav-a,.gs-session{transition:none}}:root{--glee-navy-0:#000000;--glee-navy-1:#0a0a0a;--glee-navy-2:#111111;--glee-brass:#d8bb78;--glee-brass-hi:#f0d79e;--glee-cyan:#74e4e9;--glee-ivory:#f5f5f5;--glee-graphite:#a4a4a4;--glee-serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--glee-grid:rgba(255,255,255,.045)}body:has(>header.gs-shell),body[data-gs-mounted]{color:var(--gs-ink);font-family:var(--gs-font-ui);background:var(--glee-navy-0)}body:has(>header.gs-shell)::after,body[data-gs-mounted]::after{display:none}.gs-shell{background:#000000;border-bottom-color:#242424;box-shadow:none}.gs-brand{color:var(--glee-ivory)}.gs-mark{color:var(--glee-brass)}.gs-brand:hover .gs-mark{color:var(--glee-brass-hi)}.gs-wordmark{letter-spacing:.3em}.gs-nav-a{color:var(--glee-graphite)}.gs-nav-a:hover{color:var(--glee-ivory);background:#111111}.gs-nav-a.is-on{color:var(--glee-brass-hi);background:#0a0a0a}.gs-session{background:var(--glee-brass);color:#000000}.gs-session.is-in{color:var(--glee-ivory);border-color:rgba(216,187,120,.32)}.gs-lnav{background:#0a0a0a;border-bottom-color:#242424}.gs-lnav-t{color:var(--glee-brass)}.gs-lnav-g a{color:var(--glee-graphite)}.gs-lnav-g a:hover{color:var(--glee-cyan)}body[data-gs-section] .gtrail{border-bottom:1px solid #242424;background:#000000}body[data-gs-section] .gtrail-in{max-width:var(--gs-container);margin:0 auto;padding:10px var(--gs-pad-x);color:var(--glee-graphite);font:600 10px/1.4 var(--gs-font-data);letter-spacing:.1em;text-transform:uppercase}body[data-gs-section] .gtrail-in a{color:var(--glee-brass)}body[data-gs-section] .gtrail-what{color:var(--glee-graphite);letter-spacing:.02em;text-transform:none}body[data-gs-section='explore']>.shell,body[data-gs-section='proof']>.shell,body[data-gs-section='proof']>main.shell{width:min(var(--gs-container),calc(100% - 2 * var(--gs-pad-x)));max-width:var(--gs-container);margin:0 auto;padding:0 0 var(--space-64)}body[data-gs-section='explore'] .hero,body[data-gs-section='proof'] .hero,body[data-gs-section='proof'] .intro{position:relative;border-bottom:1px solid rgba(216,187,120,.22);padding:clamp(var(--space-24),5vw,var(--space-64)) 0 var(--space-24)}body[data-gs-section='explore'] .hero::before,body[data-gs-section='proof'] .hero::before,body[data-gs-section='proof'] .intro::before{content:"";position:absolute;left:-18px;top:28px;bottom:24px;width:2px;background:linear-gradient(180deg,var(--glee-brass),var(--glee-cyan),transparent);opacity:.8}body[data-gs-section='explore'] .hero h1,body[data-gs-section='proof'] .hero h1,body[data-gs-section='proof'] .intro h1{color:var(--glee-brass-hi);font-family:var(--glee-serif);font-weight:500;letter-spacing:-.025em}body[data-gs-section='explore'] .hero p,body[data-gs-section='proof'] .hero p,body[data-gs-section='proof'] .intro p{color:var(--glee-graphite);font-family:var(--gs-font-ui)}body[data-gs-section='explore'] .zlabel,body[data-gs-section='explore'] .ship-header{border-bottom-color:rgba(116,228,233,.2)}body[data-gs-section='explore'] .zlabel h2,body[data-gs-section='explore'] .ship-header strong{color:var(--glee-ivory);font-family:var(--glee-serif);font-size:var(--text-14);font-weight:500;letter-spacing:.12em}body[data-gs-section='explore'] .zlabel span{color:var(--glee-graphite)}body[data-gs-section='explore'] .roomcard,body[data-gs-section='explore'] .card,body[data-gs-section='explore'] .dcard,body[data-gs-section='proof'] .door,body[data-gs-section='proof'] .step,body[data-gs-section='proof'] .statusbox,body[data-gs-section='proof'] .stat,body[data-gs-section='proof'] .receipt{border-radius:var(--radius-2);border-color:#242424;background:#0a0a0a;box-shadow:none}body[data-gs-section='explore'] .card:hover,body[data-gs-section='explore'] .dcard:hover,body[data-gs-section='proof'] .door:hover,body[data-gs-section='proof'] .door:focus-visible{border-color:var(--glee-brass);box-shadow:0 0 0 1px rgba(216,187,120,.22),0 18px 44px rgba(0,0,0,.2)}body[data-gs-section='explore'] .roomcard{border-top:2px solid rgba(216,187,120,.48)}body[data-gs-section='explore'] .roomcard.reclaim{border-top-color:var(--rose)}body[data-gs-section='explore'] .card .cn,body[data-gs-section='explore'] .roomname,body[data-gs-section='explore'] .dcard .dbody b,body[data-gs-section='proof'] .door h2,body[data-gs-section='proof'] .step h2,body[data-gs-section='proof'] .statusbox strong,body[data-gs-section='proof'] .receipt h3{color:var(--glee-ivory);font-family:var(--glee-serif);font-weight:500}body[data-gs-section='explore'] .card .cl,body[data-gs-section='explore'] .roomsummary,body[data-gs-section='explore'] .dcard .dbody .dl,body[data-gs-section='proof'] .door .sum,body[data-gs-section='proof'] .step p,body[data-gs-section='proof'] .receipt p{color:var(--glee-graphite)}body.proof-document .receipt,body.proof-document .statusbox,body.proof-document .step{background:linear-gradient(90deg,rgba(116,228,233,.08) 0 2px,transparent 2px),linear-gradient(135deg,rgba(255,255,255,.5),transparent 22%),var(--glee-ivory);border-color:rgba(216,187,120,.64);color:var(--c-surface-2);box-shadow:0 18px 42px rgba(0,0,0,.22),inset 0 0 0 1px rgba(255,255,255,.35)}body.proof-document .receipt h3,body.proof-document .statusbox strong,body.proof-document .step h2{color:var(--c-surface)}body.proof-document .receipt p,body.proof-document .statusbox p,body.proof-document .step p,body.proof-document .receipt .meta,body.proof-document .receipt .summary{color:var(--c-surface-3)}body.proof-document .receipt .summary{border-left-color:var(--c-teal)}body.proof-document .receipt .boundary{color:var(--c-danger);border-left-color:var(--c-danger)}body.proof-document .receipt .tag{background:rgba(24,40,48,.04);border-color:rgba(24,40,48,.2);color:var(--c-surface-3)}body.proof-document .receipt .tag.green{color:var(--c-ok);border-color:rgba(40,122,80,.45)}body.proof-document .receipt .tag.gold{color:var(--c-surface-3);border-color:rgba(124,95,29,.42)}body.proof-document .receipt .links a{color:var(--c-surface-3);border-color:rgba(23,104,114,.38)}body[data-gs-section] input,body[data-gs-section] select,body[data-gs-section] textarea,body[data-gs-section] button{font-family:var(--gs-font-data)}body[data-gs-section] input:focus-visible,body[data-gs-section] select:focus-visible,body[data-gs-section] textarea:focus-visible,body[data-gs-section] button:focus-visible,body[data-gs-section] a:focus-visible{outline:2px solid var(--glee-cyan);outline-offset:3px}@media (max-width:760px){body[data-gs-section='explore']>.shell,body[data-gs-section='proof']>.shell,body[data-gs-section='proof']>main.shell{width:min(100% - 2 * var(--gs-pad-x),var(--gs-container))}body[data-gs-section='explore'] .hero::before,body[data-gs-section='proof'] .hero::before,body[data-gs-section='proof'] .intro::before{left:-8px}}@media (prefers-reduced-motion:reduce){body[data-gs-section] *,body[data-gs-section] *::before,body[data-gs-section] *::after{scroll-behavior:auto !important}}:root{--gs-prism-paper:#000000;--gs-prism-white:#f5f5f5;--gs-prism-ink:#f5f5f5;--gs-prism-muted:#9a9a9a;--gs-prism-violet:#d8bb78;--gs-prism-lilac:#111111;--gs-prism-lime:#0a0a0a;--gs-prism-coral:#b8b8b8;--gs-prism-line:#242424;--gs-prism-night:#000000;--gs-prism-night-panel:#0a0a0a;--gs-prism-night-muted:#a4a4a4;--gs-prism-display:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--gs-prism-text:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--gs-prism-mono:ui-monospace,"Cascadia Code","SF Mono",Menlo,Consolas,monospace}body:has(>.gs-shell),body[data-gs-mounted]{--gs-ground:var(--gs-prism-paper);--gs-ink:var(--gs-prism-ink);--gs-muted:var(--gs-prism-muted);--gs-gold:var(--gs-prism-violet);--gs-gold-hi:#f0d79e;--gs-hairline:var(--gs-prism-line);--gs-panel:var(--gs-prism-night-panel);--gs-font-display:var(--gs-prism-display);--gs-font-ui:var(--gs-prism-text)}body .gs-shell{background:#000000;border-bottom:1px solid var(--gs-prism-line);backdrop-filter:none;box-shadow:none}body .gs-brand{gap:var(--space-8);min-height:44px}body .gs-mark{color:var(--gs-prism-violet);width:24px;height:24px}body .gs-wordmark{font-family:var(--gs-prism-display);font-size:var(--text-28);font-weight:700;letter-spacing:-.04em;line-height:1}body .gs-nav{gap:var(--space-2);padding:var(--space-4) 0}body .gs-nav-a{position:relative;color:var(--gs-prism-muted);font-family:var(--gs-prism-text);font-size:var(--text-11);font-weight:650;letter-spacing:.015em;border:1px solid transparent;border-radius:var(--radius-8);padding:var(--space-8) var(--space-12);min-height:32px;transition:background .15s,border-color .15s,color .15s}body .gs-nav-a::before{content:none}body .gs-nav-a:hover{background:var(--gs-prism-night-panel);color:var(--gs-prism-ink)}body .gs-nav-a.is-on{background:var(--gs-prism-night-panel);color:var(--gs-prism-ink);border-color:var(--gs-prism-violet);box-shadow:none}body .gs-session{color:#000000;background:var(--gs-prism-violet);border:1px solid var(--gs-prism-violet);border-radius:var(--radius-8);box-shadow:none;font-family:var(--gs-prism-text);font-weight:700;letter-spacing:0;padding:var(--space-4) var(--space-12);min-height:32px;text-decoration:none}body .gs-session:hover{background:#f0d79e;box-shadow:none}body .gs-cmd{border-color:var(--gs-prism-line);border-radius:var(--radius-8);color:var(--gs-prism-muted);font-family:var(--gs-prism-mono)}body .gs-lnav{background:var(--gs-prism-night-panel);border-bottom:1px solid var(--gs-prism-line);color:var(--gs-prism-ink)}body .gs-lnav a{color:var(--gs-prism-ink);border-radius:var(--radius-8)}body .gskip{position:fixed}body .gskip:focus{z-index:9999;background:var(--gs-prism-night-panel);color:var(--gs-prism-ink);border:2px solid var(--gs-prism-violet)}body:has(>.gs-shell):not(.atelier):is(.button,.btn,.gs-button){border-radius:var(--radius-8);box-shadow:none;border:1px solid var(--gs-prism-violet);font-family:var(--gs-prism-text);font-weight:700}body:has(>.gs-shell):not(.atelier):is(.button,.btn,.gs-button):focus-visible{outline:2px solid var(--gs-prism-violet);outline-offset:3px}body:has(>.gs-shell):not(.atelier):is(.card,.sec-panel,.door){border-radius:var(--radius-8);border-top:1px solid var(--gs-prism-line)}body:has(>.gs-shell):not(.atelier):is(.field input,.field textarea,.field select){border-radius:var(--radius-8);border-bottom:1px solid var(--gs-prism-violet)}body:has(>.gs-shell):not(.atelier):is(h1,.hero h1){font-family:var(--gs-prism-display);font-weight:650;letter-spacing:-.035em}@media (max-width:1040px){body .gs-nav-a{padding:var(--space-8) var(--space-8)}}@media (prefers-reduced-motion:reduce){body .gs-shell *,body .gs-shell *::before{transition:none !important;animation:none !important}}