/* Workbench rendition, light. Reference: Linear / Raycast light mode. Inter, cool neutrals, indigo accent. Each project's overview wears that project's own system (see the data-theme blocks). */
:root{--bg:#F7F8FA;--panel:#FFFFFF;--panel-2:#FBFBFC;--border:#E5E7EB;--border-2:#D1D5DB;--text:#111827;--muted:#6B7280;--accent:#6366F1;--accent-ink:#4338CA;--accent-bg:#EEF2FF;--ok:#16A34A;--warn:#D97706;--bad:#DC2626;--tab-h:34px;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--sans:"Inter",-apple-system,"Segoe UI",sans-serif;color-scheme:light}
*{box-sizing:border-box} html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:13.5px/1.5 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--accent-ink)} button{font:inherit;color:inherit}
.win{display:flex;flex-direction:column;height:100vh;height:100dvh}
.titlebar{display:flex;align-items:center;gap:14px;height:44px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border);flex:0 0 auto}
.traffic{display:flex;gap:7px} .traffic i{width:12px;height:12px;border-radius:50%;display:block;background:#D1D5DB} .traffic i:nth-child(1){background:#ff5f57} .traffic i:nth-child(2){background:#febc2e} .traffic i:nth-child(3){background:#28c840}
.tb-title{font-weight:600} .tb-title .muted{font-weight:400;color:var(--muted)}
.tb-actions{margin-left:auto;display:flex;gap:4px;align-items:center}
.tb-actions button{appearance:none;background:none;border:1px solid transparent;border-radius:7px;padding:5px 10px;color:var(--muted);cursor:pointer;font-weight:500} .tb-actions button:hover{color:var(--text);background:var(--bg)} .tb-actions button.on{color:var(--accent-ink);background:var(--accent-bg)}
.hub-badge{display:inline-flex;gap:6px;align-items:center;margin-left:8px;color:var(--muted);font-size:12px} .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);display:inline-block} .dot.ok{background:var(--ok)} .dot.warn{background:var(--warn)} .dot.bad{background:var(--bad)} .dot.accent{background:var(--accent)}
.body{display:flex;flex:1 1 auto;min-height:0}
.side{width:244px;flex:0 0 auto;background:var(--panel-2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:auto}
.side-h{padding:14px 14px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--muted);text-transform:uppercase;display:flex;justify-content:space-between;align-items:baseline} .side-h .muted{text-transform:none;letter-spacing:0;font-weight:400}
.list{list-style:none;margin:0;padding:4px 8px}
.list li{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px;cursor:pointer;color:var(--text);font-weight:500} .list li:hover{background:#F0F1F4} .list li.on{background:var(--accent-bg);color:var(--accent-ink)} .list li .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list li .err-count{font-size:11px;background:#FEE2E2;color:#B91C1C;border-radius:9px;padding:0 6px;line-height:16px;font-weight:600} .list li .st{font-size:11px;color:var(--muted);font-weight:400}
.list.files li{font-family:var(--mono);font-size:12px;font-weight:400} .list.files li::before{content:"";width:10px;height:12px;border:1.5px solid var(--border-2);border-radius:2px;flex:0 0 auto}
.side-foot{margin-top:auto;padding:14px;border-top:1px solid var(--border);font-size:12px;color:var(--muted);line-height:1.5} .side-foot a{color:var(--text);text-decoration:none;border-bottom:1px solid var(--accent)}
.dock{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
.tabs{display:flex;height:var(--tab-h);background:var(--panel);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;flex:0 0 auto} .tabs::-webkit-scrollbar{display:none}
.tabs button{appearance:none;background:var(--panel);border:0;border-right:1px solid var(--border);padding:0 14px;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap;display:flex;gap:8px;align-items:center;font-weight:500}
.tabs button[aria-selected="true"]{background:var(--bg);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)} .tabs button .x{color:var(--muted);font-size:14px;line-height:1;padding:0 2px;border-radius:3px} .tabs button .x:hover{background:var(--border);color:var(--text)}
.pane{flex:1 1 auto;min-height:0;overflow:auto;position:relative;background:var(--bg)}
.pane iframe{border:0;width:100%;height:100%;display:block;background:#fff}
.doc{max-width:900px;padding:26px 30px 52px;line-height:1.55}
.doc h1{font-size:22px;margin:0 0 4px;font-weight:650;letter-spacing:-.015em} .doc h2{font-size:12px;margin:24px 0 8px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600} .doc p{margin:0 0 10px} .doc ul{margin:0 0 10px;padding-left:18px} .doc li{margin:4px 0}
.doc .meta{font-family:var(--mono);font-size:12px;color:var(--muted);margin-bottom:14px} .doc .figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:12px 0 18px} .doc .figs div{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 14px} .doc .figs b{display:block;font-size:22px;font-weight:650;letter-spacing:-.01em} .doc .figs span{font-size:12px;color:var(--muted)}
.doc .open{display:inline-block;margin:4px 8px 4px 0;padding:7px 11px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);text-decoration:none;cursor:pointer;font-size:12.5px;font-weight:500} .doc .open:hover{border-color:var(--accent);color:var(--accent-ink)}
.doc .note{border-left:3px solid var(--warn);padding:8px 12px;color:var(--muted);background:var(--panel);border-radius:0 8px 8px 0;margin:10px 0}
.entry{display:grid;grid-template-columns:92px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)} .entry-time{font-family:var(--mono);font-size:12px;color:var(--muted)} .entry-summary{color:var(--text)} .entry-meta{font-size:12px;color:var(--muted);margin-top:2px;font-family:var(--mono)}
.error{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--panel);margin:8px 0} .error .fp{font-family:var(--mono);font-size:11px;color:#B91C1C;background:#FEE2E2;padding:2px 6px;border-radius:4px;white-space:nowrap} .error .err-meta{font-size:12px;color:var(--muted);margin-top:4px}
.search{padding:16px 30px} .search input{width:100%;max-width:560px;background:var(--panel);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:9px 11px;font:inherit} .search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.hits{list-style:none;margin:12px 0 0;padding:0;max-width:760px} .hits li{padding:9px 0;border-bottom:1px solid var(--border)} .hit-title{font-weight:600} .hit-meta{font-size:12px;color:var(--muted);font-family:var(--mono)} .hit-snippet{color:var(--muted);margin-top:2px} .hit-snippet mark{background:#FEF3C7;color:var(--text);border-radius:2px;padding:0 1px}
.empty{color:var(--muted);padding:6px 8px} :focus-visible{outline:2px solid var(--accent);outline-offset:1px}
/* program window: a frame tab opens like an app launching */
.appwin{position:absolute;inset:12px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 30px 60px -30px rgba(17,24,39,.35),0 0 0 1px rgba(17,24,39,.02);transform-origin:50% 30%}
.appwin.opening{animation:winopen .55s cubic-bezier(.2,.85,.25,1) both} @keyframes winopen{0%{opacity:0;transform:scale(.72) translateY(40px)}60%{opacity:1}100%{opacity:1;transform:none}}
.appwin-bar{display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;background:var(--panel-2);border-bottom:1px solid var(--border);color:var(--muted);font-size:12px;flex:0 0 auto} .appwin-bar .traffic i{width:11px;height:11px} .appwin-title{color:var(--text);font-weight:600} .appwin-sub{color:var(--muted)} .appwin-bar .spin{margin-left:auto;width:12px;height:12px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite} .appwin.loaded .spin{display:none} @keyframes spin{to{transform:rotate(360deg)}}
.appwin iframe{flex:1 1 auto;min-height:0;opacity:0;transition:opacity .35s ease .15s} .appwin.loaded iframe{opacity:1}
/* each project's overview wears that project's own system */
.doc[data-theme]{margin:16px;border-radius:14px;padding:26px 30px 44px;border:1px solid var(--border);background:#fff}
.doc[data-theme="bid-manager"]{font-family:"Inter",sans-serif;background:#fff;background-image:linear-gradient(#EAF1FA 1px,transparent 1px),linear-gradient(90deg,#EAF1FA 1px,transparent 1px);background-size:24px 24px;color:#0F172A} .doc[data-theme="bid-manager"] h1{color:#0F172A} .doc[data-theme="bid-manager"] h2,.doc[data-theme="bid-manager"] .meta{color:#64748B} .doc[data-theme="bid-manager"] .figs div{background:#fff;border-color:#CBD5E1} .doc[data-theme="bid-manager"] .figs b{color:#1E40AF} .doc[data-theme="bid-manager"] .open{background:#fff;border-color:#CBD5E1} .doc[data-theme="bid-manager"] .open:hover{border-color:#F97316;color:#9A3412} .doc[data-theme="bid-manager"] .note{border-left-color:#F97316;background:#FFF7ED;color:#7C2D12} .doc[data-theme="bid-manager"] a{color:#1E40AF}
.doc[data-theme="fleet"]{font-family:"IBM Plex Sans",sans-serif;background:#F7F9FA;color:#0B1721;border-color:#E3E8EC} .doc[data-theme="fleet"] h1{color:#0B1721;font-weight:600} .doc[data-theme="fleet"] h2,.doc[data-theme="fleet"] .meta{color:#5C6F7E;font-family:"IBM Plex Mono",monospace} .doc[data-theme="fleet"] .figs div{background:#fff;border-color:#E3E8EC;border-radius:8px} .doc[data-theme="fleet"] .figs b{color:#0F766E;font-family:"IBM Plex Mono",monospace} .doc[data-theme="fleet"] .open{background:#fff;border-color:#CBD3D9;border-radius:6px} .doc[data-theme="fleet"] .open:hover{border-color:#0F766E;color:#115E59} .doc[data-theme="fleet"] .note{border-left-color:#0F766E;background:#fff;color:#2A3A47} .doc[data-theme="fleet"] a{color:#115E59}
.doc[data-theme="workbench"]{font-family:"Inter",sans-serif;background:#FAFAFF;border-color:#E4E4F7} .doc[data-theme="workbench"] .figs b{color:#5B21B6} .doc[data-theme="workbench"] .open:hover{border-color:#7C3AED;color:#5B21B6} .doc[data-theme="workbench"] .note{border-left-color:#7C3AED;background:#F5F3FF;color:#4C1D95}
.doc[data-theme="lifequest"]{font-family:"Nunito",sans-serif;background:#FFFBF5;color:#3B3A47;border-color:#F0E6DC;border-radius:22px} .doc[data-theme="lifequest"] h1{font-weight:800;letter-spacing:-.01em} .doc[data-theme="lifequest"] h2,.doc[data-theme="lifequest"] .meta{color:#8B8A99;font-family:"Nunito",sans-serif} .doc[data-theme="lifequest"] .figs div{border:0;border-radius:16px;background:#FFE5D9} .doc[data-theme="lifequest"] .figs div:nth-child(2){background:#CFF0E4} .doc[data-theme="lifequest"] .figs div:nth-child(3){background:#E6E0FA} .doc[data-theme="lifequest"] .figs div:nth-child(4){background:#D7ECFB} .doc[data-theme="lifequest"] .figs b{color:#3B3A47} .doc[data-theme="lifequest"] .figs span{color:#5A5968} .doc[data-theme="lifequest"] .open{border-radius:999px;background:#fff;border-color:#E3D5C7;font-weight:700} .doc[data-theme="lifequest"] .open:hover{border-color:#FF8A65;color:#C2410C} .doc[data-theme="lifequest"] .note{border-left-color:#FF8A65;background:#fff;color:#5A5968;border-radius:0 12px 12px 0} .doc[data-theme="lifequest"] a{color:#C2410C}
.doc[data-theme="mechanic"]{font-family:"Barlow",sans-serif;background:#EEF2F4;color:#1B2326;border-color:#D5DDE2;font-size:14.5px} .doc[data-theme="mechanic"] h1{font-family:"Barlow Semi Condensed","Barlow",sans-serif;font-weight:700;font-size:26px;text-transform:uppercase;letter-spacing:.02em;color:#1B2326} .doc[data-theme="mechanic"] h2,.doc[data-theme="mechanic"] .meta{color:#4E5D63} .doc[data-theme="mechanic"] .figs div{background:#fff;border-color:#D5DDE2;border-radius:6px} .doc[data-theme="mechanic"] .figs b{color:#334E68;font-family:"Barlow Semi Condensed",sans-serif;font-size:26px} .doc[data-theme="mechanic"] .open{background:#D9481F;color:#fff;border-color:#D9481F;border-radius:6px;font-weight:600} .doc[data-theme="mechanic"] .open:hover{background:#B83A16;color:#fff} .doc[data-theme="mechanic"] .note{border-left-color:#D9481F;background:#fff;color:#4E5D63}
.doc[data-theme="animator"]{font-family:"Manrope",sans-serif;background:#fff;border-color:#EADFF7;position:relative;overflow:hidden} .doc[data-theme="animator"]::before{content:"";position:absolute;inset:0 0 auto 0;height:120px;background:linear-gradient(120deg,#E9DDFB,#FBE1EC 55%,#DDEFFB);opacity:.8} .doc[data-theme="animator"] > *{position:relative} .doc[data-theme="animator"] h1{font-weight:700;color:#2E1A47} .doc[data-theme="animator"] h2,.doc[data-theme="animator"] .meta{color:#7D6AA3} .doc[data-theme="animator"] .figs div{background:#fff;border-color:#EADFF7;border-radius:12px} .doc[data-theme="animator"] .figs b{color:#6D28D9} .doc[data-theme="animator"] .open:hover{border-color:#A78BFA;color:#6D28D9} .doc[data-theme="animator"] .note{border-left-color:#A78BFA;background:#FAF5FF;color:#4C1D95}
@media (max-width:820px){ .body{flex-direction:column} .side{width:auto;border-right:0;border-bottom:1px solid var(--border);flex:0 0 auto;max-height:42vh} .side-foot{margin-top:0} .titlebar{padding:0 max(12px,env(safe-area-inset-left,0px))} .doc{padding:16px max(16px,env(safe-area-inset-right,0px)) 40px max(16px,env(safe-area-inset-left,0px))} .doc[data-theme]{margin:8px;padding:16px} .tb-title .muted{display:none} .appwin{inset:6px} }
@media (prefers-reduced-motion: reduce){ .appwin.opening{animation:none} .appwin iframe{transition:none} }
/* full changelog */
.cl .cl-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:6px 0 14px} .cl .cl-top input{flex:1 1 260px;max-width:420px;background:var(--panel);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 10px;font:inherit} .cl .cl-top input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)} .cl-sum{font-size:12px;color:var(--muted);font-family:var(--mono)}
.cl-month{border:1px solid var(--border);border-radius:10px;background:var(--panel);margin:0 0 10px;overflow:hidden} .cl-month summary{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-weight:600;list-style:none} .cl-month summary::-webkit-details-marker{display:none} .cl-month summary::before{content:"▸";color:var(--muted);margin-right:8px} .cl-month[open] summary::before{content:"▾"} .cl-n{font-weight:400;color:var(--muted);font-size:12px;font-family:var(--mono)}
.cl-day{font-family:var(--mono);font-size:11px;color:var(--muted);padding:8px 14px 2px;border-top:1px solid var(--border)} .cl-row{display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:baseline;padding:4px 14px} .cl-row:last-child{padding-bottom:10px} .cl-sha{font-family:var(--mono);font-size:11.5px;color:var(--accent-ink);background:var(--accent-bg);padding:1px 6px;border-radius:4px} .cl-repo{font-size:11px;color:var(--muted);font-family:var(--mono);white-space:nowrap} .cl-s{overflow-wrap:anywhere;font-size:13px}
.cl-row:has(.cl-repo){grid-template-columns:auto auto 1fr} .cl-row:not(:has(.cl-repo)){grid-template-columns:auto 1fr}
@media (max-width:820px){ .cl-row{grid-template-columns:auto 1fr} .cl-repo{display:none} }
.bars{display:flex;gap:6px;align-items:flex-end;overflow-x:auto;padding:12px 0 4px} .bar{display:grid;justify-items:center;gap:4px;min-width:34px} .bar i{display:block;width:22px;background:var(--accent);border-radius:3px 3px 0 0;opacity:.85} .bar span{font-size:10px;color:var(--muted);font-family:var(--mono)} .bar em{font-style:normal;font-size:10px;color:var(--muted)}
/* landing */
.landing{max-width:980px;padding:40px 36px 56px} .landing .meta{font-family:var(--mono);font-size:12px;color:var(--muted);margin-bottom:10px} .landing h1{font-size:30px;line-height:1.15;font-weight:650;letter-spacing:-.02em;max-width:22ch;margin:0 0 12px} .landing .lead{font-size:16px;color:var(--muted);max-width:62ch;margin:0 0 22px}
.start{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:0 0 22px} .start-card{display:grid;gap:6px;align-content:start;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px;text-decoration:none;color:var(--text);cursor:pointer;transition:border-color .2s,transform .2s,box-shadow .2s} .start-card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 10px 24px -16px rgba(17,24,39,.3)} .start-card b{font-size:15px;font-weight:650} .start-card span{font-size:13px;color:var(--muted);line-height:1.45} .start-card em{font-style:normal;font-weight:600;color:var(--accent-ink);font-size:13px;margin-top:4px}
.landing .figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:0 0 26px} .landing .figs div{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 14px} .landing .figs b{display:block;font-size:24px;font-weight:650;letter-spacing:-.01em} .landing .figs span{font-size:12px;color:var(--muted)}
.landing h2{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 8px;font-weight:600} .landing p{line-height:1.55;max-width:70ch}
@media (max-width:820px){ .landing{padding:20px 16px 40px} .landing h1{font-size:24px} }
.tabs:empty{display:none}
.why{display:grid;gap:10px;margin:18px 0 0} .w-slot{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px} .w-slot h2{margin:0 0 6px} .w-empty{border-style:dashed;background:transparent} .w-key{font-family:var(--mono);font-size:11px;color:var(--accent-ink);margin:0 0 4px} .w-hint{color:var(--muted);font-style:italic} .w-quote{margin:0 0 8px;padding:2px 0 2px 12px;border-left:3px solid var(--accent);line-height:1.55} .w-eff{width:100%;border-collapse:collapse;font-size:13px} .w-eff th,.w-eff td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)} .w-eff .amt{text-align:right;font-variant-numeric:tabular-nums} .w-total{margin-top:8px;color:var(--muted)} .w-slot audio{width:100%;max-width:520px}
