:root{--ink: #24211d;--surface: #ffffff;--paper: #faf8f4;--hairline: #cec8bf;--muted: #8a8378;--subtle: #f2efe8;--red: #b04a3f;--amber: #c9762e;--green: #4e8a63;--blue: #3b6ea5;--purple: #7a5a94;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--rail-w: 236px;--detail-w: 308px;--row-h: 26px;--row-fs: 12px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--sans);font-size:12px;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600}.shell{height:100%;display:grid;grid-template-rows:44px 1fr}.main{display:grid;grid-template-columns:var(--rail-w) 1fr var(--detail-w);min-height:0}.main.no-detail{grid-template-columns:var(--rail-w) 1fr}.topbar{display:flex;align-items:center;gap:14px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--ink)}.topbar .brand{font-weight:700;font-size:13px;letter-spacing:.02em;white-space:nowrap}.topbar .season{white-space:nowrap}.topbar .spacer{flex:1}.search{position:relative;width:260px}.search input{width:100%;height:24px;padding:0 8px;border:1px solid var(--hairline);background:var(--paper);font-size:12px}.search input:focus{outline:none;border-color:var(--ink)}.search .results{position:absolute;top:26px;left:0;right:0;background:var(--surface);border:1px solid var(--ink);z-index:40;max-height:300px;overflow:auto}.search .results button{display:block;width:100%;text-align:left;padding:5px 8px;border-bottom:1px dotted var(--hairline)}.search .results button:hover{background:var(--subtle)}.topbar select{height:24px;border:1px solid var(--hairline);background:var(--surface);font-size:11px;padding:0 4px}.mode-toggle{display:flex;border:1px solid var(--ink);height:24px}.mode-toggle button{padding:0 10px;font-size:10px;letter-spacing:.08em;font-weight:600}.mode-toggle button.on{background:var(--ink);color:var(--surface)}.userchip{display:flex;align-items:center;gap:6px;white-space:nowrap}.initials{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-family:var(--mono);font-size:9px;font-weight:700;color:#fff;border-radius:50%}.rail{border-right:1px solid var(--ink);background:var(--surface);overflow-y:auto;display:flex;flex-direction:column}.rail section{padding:10px 0 6px;border-bottom:1px dotted var(--hairline)}.rail .label{padding:0 12px 6px;display:block}.viewrow{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:3px 12px;font-size:12px}.viewrow:hover{background:var(--subtle)}.viewrow.on{background:var(--ink);color:var(--surface)}.viewrow .n{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--muted)}.viewrow.on .n{color:#ffffffb3}.tree{padding-bottom:4px}.trow{display:flex;align-items:center;gap:5px;padding:2px 12px 2px 0;font-size:12px;white-space:nowrap;overflow:hidden}.trow:hover{background:var(--subtle)}.trow .name{overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.trow .code,.trow .cnt{font-family:var(--mono);font-size:10px;color:var(--muted)}.trow .bad{font-family:var(--mono);font-size:9.5px;font-weight:700;color:#fff;background:var(--red);padding:0 4px;min-width:14px;text-align:center}.trow.lvl0{padding-left:10px;font-weight:600}.trow.lvl1{padding-left:26px}.trow.lvl2{padding-left:42px}.twist{width:12px;color:var(--muted);font-size:9px;flex:none}.cb{width:12px;height:12px;flex:none;border:1px solid var(--ink);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-size:9px;line-height:1;font-family:var(--mono);color:var(--surface)}.cb.on{background:var(--ink)}.cb.some{background:var(--surface);color:var(--ink)}.legend{padding:10px 12px;margin-top:auto}.legend .row{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:11px;color:var(--muted)}.swatch{width:10px;height:10px;flex:none}.agenda{overflow-y:auto;min-width:0;background:var(--paper)}.viewhead{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:7px 14px;background:var(--paper);border-bottom:1px solid var(--hairline);min-height:34px}.viewhead .title{font-weight:700;font-size:13px}.viewhead .sub{color:var(--muted);font-size:11px}.viewhead .clearview{font-size:10px;color:var(--muted);text-decoration:underline dotted}.weekhead{display:flex;align-items:baseline;gap:8px;padding:12px 14px 3px;border-bottom:1px solid var(--ink);margin-bottom:1px}.weekhead.overduehead{color:var(--red);border-color:var(--red)}.weekhead .wl{font-size:10.5px;font-weight:700;letter-spacing:.1em}.weekhead .wc{font-family:var(--mono);font-size:10px;color:var(--muted)}.weekhead .wu{font-family:var(--mono);font-size:10px;color:var(--red);font-weight:700}.frow{display:grid;grid-template-columns:20px 52px 4px 34px minmax(140px,1.4fr) 30px minmax(70px,90px) minmax(80px,1fr) 74px;gap:8px;align-items:center;min-height:var(--row-h);padding:0 14px 0 6px;border-bottom:1px dotted var(--hairline);font-size:var(--row-fs);cursor:default;background:var(--surface)}.frow:hover{background:var(--subtle)}.frow.sel{outline:1.5px solid var(--ink);outline-offset:-1.5px}.frow.overdue{background:#f6e8e6}.frow.thisweek{background:#f7efe2}.frow.filed{opacity:.45}.frow .due{font-family:var(--mono);white-space:pre}.frow .due.od{color:var(--red);font-weight:700}.frow .jur{font-family:var(--mono);font-size:10.5px}.frow .fname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frow .ccode{font-family:var(--mono);font-size:10px;color:var(--muted)}.frow .form{font-family:var(--mono);font-size:11px}.frow .meta{font-family:var(--mono);font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frow .meta .warn{color:var(--amber)}.frow .meta .bad{color:var(--red);font-weight:700}.typebar{width:4px;height:calc(var(--row-h) - 8px);background:var(--tb, var(--muted))}.typebar.hatch{background:repeating-linear-gradient(135deg,var(--tb) 0 2px,var(--surface) 2px 4.5px);outline:1px solid var(--tb);outline-offset:-.5px}.stbox{width:9px;height:9px;flex:none;border:1px solid var(--ink);background:var(--surface)}.stbox.in_progress{background:repeating-linear-gradient(135deg,var(--ink) 0 1.5px,transparent 1.5px 3.5px)}.stbox.prepared{background:linear-gradient(to top,var(--ink) 50%,var(--surface) 50%)}.stbox.filed{background:var(--ink)}.rowcb{visibility:hidden}.frow:hover .rowcb,.rowcb.on,.agenda.selecting .rowcb{visibility:visible}.dayfold{padding:3px 14px 3px 90px;font-size:11px;color:var(--muted);border-bottom:1px dotted var(--hairline);background:var(--surface);width:100%;text-align:left}.dayfold:hover{color:var(--ink)}.chain{display:inline-flex;border:1px solid var(--ink);height:15px}.chain.blocked{border-color:var(--red)}.chain.optional{opacity:.35}.chain span{display:inline-flex;align-items:center;padding:0 4px;font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.03em;border-right:1px solid var(--ink);color:var(--muted);background:var(--surface)}.chain span:last-child{border-right:none}.chain span.done{background:var(--ink);color:var(--surface)}.chain span.stuck{color:var(--red)}.chain.blocked span{border-color:var(--red)}.density-comfortable{--row-h: 42px;--row-fs: 12.5px}.density-compact{--row-h: 26px;--row-fs: 12px}.density-spreadsheet{--row-h: 17px;--row-fs: 11px}.density-spreadsheet .frow{font-family:var(--mono);border-bottom:none}.density-spreadsheet .frow:nth-child(2n of.frow){background:var(--paper)}.density-comfortable .frow .fname{white-space:normal;line-height:1.25}.bulkbar{position:sticky;bottom:0;z-index:25;display:flex;align-items:center;gap:10px;background:var(--ink);color:var(--surface);padding:7px 14px;font-size:12px}.bulkbar button{border:1px solid rgba(255,255,255,.5);color:var(--surface);padding:3px 9px;font-size:11px}.bulkbar button:hover{background:#ffffff1f}.bulkbar .x{margin-left:auto;border:none;text-decoration:underline dotted}.detail{border-left:1px solid var(--ink);background:var(--surface);overflow-y:auto;padding-bottom:30px}.detail .dhead{padding:12px 14px 10px;border-bottom:1px solid var(--ink)}.detail .dhead .fname{font-weight:700;font-size:13.5px}.detail .dhead .sub{color:var(--muted);font-size:11px;margin-top:2px}.detail .close{float:right;color:var(--muted);font-size:14px}.dsec{padding:10px 14px;border-bottom:1px dotted var(--hairline)}.dsec .label{display:block;margin-bottom:6px}.duebig{display:flex;align-items:baseline;gap:8px}.duebig .d{font-family:var(--mono);font-size:16px;font-weight:700}.duebig .d.struck{text-decoration:line-through;color:var(--muted);font-size:13px;font-weight:400}.pill{display:inline-block;font-family:var(--mono);font-size:9.5px;font-weight:700;padding:1px 6px;border:1px solid currentColor}.pill.overdue{color:var(--red)}.pill.soon{color:var(--amber)}.pill.ok{color:var(--green)}.pill.neutral{color:var(--muted)}.basis{color:var(--muted);font-size:10.5px;margin-top:4px}.flagline{font-size:10.5px;color:var(--amber);margin-top:3px;font-family:var(--mono)}.linkbtn{color:var(--blue);text-decoration:underline dotted;font-size:11.5px;padding:0}.linkbtn.red{color:var(--red)}.ladder{display:flex;flex-direction:column;gap:1px}.lrow{display:flex;align-items:center;gap:8px;padding:5px 8px;border:1px solid var(--hairline);background:var(--paper)}.lrow.done{border-color:var(--ink);background:var(--surface)}.lrow.next{border-style:dashed}.lrow.stuck{border-color:var(--red)}.lrow .stage{font-family:var(--mono);font-size:9px;font-weight:700;width:34px;letter-spacing:.05em}.lrow .who{flex:1;font-size:11.5px}.lrow .when{font-family:var(--mono);font-size:10px;color:var(--muted)}.lrow button{border:1px solid var(--ink);padding:2px 8px;font-size:10.5px;background:var(--surface)}.lrow button:hover{background:var(--ink);color:var(--surface)}.lrow button.ghost{border-color:var(--hairline);color:var(--muted)}.sendback{margin-top:6px}.sendback textarea{width:100%;height:44px;border:1px solid var(--hairline);padding:4px 6px;font-size:11.5px;resize:vertical;background:var(--paper)}.field{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:11.5px}.field .k{width:92px;flex:none;color:var(--muted);font-size:10.5px}.field .v{flex:1;min-width:0}.field input,.field select{width:100%;height:22px;border:1px solid var(--hairline);background:var(--surface);padding:0 5px;font-size:11.5px}.field input:focus,.field select:focus{outline:none;border-color:var(--ink)}.k1row{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:11.5px}.k1row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k1row button{font-family:var(--mono);font-size:9.5px;border:1px solid var(--hairline);padding:1px 5px}.k1row button.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}.actrow{display:flex;gap:8px;padding:3px 0;font-size:11px}.actrow .at{font-family:var(--mono);color:var(--muted);flex:none;font-size:10px}.actrow .what{min-width:0}.actrow .cmt{color:var(--muted);font-style:italic}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#24211d59;display:flex;align-items:flex-start;justify-content:center;padding-top:8vh;z-index:100}.dialog{background:var(--surface);border:1px solid var(--ink);width:560px;max-height:78vh;display:flex;flex-direction:column}.dialog header{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid var(--ink);font-weight:700}.dialog header .close{margin-left:auto;color:var(--muted)}.dialog .body{padding:12px 14px;overflow-y:auto}.dialog footer{display:flex;gap:8px;justify-content:flex-end;padding:10px 14px;border-top:1px solid var(--hairline)}.btn{border:1px solid var(--ink);background:var(--surface);padding:4px 12px;font-size:11.5px}.btn:hover{background:var(--subtle)}.btn.primary{background:var(--ink);color:var(--surface)}.btn.primary:hover{background:#3a362f}.btn[disabled]{opacity:.4;cursor:not-allowed}.dialog.wide{width:880px}.adm{display:grid;grid-template-columns:190px 265px 1fr;gap:0;min-height:380px}.admcol{border-right:1px dotted var(--hairline);padding:0 10px;overflow-y:auto;max-height:60vh}.admcol:last-child{border-right:none}.admcol>.label{display:block;padding:2px 0 6px}.admrow{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:3px 4px;font-size:12px}.admrow:hover{background:var(--subtle)}.admrow.on{background:var(--ink);color:var(--surface)}.admrow.off{opacity:.45}.admrow .code{font-size:10px;color:var(--muted);width:24px}.admrow.on .code{color:#ffffffb3}.admrow .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admedit{display:flex;gap:5px;align-items:center;padding:2px 0 8px;border-bottom:1px dotted var(--hairline);margin-bottom:6px}.admgroup{margin-bottom:8px}.admghead{display:flex;align-items:center;gap:6px;padding:3px 0 2px;border-bottom:1px solid var(--hairline);margin-bottom:2px}.admfiler{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;text-align:left;padding:2px 4px 2px 10px;font-size:11.5px}button.admfiler:hover{background:var(--subtle)}.admfiler.on{background:var(--ink);color:var(--surface)}.admfiler.off{opacity:.45}.admfiler .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admfiler .etype{font-size:9px;color:var(--muted);flex:none}.admfiler.on .etype{color:#ffffffb3}.consorow{cursor:default;font-size:10.5px;color:var(--muted)}.admadd{display:flex;gap:4px;align-items:center;padding:3px 0 3px 10px;flex-wrap:nowrap}input.mini,select.mini{height:21px;border:1px solid var(--hairline);background:var(--surface);padding:0 4px;font-size:11px;min-width:0}input.mini:focus,select.mini:focus{outline:none;border-color:var(--ink)}.ck{display:flex;gap:5px;align-items:center;font-size:11px;padding:3px 0}.linkbtn[disabled]{opacity:.4;cursor:not-allowed}.prevrow{display:grid;grid-template-columns:1fr 60px 16px 60px;gap:8px;padding:3px 0;font-size:11.5px;align-items:baseline}.prevrow .mono{font-size:11px}.prevrow.bad{color:var(--red)}.prevgroup{margin:8px 0 2px}.sheetwrap{overflow:auto;background:var(--surface)}.sheet{border-collapse:collapse;font-size:11px}.sheet th,.sheet td{border:1px solid var(--hairline);padding:2px 6px;white-space:nowrap}.sheet thead th{position:sticky;top:0;background:var(--paper);font-family:var(--mono);font-size:9.5px;font-weight:600;z-index:5}.sheet tbody th{position:sticky;left:0;background:var(--surface);text-align:left;font-weight:400;max-width:220px;overflow:hidden;text-overflow:ellipsis}.sheet td{text-align:center;cursor:pointer}.sheet td:hover{outline:1.5px solid var(--ink);outline-offset:-1.5px}.sheet td.unsigned{background:#f6e8e6}.loginwrap{height:100%;display:flex;align-items:center;justify-content:center;background:var(--paper)}.loginbox{width:340px;border:1px solid var(--ink);background:var(--surface);padding:22px}.loginbox h1{font-size:15px;margin-bottom:2px}.loginbox .sub{color:var(--muted);font-size:11px;margin-bottom:16px}.userpick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.userpick button{display:flex;align-items:center;gap:6px;border:1px solid var(--hairline);padding:5px 9px;font-size:12px}.userpick button.on{border-color:var(--ink);background:var(--subtle)}.loginbox input[type=password]{width:100%;height:28px;border:1px solid var(--hairline);padding:0 8px;margin-bottom:12px;background:var(--paper)}.loginbox .err{color:var(--red);font-size:11px;margin-bottom:8px}.empty{padding:40px;text-align:center;color:var(--muted);font-size:12px}.railfoot{padding:10px 12px 12px;border-top:1px solid var(--hairline);display:flex;flex-direction:column;gap:6px}.railfoot button{text-align:left;font-size:12.5px;color:var(--ink);border:1px solid var(--hairline);background:var(--surface);padding:6px 10px}.railfoot button:hover{border-color:var(--ink);background:var(--subtle)}.userrow{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px}.userrow .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.restag{font-family:var(--mono);font-size:9px;color:var(--purple);border:1px solid currentColor;padding:0 3px}
