.login{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{flex-direction:column;gap:18px;width:min(400px,100%);padding:28px;display:flex}.login-card h1{font-size:22px}.app{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;gap:20px;height:100vh;padding:14px 10px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 6px;display:flex}.brand-mark{letter-spacing:-.04em;color:var(--color-brand);border-right:1px solid var(--color-border);padding-right:12px;font-size:30px;font-weight:800}.brand-text{flex-direction:column;line-height:1.25;display:flex}.brand-text strong{letter-spacing:-.01em;font-size:18px}.nav{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.nav-link{border-radius:var(--radius-small);color:var(--color-text);align-items:center;gap:12px;padding:9px 12px;font-weight:500;display:flex}.nav-link:hover{background:var(--color-surface-muted);text-decoration:none}.nav-link-active{background:var(--color-brand-soft);color:var(--color-brand-strong)}.main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:10;background:var(--color-bg);justify-content:space-between;align-items:center;gap:16px;padding:10px 24px;display:flex;position:sticky;top:0}.search{flex:0 420px;margin-left:auto;margin-right:auto;position:relative}.search input{border-color:var(--color-border);background:var(--color-surface);width:100%;height:38px;padding-left:34px}.search-icon{color:var(--color-text-muted);position:absolute;top:50%;left:11px;transform:translateY(-50%)}.topbar-actions{align-items:center;gap:12px;display:flex}.user-button{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:20px;align-items:center;gap:4px;padding:2px;display:inline-flex}.avatar{background:var(--tone-neutral-bg);width:34px;height:34px;color:var(--color-text);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.menu-user{border-bottom:1px solid var(--color-border);flex-direction:column;margin-bottom:4px;padding:8px 10px;display:flex}@media (width<=860px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{gap:10px;height:auto;position:static}.nav{flex-flow:wrap}.topbar{flex-wrap:wrap;padding:10px 16px}.search{flex-basis:100%;order:2}}:root{--color-brand:#1f7a3a;--color-brand-strong:#17612d;--color-brand-soft:#e6f3e9;--color-bg:#f4f5f4;--color-surface:#fff;--color-surface-muted:#f8f9f8;--color-border:#e3e6e3;--color-border-strong:#cfd4cf;--color-text:#1b1f1c;--color-text-muted:#5f6762;--color-focus:#2f6fd6;--tone-neutral-bg:#eef0ee;--tone-neutral-fg:#4b524d;--tone-success-bg:#e3f3e6;--tone-success-fg:#1c6b33;--tone-warning-bg:#fdf3d3;--tone-warning-fg:#7a5a00;--tone-danger-bg:#fde6e3;--tone-danger-fg:#b3261e;--tone-info-bg:#e3eefc;--tone-info-fg:#1d5bb8;--radius:8px;--radius-small:6px;--shadow:0 1px 2px #1018140f;--sidebar-width:236px;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);min-height:100vh;margin:0}h1,h2,h3{margin:0;line-height:1.2}h1{font-size:30px;font-weight:700}h3{font-size:15px}a{color:var(--color-brand);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.muted{color:var(--color-text-muted)}.small{font-size:12px}.nowrap{white-space:nowrap}.pre-line{white-space:pre-line}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.page{flex-direction:column;gap:16px;max-width:1440px;padding:20px 24px 32px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-subtitle{color:var(--color-text-muted);margin:4px 0 0;font-size:15px}.page-actions,.card-actions,.button-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.back-link{color:var(--color-text-muted);align-items:center;gap:4px;font-size:13px;display:inline-flex}.grid-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;display:grid}.grid-main-side{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px;display:grid}.stack{flex-direction:column;gap:16px;display:flex}@media (width<=1100px){.grid-main-side,.grid-2{grid-template-columns:minmax(0,1fr)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.card-header{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px 10px;display:flex}.card-title{font-size:17px;font-weight:700}.card-body{padding:0 16px 16px}.card-link{align-items:center;gap:4px;font-size:13px;font-weight:500;display:inline-flex}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);background:var(--color-surface-muted);white-space:nowrap;padding:8px 12px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:10px 12px}.table tbody tr:last-child td{border-bottom:none}.table tbody tr.row-link{cursor:pointer}.table tbody tr.row-link:hover{background:var(--color-surface-muted)}.table .cell-strong{font-weight:700}.table .cell-actions{text-align:right;white-space:nowrap;width:1%}.sort-button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:2px;padding:0;display:inline-flex}.badge{white-space:nowrap;border-radius:4px;align-items:center;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.badge-neutral{background:var(--tone-neutral-bg);color:var(--tone-neutral-fg)}.badge-success{background:var(--tone-success-bg);color:var(--tone-success-fg)}.badge-warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg)}.badge-danger{background:var(--tone-danger-bg);color:var(--tone-danger-fg)}.badge-info{background:var(--tone-info-bg);color:var(--tone-info-fg)}.progress{background:var(--tone-neutral-bg);border-radius:3px;width:100%;max-width:120px;height:6px;overflow:hidden}.progress-bar{background:var(--color-brand);border-radius:3px;height:100%}.button{border-radius:var(--radius-small);border:1px solid var(--color-border-strong);background:var(--color-surface);height:34px;color:var(--color-text);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;text-decoration:none;display:inline-flex}.button:hover{background:var(--color-surface-muted);text-decoration:none}.button:disabled{opacity:.55;cursor:not-allowed}.button-primary{background:var(--color-brand);border-color:var(--color-brand);color:#fff}.button-primary:hover{background:var(--color-brand-strong)}.button-danger{color:var(--tone-danger-fg);border-color:#f0c2bd}.button-danger:hover{background:var(--tone-danger-bg)}.button-small{height:28px;padding:0 10px;font-size:13px}.button-block{width:100%}.icon-button{border-radius:var(--radius-small);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{background:var(--tone-neutral-bg);color:var(--color-text)}.form{flex-direction:column;gap:14px;display:flex}.form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px;display:grid}.form-section{flex-direction:column;gap:12px;padding-top:4px;display:flex}.form-section h3{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:14px}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field>span{font-size:13px;font-weight:500}.field-wide{grid-column:1/-1}.field-checkbox{flex-direction:row;align-items:center;gap:8px}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--color-border-strong);border-radius:var(--radius-small);background:var(--color-surface);min-width:0;padding:7px 10px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-brand);padding:0}textarea{resize:vertical;min-height:72px}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px 16px;display:flex}.filter-bar .field{min-width:150px}.inline-rows{flex-direction:column;gap:8px;display:flex}.inline-row{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:center;gap:8px;display:grid}.alert{border-radius:var(--radius-small);margin:0;padding:10px 12px;font-size:13px}.alert-warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg)}.alert-danger{background:var(--tone-danger-bg);color:var(--tone-danger-fg)}.alert-info{background:var(--tone-info-bg);color:var(--tone-info-fg)}.state{color:var(--color-text-muted);text-align:center;justify-content:center;align-items:center;gap:10px;padding:24px 16px;display:flex}.state-error{color:var(--tone-danger-fg);flex-wrap:wrap}.spinner{border:2px solid var(--color-border-strong);border-top-color:var(--color-brand);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.dialog{border:1px solid var(--color-border);border-radius:var(--radius);width:min(560px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--color-text);padding:0;box-shadow:0 12px 40px #1018142e}.dialog-wide{width:min(920px,100vw - 32px)}.dialog-large{width:min(max(75vw,920px),100vw - 32px);min-height:min(75vh,100vh - 48px)}.dialog::backdrop{background:#10181459}.dialog-header{border-bottom:1px solid var(--color-border);background:var(--color-surface);z-index:1;justify-content:space-between;align-items:center;padding:14px 16px;display:flex;position:sticky;top:0}.dialog-header h2{font-size:17px}.dialog-body{padding:16px}.menu{display:inline-block;position:relative}.menu-list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-small);z-index:20;flex-direction:column;min-width:200px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #1018141f}.menu-item{font:inherit;color:var(--color-text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:8px 10px;display:flex}.menu-item:hover{background:var(--color-surface-muted);text-decoration:none}.multi-select{position:relative}.multi-select-trigger{width:100%;font:inherit;color:inherit;text-align:left;border:1px solid var(--color-border-strong);border-radius:var(--radius-small);background:var(--color-surface);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;display:flex}.multi-select-trigger>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.multi-select-trigger:disabled{cursor:default;opacity:.6}.multi-select-list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-small);z-index:20;max-height:260px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #1018141f}.multi-select-option{cursor:pointer;border-radius:4px;padding:6px 8px}.multi-select-option:hover{background:var(--color-surface-muted)}.multi-select-empty{padding:6px 8px}.detail-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 20px;margin:0;padding:0 16px 16px;display:grid}.detail-list dt{color:var(--color-text-muted);font-size:12px}.detail-list dd{overflow-wrap:anywhere;margin:2px 0 0}.list{margin:0;padding:0;list-style:none}.list>li{border-top:1px solid var(--color-border);padding:10px 16px}.tabs{border-bottom:1px solid var(--color-border);gap:4px;display:flex}.tab{font:inherit;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 14px;font-weight:500;text-decoration:none}.tab:hover{color:var(--color-text);text-decoration:none}.tab-active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.pagination{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:10px 16px;font-size:13px;display:flex}.progress-cell{flex-direction:column;gap:4px;min-width:110px;display:flex}.dates-cell{white-space:nowrap;flex-direction:column;display:flex}.audit-changes{margin:0;padding:0;font-size:13px;list-style:none}.audit-field{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.plain-list{margin:0;padding:0;list-style:none}.day-row{grid-template-columns:minmax(0,1fr) 110px 110px auto;align-items:center;gap:8px;display:grid}.form-footer{border-top:1px solid var(--color-border);justify-content:flex-end;gap:8px;padding-top:8px;display:flex}.fieldset{border:none;margin:0;padding:0}.fieldset legend{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px;padding:0;font-size:14px;font-weight:700}.checkbox-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px 16px;display:grid}.badge-stack{flex-wrap:wrap;gap:4px;display:inline-flex}.card-warning{border-color:#f0dc9a}.card-body-padded{padding-top:16px}.task-summary{align-items:center;gap:12px;font-size:13px;display:flex}.task-summary .progress{max-width:220px}.issue-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.issue-action{margin-left:auto}.issue p,.conflict-text{margin:6px 0 0}
