:root{--cream:#f2ede8;--cream-2:#e8e2db;--paper:#fbf9f6;--ink:#002a44;--ink-2:#1a4a64;--muted:#5a7a90;--line:#d9d2c9;--ok:#2f6b4f;--warn:#a65a12;--bad:#a3322b;--serif:"Source Serif 4", Georgia, serif;--sans:"Hanken Grotesk", system-ui, -apple-system, sans-serif;--radius:10px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--cream);color:var(--ink);font:16px/1.5 var(--sans);margin:0}h1,h2,h3{font-family:var(--serif);margin:0;font-weight:600;line-height:1.15}h1{font-size:clamp(1.7rem,4vw,2.3rem)}h2{margin-bottom:14px;font-size:1.2rem}p{margin:0}a{color:inherit}code{word-break:break-all;font-size:.85em}:focus-visible{outline:3px solid var(--ink-2);outline-offset:2px}.center-screen{min-height:100dvh;color:var(--muted);place-items:center;display:grid}.muted{color:var(--muted)}.small{font-size:.85rem}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:.75rem;font-weight:600}.mono{font-variant-numeric:tabular-nums}.error{color:var(--bad);font-weight:500}.ok{color:var(--ok);font-weight:500}.brand{font-family:var(--serif);letter-spacing:.02em;align-items:baseline;gap:6px;font-size:1.35rem;display:inline-flex}.brand b{letter-spacing:.08em;font-weight:600}.brand i{opacity:.75;font-style:normal;font-weight:500}.brand.light{color:var(--cream)}.btn{border:1px solid var(--ink);min-height:44px;color:var(--ink);font:600 .95rem var(--sans);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0 18px;text-decoration:none;display:inline-flex}.btn.primary{background:var(--ink);color:var(--cream)}.btn.primary:hover:not(:disabled){background:var(--ink-2)}.btn.ghost{border-color:var(--line)}.btn.ghost:hover{background:var(--cream-2)}.btn.small{min-height:36px;padding:0 12px;font-size:.85rem}.btn:disabled{opacity:.55;cursor:not-allowed}.field{gap:6px;display:grid}.field>span{color:var(--ink-2);font-size:.85rem;font-weight:600}input,select,textarea{background:var(--paper);width:100%;min-height:44px;color:var(--ink);font:inherit;border:1px solid #b9b0a5;border-radius:8px;padding:10px 12px}input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--ink);vertical-align:middle}.stack{gap:16px;display:grid}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.login{grid-template-columns:1fr;min-height:100dvh;display:grid}.login-story{background:var(--ink);color:var(--cream);align-content:space-between;gap:40px;padding:28px 24px;display:grid}.login-story h1{max-width:18ch;font-size:clamp(1.7rem,5vw,2.6rem)}.login-story .eyebrow,.login-story small{color:#9fb8c8}.login-form{align-content:center;width:100%;max-width:460px;margin:0 auto;padding:32px 24px;display:grid}.qr{background:#fff;border-radius:8px;justify-self:start;padding:8px}@media (min-width:860px){.login{grid-template-columns:1.1fr 1fr}.login-story,.login-form{padding:48px}}.topbar{background:var(--ink);color:var(--cream);padding:10px max(16px, env(safe-area-inset-left));z-index:10;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.topbar a{text-decoration:none}.who{text-align:right;align-items:center;gap:12px;font-size:.9rem;display:flex}.who small{color:#9fb8c8;font-size:.75rem;display:block}.who .btn{color:var(--cream);border-color:#3b6580;min-height:40px}.who .btn:hover{background:var(--ink-2)}.page{gap:20px;max-width:1040px;margin:0 auto;padding:24px 16px 80px;display:grid}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-head .stage{margin-bottom:8px}.back{color:var(--muted);justify-self:start;font-size:.9rem;text-decoration:none}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.form-grid{grid-template-columns:1fr;gap:14px;display:grid}.span2{grid-column:1/-1}@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}}.empty{text-align:center;border-radius:var(--radius);border:1px dashed #b9b0a5;justify-items:center;gap:8px;padding:48px 16px;display:grid}.project-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.project-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;justify-content:space-between;gap:8px;padding-bottom:12px;display:flex}.project-link{gap:4px;padding:18px 18px 6px;text-decoration:none;display:grid}.project-link strong{font:600 1.25rem var(--serif)}.project-card .btn{align-self:flex-start;margin:0 18px}.meta{color:var(--muted);margin-top:6px;font-size:.85rem}.project-card:hover{border-color:var(--ink-2)}.stage{letter-spacing:.06em;text-transform:uppercase;background:var(--cream-2);color:var(--ink-2);border-radius:99px;width:-moz-fit-content;width:fit-content;padding:3px 9px;font-size:.72rem;font-weight:700;display:inline-block}.stage.s3{background:var(--ink);color:var(--cream)}.stage.s4{color:var(--ok);background:#dbe9e1}.tabs{border-bottom:1px solid var(--line);gap:4px;display:flex;overflow-x:auto}.tabs button{min-height:44px;font:600 .95rem var(--sans);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;padding:0 16px}.tabs button.active{color:var(--ink);border-bottom-color:var(--ink)}.two-col{grid-template-columns:1fr;gap:20px;display:grid}@media (min-width:860px){.two-col{grid-template-columns:1fr 1.3fr}}.notes{white-space:pre-wrap}.inline-form{grid-template-columns:1fr;gap:8px;margin-bottom:14px;display:grid}@media (min-width:640px){.inline-form{grid-template-columns:1fr auto auto auto}}.notes-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.notes-list li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex}.notes-list li label{flex:200px;align-items:center;gap:10px;min-height:44px;display:flex}.notes-list li.done span{color:var(--muted);text-decoration:line-through}.chip{background:var(--cream-2);border-radius:99px;padding:2px 8px;font-size:.72rem;font-weight:700}.chip.urgent{color:var(--bad);background:#f3d9d6}.chip.highlight{color:var(--warn);background:#f6e6c9}.chip.st-authorized,.chip.st-purchased{color:var(--ink-2);background:#dbe6ee}.chip.st-delivered{color:var(--ok);background:#dbe9e1}.stats{grid-template-columns:1fr;gap:12px;display:grid}@media (min-width:640px){.stats{grid-template-columns:repeat(3,1fr)}}.stats>div{background:var(--ink);color:var(--cream);border-radius:var(--radius);gap:4px;padding:18px;display:grid}.stats span{letter-spacing:.1em;text-transform:uppercase;color:#9fb8c8;font-size:.75rem}.stats strong{font:600 1.7rem var(--serif);font-variant-numeric:tabular-nums}.stats .pos{color:#9bd6b6}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-size:.72rem}td{border-bottom:1px solid var(--line);vertical-align:top;padding:12px 10px}td small{color:var(--muted);display:block}.num{text-align:right;white-space:nowrap}td.pos{color:var(--ok)}@media (prefers-reduced-motion:no-preference){.btn,.project-card{transition:background .15s,border-color .15s}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mainnav{background:var(--paper);border-bottom:1px solid var(--line);gap:4px;padding:0 12px;display:flex;overflow-x:auto}.mainnav a{min-height:44px;color:var(--muted);white-space:nowrap;border-bottom:3px solid #0000;align-items:center;padding:0 14px;font-size:.92rem;font-weight:600;text-decoration:none;display:inline-flex}.mainnav a.active{color:var(--ink);border-bottom-color:var(--ink)}.search{max-width:420px}.card .stack{gap:12px}.check{align-items:center;gap:10px;min-height:44px;font-size:.92rem;display:flex}.check-list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.check-list label{align-items:center;gap:10px;min-height:44px;display:flex}.switch{align-items:center;gap:10px;min-height:44px;display:inline-flex}tr.inactive td{color:var(--muted)}td.neg{color:var(--bad)}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.filters h2{margin:0 auto 0 0}.filters select{width:auto}.gallery{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.gallery li{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);display:grid;overflow:hidden}.gallery img,.gallery .ph{aspect-ratio:4/3;object-fit:cover;background:var(--cream-2);width:100%;display:block}.gallery li>div{gap:2px;padding:10px 12px 12px;display:grid}.gallery small{color:var(--muted)}.gallery p{font-size:.9rem}.funds{gap:10px;margin:0 0 14px;padding:0;list-style:none;display:grid}.funds li{border-top:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:6px 14px;padding:12px 0;display:grid}.funds li>div{justify-items:start;gap:2px;display:grid}.funds small{color:var(--muted)}.fund-left{font:600 1.25rem var(--serif)}.fund-form{grid-column:1/-1;grid-template-columns:1fr auto;margin:0}.create-fund{grid-template-columns:1fr;margin:6px 0 0}@media (min-width:640px){.create-fund{grid-template-columns:1fr 200px auto}}.materials{margin:0;padding:0;list-style:none;display:grid}.materials>li{border-top:1px solid var(--line);gap:10px;padding:14px 0;display:grid}.mat-main{grid-template-columns:1fr auto auto;align-items:start;gap:6px 14px;display:grid}.mat-main small{color:var(--muted);display:block}.mat-qty{white-space:nowrap}.mat-actions{flex-wrap:wrap;gap:8px;display:flex}.subpanel{background:var(--cream);border:1px solid var(--line);border-radius:var(--radius);gap:14px;padding:16px;display:grid}.subpanel h3{font-size:1.05rem}tr.chosen td{background:#eaf2ec}.chip.st-requested{color:var(--warn);background:#f6e6c9}.sigpad{justify-items:start;gap:8px;display:grid}.sigpad canvas{aspect-ratio:16/5;touch-action:none;cursor:crosshair;background:#fff;border:1px dashed #8a99a5;border-radius:8px;width:100%;max-width:640px}@media (max-width:639px){.mat-main{grid-template-columns:1fr auto}.mat-main .chip{grid-column:1/-1;justify-self:start}}.stats.four{grid-template-columns:repeat(2,1fr)}@media (min-width:860px){.stats.four{grid-template-columns:repeat(4,1fr)}}.stats .warn{color:#f0b46a}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.card-head h2{margin:0}.note-form{grid-template-columns:1fr;gap:8px;margin-bottom:14px;display:grid}@media (min-width:640px){.note-form{grid-template-columns:1fr 1fr}.note-form .note-body{grid-column:1/-1}}.timeline{border-left:2px solid var(--line);gap:14px;margin:0;padding:0 0 0 14px;list-style:none;display:grid}.timeline li{gap:2px;display:grid;position:relative}.timeline li:before{content:"";background:var(--ink-2);border-radius:50%;width:8px;height:8px;position:absolute;top:7px;left:-20px}.timeline li.finance:before{background:var(--ok)}.timeline li.photo:before{background:var(--warn)}.timeline small{color:var(--muted)}.card-actions{padding:0 18px}.card-actions .btn{margin:0}
