:root{--ink:#16130f;--muted:#6b6257;--line:#e5ded4;--bg:#faf8f5;--card:#fff;--accent:#1f6f5c;--accent-soft:#e8f1ee;--warn:#8a5a1a;--warn-soft:#fbf0dd;--danger:#9b2c2c;--danger-soft:#fbe4e4;--danger-line:#f0c9c9;--radius:12px;--ease-out:cubic-bezier(.23, 1, .32, 1)}@media (prefers-color-scheme:dark){:root{--ink:#f2ede6;--muted:#a79c8e;--line:#2e2822;--bg:#14110e;--card:#1c1815;--accent:#6cc0a6;--accent-soft:#1d2c28;--warn:#e0b060;--warn-soft:#33281a;--danger:#f08a8a;--danger-soft:#331c1c;--danger-line:#4a2626}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.wrap{max-width:720px;margin:0 auto;padding:20px 16px 96px}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:1.5rem}h2{margin:28px 0 10px;font-size:1.05rem}p{margin:0 0 12px}.muted{color:var(--muted);font-size:.9rem}strong,.amount{font-variant-numeric:tabular-nums}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;padding:16px}label{color:var(--muted);margin:12px 0 4px;font-size:.85rem;display:block}input,select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;min-height:46px;transition:transform .14s var(--ease-out), background-color .15s var(--ease-out), border-color .15s var(--ease-out), opacity .15s var(--ease-out);border-radius:10px;padding:12px 16px}button:not([disabled]):active{transform:scale(.97)}button[disabled]{opacity:.55;cursor:not-allowed}button.ghost{color:var(--ink);border-color:var(--line);background:0 0}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.block{width:100%}:where(a,button,summary,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}a,button,summary,label{touch-action:manipulation}summary{cursor:pointer}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.stack>*+*{margin-top:10px}.skip{background:var(--card);color:var(--ink);border:1px solid var(--line);z-index:100;border-radius:10px;padding:12px 16px;position:absolute;left:-9999px}.skip:focus{top:12px;left:12px}.pill{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 9px;font-size:.75rem;display:inline-block}a.pill{text-decoration:none}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.danger{background:var(--danger-soft);color:var(--danger)}.err{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-line);border-radius:10px;padding:12px;font-size:.9rem}.ok{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:12px;font-size:.9rem}.code{letter-spacing:.25em;text-align:center;-webkit-user-select:all;user-select:all;padding:14px 0 14px .25em;font:1.9rem/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}progress{appearance:none;background:var(--line);width:100%;height:8px;color:var(--accent);border:none;border-radius:999px;display:block}progress::-webkit-progress-bar{background:var(--line);border-radius:999px}progress::-webkit-progress-value{background:var(--accent);border-radius:999px}progress::-moz-progress-bar{background:var(--accent);border-radius:999px}input[type=file]{background:0 0;padding:8px}.choice{align-items:flex-start;gap:10px;margin:8px 0;display:flex}.choice input{flex:none;width:auto;margin-top:3px}.choice label{color:var(--ink);margin:0;font-size:.95rem}.choice label small{color:var(--muted);font-size:.82rem;display:block}@media (display-mode:standalone){.install-hint{display:none}}.steps{margin:12px 0 0;padding-left:1.3em}.steps li{margin-bottom:10px}.steps li[data-done]{color:var(--muted);text-decoration:line-through}.steps li[data-done] strong{font-weight:400}nav.tabs{background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}nav.tabs a{text-align:center;min-height:56px;color:var(--muted);transition:color .15s var(--ease-out), background-color .15s var(--ease-out);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:8px 4px;font-size:.74rem;text-decoration:none;display:flex}nav.tabs svg{width:22px;height:22px}nav.tabs a:active{background:var(--accent-soft)}nav.tabs a[aria-current=page]{color:var(--accent);box-shadow:inset 0 2px 0 var(--accent);font-weight:600}.skeleton{background:var(--line);border-radius:var(--radius);animation:1.4s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.55}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}table{border-collapse:collapse;width:100%;font-size:.9rem}th{text-align:left;color:var(--muted);font-size:.78rem;font-weight:600}th,td{border-bottom:1px solid var(--line);vertical-align:top;padding:9px 6px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.subtabs{z-index:5;background:var(--bg);border-bottom:1px solid var(--line);scrollbar-width:none;gap:6px;margin:14px -16px 6px;padding:10px 16px;display:flex;position:sticky;top:0;overflow-x:auto}.subtabs::-webkit-scrollbar{display:none}.subtabs a{border:1px solid var(--line);background:var(--card);min-height:40px;color:var(--muted);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:8px 13px;font-size:.85rem;text-decoration:none;display:flex}.subtabs a[aria-current=page]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.subtabs .n{background:var(--warn-soft);color:var(--warn);border-radius:999px;padding:0 6px;font-size:.72rem;font-weight:600}.subtabs a[aria-current=page] .n{color:#fff;background:#ffffff38}table.grid th,table.grid td{padding:5px 0}table.grid td:last-child{padding-left:8px}table.grid input{min-height:42px;padding:9px 10px}.fill-all{align-items:flex-end;gap:10px;margin-top:14px;display:flex}.fill-all button{white-space:nowrap;flex:none}.rowknob{color:var(--muted);justify-content:flex-end;align-items:center;gap:5px;margin:4px 0 0;font-size:.74rem;display:flex}table.grid .rowknob input{flex:none;width:auto;min-height:0;margin:0;padding:0}fieldset[disabled]{opacity:.55}.preview-bar{z-index:20;background:var(--warn-soft);color:var(--warn);border-bottom:1px solid var(--warn);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;font-size:.85rem;display:flex;position:sticky;top:0}.preview-bar button{background:var(--warn);border-color:var(--warn);flex:none;min-height:38px;padding:8px 14px;font-size:.85rem}.preview-bar~#main .subtabs{position:static}.read-only form{display:none}.read-only fieldset[disabled]{opacity:1}.read-only fieldset[disabled] :where(input,select){color:var(--ink);-webkit-text-fill-color:var(--ink);opacity:1}
.wrap.wide{max-width:1080px}.sheetwrap{-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px;overflow-x:auto}.sheetwrap.tall{border-top:1px solid var(--line);max-height:74dvh;overflow-y:auto}table.sheet{border-collapse:separate;border-spacing:0;width:100%;min-width:100%;font-size:.92rem}table.sheet th,table.sheet td{border-bottom:1px solid var(--line);vertical-align:middle;background:var(--card);padding:2px 3px}table.sheet thead th{z-index:3;background:var(--bg);color:var(--muted);letter-spacing:.02em;text-transform:uppercase;text-align:left;white-space:nowrap;padding:8px;font-size:.74rem;font-weight:600;position:sticky;top:0}table.sheet tfoot th{background:var(--bg);text-align:left;font-variant-numeric:tabular-nums;padding:10px 8px}table.sheet th.num,table.sheet td.num{text-align:right}table.sheet th.stick,table.sheet td.stick{z-index:2;min-width:8.5rem;max-width:14rem;box-shadow:1px 0 0 var(--line);position:sticky;left:0}table.sheet thead th.stick{z-index:4}table.sheet tfoot th.stick{z-index:2}table.sheet th.who{text-align:left;padding:4px 8px;font-weight:500}table.sheet .name{line-height:1.25;display:block}table.sheet .sub{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 6px;font-size:.74rem;font-weight:400;line-height:1.3;display:flex}table.sheet .sub:empty{display:none}table.sheet .sub.right{justify-content:flex-end;padding:0 8px 2px}table.sheet .ro{font-variant-numeric:tabular-nums;padding:6px 8px;display:inline-block}table.sheet tr.dim{opacity:.55}table.sheet td.actions{white-space:nowrap;text-align:right;padding-right:6px}table.sheet td.out input.cell{color:var(--danger)}table.sheet tr.detail td{background:var(--bg);padding:8px 10px 12px}@media (hover:hover){table.sheet tbody tr:hover>td,table.sheet tbody tr:hover>th{background:var(--accent-soft)}}input.cell,select.cell{width:100%;min-height:40px;color:inherit;font:inherit;font-variant-numeric:tabular-nums;transition:background-color .16s var(--ease-out), border-color .16s var(--ease-out), box-shadow .16s var(--ease-out);background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 8px}input.cell.num{text-align:right}input.cell::placeholder{color:var(--muted);opacity:.7}select.cell{appearance:none;cursor:pointer;text-overflow:ellipsis}@media (hover:hover){table.sheet tbody tr:hover input.cell:not(:disabled),table.sheet tbody tr:hover select.cell:not(:disabled){border-color:var(--line)}}input.cell:focus,select.cell:focus{background:var(--card);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input.cell:disabled,select.cell:disabled{opacity:1;cursor:default;-webkit-text-fill-color:currentColor}input.cell[data-state=saving],select.cell[data-state=saving]{opacity:.55}input.cell[data-state=saved],select.cell[data-state=saved]{background:var(--accent-soft);border-color:var(--accent)}input.cell[data-state=error],select.cell[data-state=error]{background:var(--danger-soft);border-color:var(--danger)}@media (pointer:coarse){input.cell,select.cell{min-height:46px}}.rownote{font-size:.74rem}.rownote[data-state=saving]{color:var(--muted)}.rownote[data-state=saved]{color:var(--accent);animation:note-in .18s var(--ease-out)}.rownote[data-state=error]{color:var(--danger);font-weight:600}@keyframes note-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:0 6px;font-size:.7rem}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.danger{background:var(--danger-soft);color:var(--danger)}button.mini{min-height:0;color:var(--accent);border-color:var(--accent);background:0 0;border-radius:999px;margin:0 0 2px 4px;padding:4px 10px;font-size:.74rem}@media (hover:hover){button.mini:hover{background:var(--accent-soft)}}button.icon{min-width:34px;min-height:34px;color:var(--muted);background:0 0;border-color:#0000;padding:0;font-size:1rem;line-height:1}@media (hover:hover){button.icon:hover{background:var(--line);color:var(--ink)}}button.icon.danger{color:var(--danger);background:0 0}@media (pointer:coarse){button.icon{min-width:40px;min-height:44px}button.mini{padding:8px 12px}}.chips{flex-wrap:wrap;gap:6px;margin:0 0 10px;display:flex}button.chip{background:var(--card);min-height:40px;color:var(--muted);border-color:var(--line);border-radius:999px;padding:7px 14px;font-size:.85rem}button.chip.small{min-height:34px;padding:5px 12px;font-size:.8rem}button.chip[aria-pressed=true],button.chip[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.chip .amt{opacity:.75;font-variant-numeric:tabular-nums;margin-left:4px}@media (hover:hover){button.chip:not([aria-pressed=true]):not([aria-selected=true]):hover{background:var(--accent-soft)}}.filters{margin-top:14px}.stats{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:1px;padding:10px 12px;display:flex}.stat .muted{font-size:.76rem}.stat strong{font-variant-numeric:tabular-nums;font-size:1.1rem}.sheetbar{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:8px 12px;padding:10px 12px;display:flex}.sheetbar-title{color:var(--muted);flex:100%;font-size:.78rem}.sheetbar label{flex:130px;margin:0}.sheetbar label span,.entrygrid label span,.detailgrid label span{color:var(--muted);margin-bottom:2px;font-size:.74rem;display:block}.sheetbar input,.sheetbar select{min-height:40px;padding:7px 10px}.newentry{padding:12px}.entrygrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:8px 10px;display:grid}.entrygrid label{margin:0}.entrygrid input,.entrygrid select{min-height:42px;padding:8px 10px}.entrygrid .addbtn{min-height:42px}.newentry details.more{margin-top:10px}.newentry details.more>summary{color:var(--muted);font-size:.85rem}label.check{color:var(--ink);align-items:center;gap:8px;margin:10px 0 0;font-size:.88rem;display:flex}label.check input{flex:none;width:auto}.detailgrid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:8px 12px;display:grid}.detailgrid label{margin:0}.detailgrid .proof img{border-radius:8px;max-width:100%;margin-top:8px}.show-sm{display:none}@media (max-width:560px){.hide-sm{display:none}.show-sm{display:inline}table.sheet th.stick,table.sheet td.stick{min-width:7rem}}@media (prefers-reduced-motion:reduce){button:not([disabled]):active{transform:none}.rownote[data-state=saved]{animation:none}input.cell,select.cell{transition:none}}button.thsort{min-height:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0}button.thsort:hover{color:var(--ink)}table.sheet td.pl input.cell{color:var(--accent)}.gallery{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.gallery figure.card{margin:0;padding:10px}.gallery img{aspect-ratio:4/3;object-fit:cover;background:var(--line);border-radius:8px;width:100%;display:block}.gallery .doc{aspect-ratio:4/3;background:var(--accent-soft);color:var(--accent);letter-spacing:.08em;border-radius:8px;place-items:center;font-weight:700;display:grid}.gallery figcaption{margin-top:8px;font-size:.85rem}.gallery figcaption form{margin-top:8px}.gallery figcaption button{min-height:36px;padding:6px 12px;font-size:.8rem}.report h1{font-size:1.6rem}.report section.proj{break-inside:avoid-page;margin-top:26px}.report .names{columns:2 220px;column-gap:28px;margin:6px 0 0;padding:0;list-style:none}.report .names li{break-inside:avoid;justify-content:space-between;gap:12px;padding:2px 0;display:flex}.report .names li span.amt{font-variant-numeric:tabular-nums;color:var(--muted)}.report .pics{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:10px;display:grid}.report .pics img{aspect-ratio:4/3;object-fit:cover;border-radius:6px;width:100%}.report .pics figcaption{color:var(--muted);font-size:.75rem}.report .pics figure{break-inside:avoid;margin:0}.togglegrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:4px 16px;display:grid}@media print{nav.tabs,.noprint,.skip,.preview-bar{display:none!important}body{color:#000;background:#fff}.wrap{max-width:none;padding:0}.card,.stat{background:#fff;border-color:#bbb}.muted{color:#444}a{color:inherit;text-decoration:none}}
