:root{--navy:#132a4e;--navy-2:#1e3c6e;--sky:#3f8fcb;--sky-light:#eaf3fa;--bg:#f4f7fa;--card:#fff;--line:#dce4ec;--text:#1b2432;--sub:#5a6b80;--good:#1e7a46;--good-bg:#e7f5ec;--warn:#b4531f;--warn-bg:#fbeee4;--bad:#b4231f;--bad-bg:#fbebea;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0e1520;--card:#161f2c;--line:#28384c;--text:#e7edf5;--sub:#8ca0b8;--sky-light:#132538;--good-bg:#123424;--warn-bg:#3a2718;--bad-bg:#3a1a18;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:var(--sky)}.app-header{background:var(--navy);color:#fff;padding:14px 20px 0}.app-header .top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.brand{color:#fff;align-items:center;gap:12px;text-decoration:none;display:flex}.mark{background:var(--sky);width:36px;height:36px;color:var(--navy);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.brand-logo{flex-shrink:0;width:auto;height:36px;display:block}.brand h1{margin:0;font-size:16px;font-weight:600}.brand p{color:#b9c9de;margin:1px 0 0;font-size:12px}.user-menu{color:#b9c9de;align-items:center;gap:10px;font-size:12.5px;display:flex}.user-menu b{color:#fff;font-weight:600}.user-menu a{color:#b9c9de;text-decoration:none}.user-menu a:hover{color:#fff}.user-menu button{color:#fff;cursor:pointer;background:0 0;border:1px solid #3a5580;border-radius:6px;padding:5px 10px;font-size:12px}.bell{position:relative}.bell>button{padding:3px 8px;font-size:14px;position:relative}.bell .badge{color:#fff;text-align:center;background:#dc2626;border-radius:9px;min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:700;line-height:17px;position:absolute;top:-6px;right:-7px}.bell-menu{width:360px;max-width:calc(100vw - 32px);max-height:440px;color:var(--text);border:1px solid var(--line);z-index:50;background:#fff;border-radius:10px;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 10px 30px #0f172a2e}.bell-head{border-bottom:1px solid var(--line);color:var(--text);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.bell-head b{color:var(--text)}.user-menu .bell-menu button.linkbtn{color:#2563eb;border:none;padding:0}.user-menu .bell-menu button.bell-item{text-align:left;border:none;border-bottom:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:0;padding:10px 12px;display:block}.user-menu .bell-menu button.bell-item:hover{background:#f4f7fb}.bell-item.unread{box-shadow:inset 3px 0 #2563eb}.bell-item.unread .t{font-weight:700}.bell-item .t{font-size:13px}.bell-item .b{color:#64748b;margin-top:2px;font-size:12px}.bell-item .w{color:#94a3b8;margin-top:4px;font-size:11px}nav.tabs{flex-wrap:wrap;gap:4px;display:flex}nav.tabs a{color:#b9c9de;white-space:nowrap;border-radius:7px 7px 0 0;padding:8px 13px;font-size:13px;text-decoration:none}nav.tabs a:hover{color:#fff}nav.tabs a.active{background:var(--bg);color:var(--navy)}@media (prefers-color-scheme:dark){nav.tabs a.active{color:var(--text)}}main.page{max-width:1180px;margin:0 auto;padding:22px 18px 60px}main.page:has(.board-page){max-width:none;padding-left:16px;padding-right:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:18px}.card h2{text-transform:uppercase;letter-spacing:.03em;color:var(--sub);margin:0 0 14px;font-size:13px;font-weight:600}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.card-head h2{margin:0}.desc{color:var(--sub);margin:-8px 0 14px;font-size:12.5px}.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px;display:grid}@media (width>=900px){.kpis-one-row{grid-template-columns:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}}.kpis-one-row .kpi{padding:12px 14px}.kpis-one-row .kpi .lbl{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kpi{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.kpi .lbl{color:var(--sub);margin-bottom:6px;font-size:12px}.kpi .val{letter-spacing:-.01em;font-size:20px;font-weight:650}.kpi-btn{text-align:left;font:inherit;color:inherit;cursor:pointer}.kpi-btn:hover{border-color:#93a8c6}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;color:var(--sub);border-bottom:1px solid var(--line);white-space:nowrap;padding:6px 8px;font-size:11.5px}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:8px;font-size:13.5px}tr:last-child td{border-bottom:none}td.num,th.num{text-align:right}.muted{color:var(--sub);font-size:12.5px}.tag{white-space:nowrap;border-radius:20px;padding:2px 8px;font-size:11px;display:inline-block}.tag.good{background:var(--good-bg);color:var(--good)}.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.bad{background:var(--bad-bg);color:var(--bad)}.tag.neutral{background:var(--sky-light);color:var(--navy-2)}@media (prefers-color-scheme:dark){.tag.neutral{color:var(--sky)}}label{color:var(--sub);margin-bottom:5px;font-size:12.5px;display:block}input,select,textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);border-radius:7px;margin-bottom:12px;padding:9px 10px;font-family:inherit;font-size:14px}input:focus,select:focus,textarea:focus{outline:2px solid var(--sky);outline-offset:-1px}td input,td select{margin:0;padding:6px 8px;font-size:13px}.grid2{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}@media (width<=560px){.grid2{grid-template-columns:1fr}}.btn{cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:7px;padding:9px 16px;font-family:inherit;font-size:13.5px}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--good);border-color:var(--good);color:#fff}.btn.navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn.danger{border-color:var(--bad);color:var(--bad);background:0 0}.btn.small{padding:5px 10px;font-size:12px}.linkbtn{color:var(--sky);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:12.5px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.seg{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.seg button{border:1px solid var(--line);background:var(--card);color:var(--text);font:inherit;cursor:pointer;border-radius:7px;padding:8px 12px;font-size:13.5px}.seg button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.view-toggle a{color:var(--navy-2);border-radius:6px;padding:6px 14px;font-size:13px;text-decoration:none}.view-toggle a.active{background:var(--card);color:var(--navy);font-weight:600;box-shadow:0 1px 2px #0000000f}.kcol-banner{border-radius:8px;margin-bottom:8px;padding:14px 10px 8px;font-size:13px;font-weight:600}.kadd{text-align:left;width:100%;color:var(--sky);font:inherit;cursor:pointer;background:0 0;border:1px dashed #0000;border-radius:6px;padding:6px 8px;font-size:13px}.kadd:hover{border-color:var(--sky);background:var(--card)}.modal-wide{max-width:760px;max-height:92vh;overflow-y:auto}.task-title{background:0 0;border-color:#0000;margin:2px 0 10px;padding:4px 6px;font-size:18px;font-weight:600}.task-title:hover,.task-title:focus{border-color:var(--line);background:var(--card)}.labels-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.label-chip{align-items:center;gap:2px;display:inline-flex}.popover{z-index:60;background:var(--card);border:1px solid var(--line);border-radius:10px;width:300px;padding:12px;position:absolute;box-shadow:0 10px 28px #091e4240}.popover-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.popover-head .linkbtn{font-size:18px;line-height:1}.popover-list{max-height:300px;overflow-y:auto}.popover input[type=text],.popover input:not([type]){margin-bottom:6px}.label-row{align-items:center;gap:8px;margin:0;padding:3px 0;font-weight:400;display:flex}.label-row input[type=checkbox]{width:auto;margin:0}.label-row-chip{cursor:pointer;text-align:left;background:0 0;border:none;flex:1;padding:0}.klabel-wide{border-radius:4px;min-height:30px;padding:7px 10px;font-size:12.5px;display:block}.label-preview{background:var(--bg);border-radius:6px;margin-bottom:8px;padding:14px 24px}.color-grid{grid-template-columns:repeat(5,1fr);gap:5px;margin-bottom:10px;display:grid}.color-swatch{cursor:pointer;border:2px solid #0000;border-radius:4px;height:30px}.color-swatch.on{border-color:var(--navy);box-shadow:inset 0 0 0 2px #fff}.picker-anchor{position:relative}.picker-anchor>.popover{margin-top:6px;top:100%;left:0}.members-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.member-chip{background:var(--bg);border-radius:14px;align-items:center;gap:5px;padding:2px 8px 2px 2px;font-size:12.5px;display:inline-flex}.add-circle{background:var(--bg);cursor:pointer;width:30px;height:30px;color:var(--navy);border:none;border-radius:6px;font-size:18px}.add-circle:hover{background:var(--sky-light)}.search-select{text-align:left;min-width:170px;display:inline-block;position:relative}.search-select.full{width:100%;margin-bottom:12px;display:block}.search-select.full .search-select-pop{left:0;right:auto}.search-select-btn{border:1px solid var(--line);background:var(--card);width:100%;color:var(--text);font:inherit;cursor:pointer;border-radius:7px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:13.5px;display:flex}.search-select-btn:hover{border-color:var(--sky)}.search-select-pop{z-index:70;background:var(--card);border:1px solid var(--line);border-radius:8px;width:max(100%,240px);padding:6px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 10px 28px #091e4233}.search-select-pop input{margin:0 0 6px}.search-select-list{max-height:260px;overflow-y:auto}.search-select-list button{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:5px;padding:7px 10px;font-size:13.5px;display:block}.search-select-list button.hi{background:var(--sky-light)}.search-select-list button.sel{font-weight:600}.opex-chart{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:6px;height:200px;margin:8px 0 4px;display:grid}.opex-col{cursor:pointer;height:100%;font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;flex-direction:column;align-items:stretch;padding:2px;display:flex}.opex-col:hover,.opex-col.on{border-color:var(--sky);background:var(--sky-light)}.opex-bar{flex-direction:column-reverse;flex:1;display:flex;position:relative}.opex-bar>div:not(.opex-budget){border-radius:2px}.opex-budget{border-top:2px dashed var(--bad);z-index:1;position:absolute;left:-3px;right:-3px}.opex-val{text-align:center;white-space:nowrap;margin-top:3px;font-size:10.5px;font-weight:600}.opex-col .muted{text-align:center;font-size:11px}.opex-legend-line{border-top:2px dashed var(--bad);vertical-align:middle;width:16px;margin-right:6px;display:inline-block}.opex-table td,.opex-table th{white-space:nowrap;padding:6px 7px;font-size:12.5px}.opex-table .sel{background:var(--sky-light)}.opex-table .opex-cell{cursor:pointer}.opex-table .opex-cell:hover{background:var(--sky-light);outline:1px solid var(--sky)}.opex-plus{color:#0000;font-weight:600}.opex-cell:hover .opex-plus{color:var(--sky)}.opex-table .sub-total td{border-top:1px solid var(--line);font-weight:600}.opex-table .grand-total td,table .grand-total td{border-top:2px solid var(--navy);font-weight:700}.modal-back{z-index:50;background:#091e4273;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--card);border-radius:10px;width:100%;max-width:440px;padding:20px;box-shadow:0 12px 32px #00000040}.kanban{align-items:flex-start;gap:12px;padding-bottom:8px;display:flex;overflow-x:auto}main.page:has(.board-page) .kanban .kcol{max-height:calc(100vh - 250px);overflow-y:auto}main.page:has(.board-page) .kcol-head{z-index:1;background:inherit;border-radius:10px 10px 0 0;margin:-8px -8px 0;padding:12px 14px 8px;position:sticky;top:-8px}.kcol{background:var(--sky-light);border:1px solid var(--line);border-radius:10px;flex:0 0 272px;min-height:120px;padding:8px}.kcol.kcol-accent{border-top:4px solid var(--navy)}.kcol.over{outline:2px dashed var(--sky)}.kcol-head{color:var(--navy);justify-content:space-between;align-items:flex-start;padding:4px 6px 8px;font-size:13.5px;display:flex}.kcount{background:var(--card);border:1px solid var(--line);color:var(--sub);border-radius:10px;padding:0 8px;font-size:12px}.kdot{vertical-align:1px;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.kcard{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:8px;margin-bottom:8px;padding:8px 10px;box-shadow:0 1px 2px #132a4e0f}.kcard:hover{border-color:var(--sky)}.kcard.dragging{opacity:.45}.klabels{flex-wrap:wrap;gap:4px;margin-bottom:6px;display:flex}.klabel{letter-spacing:.02em;border-radius:4px;padding:2px 8px;font-size:10.5px;font-weight:700}.ktitle{color:var(--text);word-break:break-word;margin-bottom:6px;font-size:13px;line-height:1.35}.kmeta{color:var(--sub);flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;display:flex}.kmeta .klate{color:var(--bad);font-weight:600}.kmeta .kdone{color:var(--good);font-weight:600}.kwho{align-items:center;gap:3px;margin-left:auto;display:flex}.kavatar{background:var(--navy);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;display:inline-flex}.kmove{width:auto;margin:6px 0 0;padding:3px 6px;font-size:11.5px}.kempty{text-align:center;padding:14px 0;font-size:12.5px}@media (hover:hover){.kmove{display:none}.kcard:hover .kmove{display:inline-block}}.capture-pic{margin-bottom:10px;display:inline-block;position:relative}.capture-pic img{border:1px solid var(--line);border-radius:6px;max-width:100%;max-height:260px;display:block}.capture-pic .rm{background:var(--card);position:absolute;top:4px;right:4px}kbd{font:inherit;border:1px solid var(--line);background:var(--card);border-bottom-width:2px;border-radius:4px;padding:0 4px;font-size:11.5px}.swatches{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.swatch{cursor:pointer;align-items:center;gap:6px;margin:0;font-weight:400;display:inline-flex}.swatch input[type=color]{border:1px solid var(--line);background:0 0;border-radius:4px;width:30px;height:26px;margin:0;padding:0}.field-line{align-items:center;gap:12px;min-height:38px}.field-line>.muted{flex:0 0 120px}.field-val{text-align:right;flex:1;min-width:0}.inline-input{text-align:right;background:0 0;border-color:#0000;width:100%;max-width:260px;margin:0;padding:5px 8px;font-size:13.5px}.inline-input:hover{border-color:var(--line);background:var(--card)}.inline-input:focus{border-color:var(--sky);background:var(--card);text-align:left}textarea.inline-input{text-align:left;border-color:var(--line);resize:vertical;max-width:none;margin-top:4px}select.inline-input{border-color:var(--line);background:var(--card);text-align:left;width:auto;min-width:150px}.inline-pair{justify-content:flex-end;gap:6px;width:100%;display:inline-flex}.inline-pair .inline-input{max-width:130px}.fields-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));column-gap:24px;display:grid}.fields-grid .pl-line{align-items:center}details.more{margin:6px 0 12px}details.more>summary{cursor:pointer;color:var(--sky);margin-bottom:8px;font-size:13px}.combo{margin-bottom:8px;position:relative}.combo>input{margin-bottom:0}.combo-list{border:1px solid var(--line);background:var(--card);border-radius:8px;max-height:340px;margin-top:4px;overflow-y:auto;box-shadow:0 6px 18px #00000014}.combo-list button{text-align:left;border:none;border-bottom:1px solid var(--line);cursor:pointer;width:100%;font:inherit;color:var(--text);background:0 0;padding:9px 12px;font-size:13.5px;display:block}.combo-list button:hover{background:var(--bg)}.combo-list .combo-add{color:var(--sky);border-bottom:none;font-weight:600}.combo-more{padding:8px 12px;font-size:12.5px}.picked{border:1px solid var(--line);background:var(--bg);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;padding:9px 12px;display:flex}.inline-form{background:var(--bg);border:1px solid var(--line);border-radius:8px;margin-bottom:14px;padding:14px}tr.row-done td{background:#f3faf5}tr.row-paid td{background:var(--good-bg)}tr.cell-edit td{padding-top:6px;padding-bottom:6px}tr.cell-edit select,tr.cell-edit input{min-height:0;margin:0;padding:5px 7px;font-size:13px}tr.cell-edit .actions input{flex:1;min-width:0}tr.row-saving td{opacity:.6}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--ink,inherit);text-decoration:underline}th.sortable .sort-ind{opacity:.55;font-size:10px}select.status-good{color:var(--good)}select.status-warn{color:var(--warn)}select.status-bad{color:var(--bad)}.readonly-box{white-space:pre-line;border:1px solid var(--line);background:#fff;border-radius:6px;margin-bottom:12px;padding:8px 10px;font-size:13px}.inline-form input,.inline-form select{background:var(--card)}.alert{border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:13px}.alert.bad{background:var(--bad-bg);color:var(--bad)}.alert.good{background:var(--good-bg);color:var(--good)}.alert.info{background:var(--sky-light);color:var(--navy-2)}@media (prefers-color-scheme:dark){.alert.info{color:var(--sky)}}.view-toggle{background:var(--sky-light);border-radius:8px;margin-bottom:12px;padding:3px;display:inline-flex}.view-toggle button{cursor:pointer;color:var(--navy-2);background:0 0;border:none;border-radius:6px;padding:6px 14px;font-family:inherit;font-size:13px}.view-toggle button.active{background:var(--card);color:var(--navy);font-weight:600;box-shadow:0 1px 2px #0000000f}.subtabs{flex-wrap:wrap;margin-bottom:16px;display:flex}.subtabs a{color:var(--navy-2);border-radius:6px;padding:6px 14px;font-size:13px;text-decoration:none}.subtabs a.active{background:var(--card);color:var(--navy);font-weight:600;box-shadow:0 1px 2px #0000000f}.pl-line{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:7px 0;font-size:13.5px;display:flex}.pl-line.sub{color:var(--sub);padding-left:14px}.pl-line.head{color:var(--navy-2);border-bottom:none;padding-top:14px;font-weight:600}.pl-line.total{border-top:2px solid var(--navy-2);border-bottom:none;margin-top:4px;padding-top:10px;font-size:15px;font-weight:650}.pl-line .num,.pl-line>span:last-child{font-variant-numeric:tabular-nums}.clickable-row{cursor:pointer}.clickable-row:hover td,tr.selected td{background:var(--sky-light)}.grid-table td{padding:3px 4px}.grid-table input,.grid-table select{padding:5px 6px;font-size:12.5px}tr.row-changed td{background:#fff9e6}.unit-grid{grid-template-columns:1fr 240px;align-items:start;gap:16px;display:grid}@media (width<=700px){.unit-grid{grid-template-columns:1fr}}img.nameplate{object-fit:contain;border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;max-height:260px}.vip-star{cursor:pointer;color:#b8c2ce;vertical-align:-1px;background:0 0;border:none;padding:0 6px 0 0;font-family:inherit;font-size:17px;line-height:1}.vip-star.on{color:#e0a100}.tag.vip{color:#8a5a00;background:#fff4d6;font-weight:600}.chips{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.chips button{border:1px solid var(--line);background:var(--card);color:var(--sub);cursor:pointer;border-radius:20px;padding:5px 12px;font-family:inherit;font-size:12.5px}.chips button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.calendar{background:var(--line);border:1px solid var(--line);border-radius:8px;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.cal-dow{background:var(--sky-light);color:var(--sub);text-transform:uppercase;text-align:center;padding:6px 2px;font-size:11px}.cal-day{background:var(--card);min-width:0;min-height:86px;padding:5px;font-size:12px}.cal-day.other{opacity:.4}.cal-day.today .dnum{background:var(--navy);color:#fff;border-radius:10px;padding:0 6px;display:inline-block}.cal-day .dnum{color:var(--sub);margin-bottom:3px;font-size:12px}.cal-job{background:var(--sky-light);color:var(--navy-2);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:4px;margin-bottom:2px;padding:2px 5px;font-size:10.5px;overflow:hidden}.cal-job.unassigned{background:var(--bad-bg);color:var(--bad)}.cal-job.done{opacity:.55}@media (width<=640px){.cal-day{min-height:56px;padding:3px}.cal-job{font-size:9.5px}}.timeline-item{border-left:2px solid var(--sky);margin-bottom:12px;padding:3px 0 3px 14px;position:relative}.timeline-item:before{content:"";background:var(--sky);border-radius:50%;width:8px;height:8px;position:absolute;top:7px;left:-5px}.timeline-item.done:before{background:var(--good)}.dash-row{grid-template-columns:2fr 1fr;gap:16px;display:grid}@media (width<=820px){.dash-row{grid-template-columns:1fr}}tr.group-row td{background:var(--bg);border-top:2px solid var(--line)}.opex-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(140px,220px) 1fr minmax(150px,auto);align-items:center;gap:10px;padding:5px 0;font-size:13px;display:grid}.opex-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.opex-bar{background:var(--sky-light);border-radius:6px;height:12px;position:relative}.opex-bar .fill{border-radius:6px;position:absolute;top:0;bottom:0;left:0}.opex-bar .mark{background:var(--navy);border-radius:2px;width:3px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.opex-val{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}@media (width<=640px){.opex-row{grid-template-columns:1fr;gap:4px}.opex-val{text-align:left}}.chart-wrap{overflow-x:auto}.chart-wrap svg{min-width:560px;display:block}.legend{color:var(--sub);flex-wrap:wrap;gap:14px;margin:4px 0 8px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:5px;display:inline-block}@media (prefers-color-scheme:dark){.view-toggle button,.view-toggle button.active{color:var(--text)}}.subnav{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.subnav a{color:var(--sub);border:1px solid var(--line);background:var(--card);border-radius:20px;padding:6px 13px;font-size:13px;text-decoration:none}.subnav a.active{background:var(--navy);color:#fff;border-color:var(--navy)}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.tpl{background:var(--card);border:1px solid var(--line);cursor:pointer;text-align:left;color:var(--text);border-radius:10px;padding:16px;font-family:inherit}.tpl:hover,.tpl.selected{border-color:var(--sky)}.tpl.selected{box-shadow:0 0 0 2px var(--sky) inset}.tpl b{margin-bottom:4px;font-size:14.5px;display:block}.tpl span{color:var(--sub);font-size:12.5px}.top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;display:flex}.stepper{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.step{text-align:center;background:var(--bg);min-width:100px;color:var(--sub);border:1px solid var(--line);border-radius:7px;flex:1;padding:8px 4px;font-size:11.5px}.step.done{background:var(--sky-light);color:var(--navy-2);border-color:var(--sky)}.step.current{background:var(--sky);color:#fff;border-color:var(--sky)}.section-label{color:var(--navy-2);align-items:center;gap:8px;margin:14px 0 6px;font-size:12px;font-weight:600;display:flex}@media (prefers-color-scheme:dark){.section-label{color:var(--sky)}}.section-label input{width:auto;margin:0;padding:4px 8px;font-size:12px;font-weight:600}.addrow{border:1px dashed var(--line);color:var(--sky);cursor:pointer;background:0 0;border-radius:7px;margin-top:8px;padding:7px 12px;font-family:inherit;font-size:13px}.rm{color:var(--warn);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:16px}.lines td{padding:5px 4px}.lines input.qty,.lines input.unit{width:64px}.lines input.money{text-align:right;width:100px}.override-row td{background:var(--warn-bg);font-size:12.5px}.override-row input{background:var(--card);margin:0}.sline{border-bottom:1px solid var(--line);justify-content:space-between;padding:7px 0;font-size:13.5px;display:flex}.sline.total{border-top:2px solid var(--navy-2);border-bottom:none;margin-top:4px;padding-top:10px;font-size:16px;font-weight:650}.gp{background:var(--sky-light);border-radius:8px;justify-content:space-between;align-items:center;margin-top:12px;padding:12px 14px;display:flex}.gp b{color:var(--navy);font-size:18px}@media (prefers-color-scheme:dark){.gp b{color:var(--sky)}}.gp span{color:var(--sub);font-size:12px}.milestone-row{grid-template-columns:2fr 90px 140px 32px;align-items:center;gap:10px;margin-bottom:8px;display:grid}.milestone-row input{margin:0}.savebar{background:var(--card);border:1px solid var(--line);z-index:5;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex;position:sticky;bottom:0;box-shadow:0 -4px 16px #0000000f}.banner{background:var(--good-bg);border:1px solid var(--good);border-radius:8px;margin-bottom:16px;padding:14px 16px}.banner b{color:var(--good);margin-bottom:2px;display:block}.banner.warn{background:var(--warn-bg);border-color:var(--warn)}.banner.warn b{color:var(--warn)}.check{color:var(--text);align-items:center;gap:8px;margin-bottom:12px;font-size:13.5px;display:flex}.check input{width:auto;margin:0}.bar{background:var(--sky-light);vertical-align:middle;border-radius:4px;width:80px;height:6px;margin-right:6px;display:inline-block;overflow:hidden}.bar span{background:var(--sky);height:100%;display:block}.progress{background:var(--sky-light);border-radius:5px;height:7px;margin-bottom:8px;overflow:hidden}.progress span{background:var(--good);height:100%;display:block}.check-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:7px 0;font-size:13.5px;display:flex}.check-row:last-child{border-bottom:none}.check-label{color:var(--text);cursor:pointer;flex:1;align-items:center;gap:10px;margin:0;font-size:13.5px;display:flex}.check-label input{width:17px;height:17px;accent-color:var(--good);flex-shrink:0;margin:0}.done-text{color:var(--sub);text-decoration:line-through}.entry{border-left:2px solid var(--sky);margin-bottom:14px;padding:2px 0 2px 14px;position:relative}.entry:before{content:"";background:var(--sky);border-radius:50%;width:8px;height:8px;position:absolute;top:6px;left:-5px}.entry .meta{color:var(--sub);margin-bottom:2px;font-size:11.5px}.entry .help{background:var(--bad-bg);color:var(--bad);border-radius:6px;margin-top:6px;padding:5px 10px;font-size:12.5px}.two{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=820px){.two{grid-template-columns:1fr}}.kv-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:6px 0;font-size:13.5px;display:flex}.kv-row:last-child{border-bottom:none}.kv-row input,.kv-row select{width:auto;margin:0;padding:5px 8px;font-size:13px}.thumbs{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.thumbs figure{width:96px;color:var(--sub);margin:0;font-size:11px}.thumbs img{object-fit:cover;border:1px solid var(--line);border-radius:6px;width:96px;height:72px;display:block}.receipt{object-fit:cover;border:1px solid var(--line);vertical-align:middle;border-radius:4px;width:30px;height:30px}.filebtn{color:var(--text);cursor:pointer;align-items:center;margin:0;display:inline-flex}.doc-block{border-bottom:1px solid var(--line);padding:12px 0}.doc-block:first-of-type{padding-top:0}.auth-wrap{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--card);border:1px solid var(--line);border-radius:12px;width:100%;max-width:380px;overflow:hidden}.auth-card .auth-head{background:var(--navy);color:#fff;align-items:center;gap:12px;padding:20px;display:flex}.auth-card .auth-head h1{margin:0;font-size:16px}.auth-card .auth-head p{color:#b9c9de;margin:2px 0 0;font-size:12px}.auth-card .auth-body{padding:20px}.auth-card .btn{width:100%}.center-note{text-align:center;margin-top:12px}.loading-screen{min-height:100vh;color:var(--sub);justify-content:center;align-items:center;display:flex}
