:root{color-scheme:light;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;--s1: .25rem;--s2: .5rem;--s3: .75rem;--s4: 1rem;--s5: 1.5rem;--s6: 2rem;--s7: 3rem;--radius-sm: 8px;--radius: 12px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgb(16 42 67 / 8%);--shadow: 0 2px 6px rgb(16 42 67 / 8%), 0 8px 24px rgb(16 42 67 / 6%);--shadow-lg: 0 12px 40px rgb(16 42 67 / 22%);--bg: #f3f6f9;--surface: #ffffff;--surface-2: #f7f9fb;--surface-3: #eaf0f5;--border: #d3dde7;--border-strong: #7a8996;--text: #13222e;--text-muted: #4a5d6d;--primary: #0a5c8c;--primary-hover: #084a72;--primary-soft: #e2f0f8;--on-primary: #ffffff;--accent: #0e7c74;--focus: #0b7fc0;--danger: #b42318;--danger-hover: #8f1c12;--danger-soft: #fde8e6;--success: #17692f;--success-soft: #dcf4e4;--warning-soft: #fff1d1;--warning: #7a4a00;--overlay: rgb(10 25 38 / 55%);--status-new-bg: #e0efff;--status-new-fg: #0a4a99;--status-pending-bg: #fff1d1;--status-pending-fg: #7a4a00;--status-extended-bg: #ede4fb;--status-extended-fg: #5b2a9e;--status-completed-bg: #dcf4e4;--status-completed-fg: #17692f;--overdue-bg: #fde4e4;--overdue-fg: #a11919;--soon-bg: #fff1d1;--soon-fg: #7a4a00;--neutral-bg: #e9eef3;--neutral-fg: #364a5a;--bar-new: #2f7fd6;--bar-pending: #d9930d;--bar-extended: #8a55d6;--bar-completed: #2e9a4f;--bar-program: #0e7c74}:root[data-theme=dark]{color-scheme:dark;--shadow-sm: 0 1px 2px rgb(0 0 0 / 40%);--shadow: 0 2px 8px rgb(0 0 0 / 35%);--shadow-lg: 0 12px 40px rgb(0 0 0 / 60%);--bg: #0c161e;--surface: #13212c;--surface-2: #182a37;--surface-3: #1f3342;--border: #2a3f50;--border-strong: #5d778b;--text: #e8eff5;--text-muted: #a5b7c6;--primary: #58b4e4;--primary-hover: #7cc6ee;--primary-soft: #14354a;--on-primary: #04202f;--accent: #4fc3b8;--focus: #7cc6ee;--danger: #ff8b80;--danger-hover: #ffaba3;--danger-soft: #4a1d1a;--success: #8fe0a8;--success-soft: #123d22;--warning-soft: #4a3306;--warning: #ffd98a;--overlay: rgb(0 0 0 / 65%);--status-new-bg: #12365e;--status-new-fg: #a9d1ff;--status-pending-bg: #4a3306;--status-pending-fg: #ffd98a;--status-extended-bg: #3a2763;--status-extended-fg: #d6c3ff;--status-completed-bg: #123d22;--status-completed-fg: #9be3b2;--overdue-bg: #521616;--overdue-fg: #ffb4b4;--soon-bg: #4a3306;--soon-fg: #ffd98a;--neutral-bg: #233646;--neutral-fg: #c5d3de;--bar-new: #5fa8f0;--bar-pending: #f0b441;--bar-extended: #b08af0;--bar-completed: #5cc47c;--bar-program: #4fc3b8}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--shadow-sm: 0 1px 2px rgb(0 0 0 / 40%);--shadow: 0 2px 8px rgb(0 0 0 / 35%);--shadow-lg: 0 12px 40px rgb(0 0 0 / 60%);--bg: #0c161e;--surface: #13212c;--surface-2: #182a37;--surface-3: #1f3342;--border: #2a3f50;--border-strong: #5d778b;--text: #e8eff5;--text-muted: #a5b7c6;--primary: #58b4e4;--primary-hover: #7cc6ee;--primary-soft: #14354a;--on-primary: #04202f;--accent: #4fc3b8;--focus: #7cc6ee;--danger: #ff8b80;--danger-hover: #ffaba3;--danger-soft: #4a1d1a;--success: #8fe0a8;--success-soft: #123d22;--warning-soft: #4a3306;--warning: #ffd98a;--overlay: rgb(0 0 0 / 65%);--status-new-bg: #12365e;--status-new-fg: #a9d1ff;--status-pending-bg: #4a3306;--status-pending-fg: #ffd98a;--status-extended-bg: #3a2763;--status-extended-fg: #d6c3ff;--status-completed-bg: #123d22;--status-completed-fg: #9be3b2;--overdue-bg: #521616;--overdue-fg: #ffb4b4;--soon-bg: #4a3306;--soon-fg: #ffd98a;--neutral-bg: #233646;--neutral-fg: #c5d3de;--bar-new: #5fa8f0;--bar-pending: #f0b441;--bar-extended: #b08af0;--bar-completed: #5cc47c;--bar-program: #4fc3b8}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:1rem;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 var(--s3);line-height:1.25;font-weight:650;letter-spacing:-.01em}h1{font-size:1.75rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 var(--s3)}a{color:var(--primary);text-underline-offset:.15em}a:hover{color:var(--primary-hover)}img,svg{max-width:100%}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}[hidden]{display:none!important}.skip-link{position:absolute;left:var(--s3);top:-4rem;z-index:1000;padding:var(--s2) var(--s4);background:var(--primary);color:var(--on-primary);border-radius:var(--radius-sm);font-weight:600;transition:top .15s}.skip-link:focus{top:var(--s3)}.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}main:focus{outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.stack{display:flex;flex-direction:column;gap:var(--s4)}.stack-lg{display:flex;flex-direction:column;gap:var(--s5)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3)}.row-between{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3)}.spacer{flex:1}.muted{color:var(--text-muted)}.small{font-size:.875rem}.nowrap{white-space:nowrap}.mono{font-family:var(--font-mono)}.text-right{text-align:right}.end{justify-content:flex-end}.center{justify-content:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--s5)}.card>h2:first-child,.card>h3:first-child{margin-bottom:var(--s4)}.card-flush{padding:0;overflow:hidden}.card-title{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s4)}.card-title h2,.card-title h3{margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:2.75rem;padding:0 var(--s4);font:inherit;font-weight:600;line-height:1;text-decoration:none;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s,border-color .15s,box-shadow .15s}.btn:hover{background:var(--surface-3);color:var(--text)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:var(--on-primary)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--surface)}.btn-danger:hover{background:var(--danger-hover);border-color:var(--danger-hover);color:var(--surface)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-3)}.btn-sm{min-height:2.25rem;padding:0 var(--s3);font-size:.9rem}.btn-icon{min-width:2.75rem;padding:0}.field{display:flex;flex-direction:column;gap:var(--s1);min-width:0}.field>label,.label{font-weight:600;font-size:.95rem}.req{color:var(--danger);margin-left:2px}.hint{font-size:.85rem;color:var(--text-muted)}.error-text{font-size:.875rem;color:var(--danger);font-weight:500}.input,.select,.textarea{width:100%;min-height:2.75rem;padding:0 var(--s3);font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color .15s,box-shadow .15s}.textarea{padding:var(--s3);min-height:7rem;resize:vertical;line-height:1.5}.input:hover,.select:hover,.textarea:hover{border-color:var(--primary)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:3px solid var(--focus);outline-offset:0;border-color:var(--focus)}.input.invalid,.select.invalid,.textarea.invalid{border-color:var(--danger);background:var(--danger-soft)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed}fieldset{border:0;margin:0;padding:0;min-width:0}legend{padding:0;font-weight:650;font-size:1.05rem;margin-bottom:var(--s3)}.check{display:flex;align-items:center;gap:var(--s2);min-height:2.25rem;cursor:pointer}.check input{width:1.2rem;height:1.2rem;accent-color:var(--primary);flex:none}.form-grid{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr))}.form-grid .span-all{grid-column:1 / -1}.form-actions{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center}.alert{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--s3) var(--s4);border-radius:var(--radius);border:1px solid}.alert ul{margin:0;padding-left:1.2rem}.alert-error{background:var(--danger-soft);border-color:var(--danger);color:var(--text)}.alert-info{background:var(--primary-soft);border-color:var(--primary)}.chip{display:inline-flex;align-items:center;gap:var(--s1);padding:2px 10px;border-radius:999px;font-size:.8rem;font-weight:650;line-height:1.5;white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-fg)}.chip-new{background:var(--status-new-bg);color:var(--status-new-fg)}.chip-pending{background:var(--status-pending-bg);color:var(--status-pending-fg)}.chip-extended{background:var(--status-extended-bg);color:var(--status-extended-fg)}.chip-completed{background:var(--status-completed-bg);color:var(--status-completed-fg)}.chip-overdue{background:var(--overdue-bg);color:var(--overdue-fg)}.chip-soon{background:var(--soon-bg);color:var(--soon-fg)}.chip-neutral{background:var(--neutral-bg);color:var(--neutral-fg)}.toggle-chip{display:inline-flex;align-items:center;gap:var(--s1);min-height:2.25rem;padding:0 var(--s3);font:inherit;font-size:.9rem;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;cursor:pointer}.toggle-chip:hover{background:var(--surface-3)}.toggle-chip[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.table-wrap{position:relative;overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.95rem}.table th,.table td{padding:var(--s3) var(--s4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--border)}.table thead th{background:var(--surface-2);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);white-space:nowrap}.table tbody tr:last-child td{border-bottom:0}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--primary-soft)}.table tbody tr:focus-visible{outline-offset:-3px}.sort-btn{display:inline-flex;align-items:center;gap:var(--s1);padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;background:none;border:0;cursor:pointer}.sort-btn:hover{color:var(--text)}.tabs{display:flex;gap:var(--s1);border-bottom:2px solid var(--border);overflow-x:auto;margin-bottom:var(--s5)}.tabs.scrollable{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 2rem),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 2rem),transparent)}@media(min-width:40rem){.tabs.scrollable{-webkit-mask-image:none;mask-image:none}}.tab{padding:var(--s3) var(--s4);font:inherit;font-weight:600;color:var(--text-muted);background:none;border:0;border-bottom:3px solid transparent;margin-bottom:-2px;cursor:pointer;white-space:nowrap}.tab:hover{color:var(--text)}.tab[aria-selected=true],.tab[aria-current=true]{color:var(--primary);border-bottom-color:var(--primary)}.skeleton{display:block;min-height:1rem;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;padding:var(--s7) var(--s4);color:var(--text-muted)}.empty h3{color:var(--text)}.empty svg{color:var(--border-strong);margin-bottom:var(--s3)}.kpi{display:flex;flex-direction:column;gap:var(--s1);padding:var(--s4) var(--s5);color:var(--text);text-decoration:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform .15s,box-shadow .15s,border-color .15s}.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--primary);color:var(--text)}.kpi-value{font-size:2.1rem;font-weight:700;line-height:1.1;letter-spacing:-.02em}.kpi-label{font-size:.9rem;color:var(--text-muted);font-weight:600}.kpi-danger .kpi-value{color:var(--danger)}.kpi-warn .kpi-value{color:var(--warning)}.bar-row{display:grid;grid-template-columns:minmax(6rem,11rem) 1fr 3rem;align-items:center;gap:var(--s3);font-size:.95rem}.bar-track{display:block;height:.9rem;background:var(--surface-3);border-radius:999px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:999px;background:var(--bar-program);min-width:2px;transition:width .4s}.bar-new{background:var(--bar-new)}.bar-pending{background:var(--bar-pending)}.bar-extended{background:var(--bar-extended)}.bar-completed{background:var(--bar-completed)}.dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--s2) var(--s4);margin:0}.dl dt{color:var(--text-muted);font-weight:600}.dl dd{margin:0;overflow-wrap:anywhere}.timeline{list-style:none;margin:0;padding:0 0 0 var(--s4);border-left:2px solid var(--border)}.timeline li{position:relative;padding:0 0 var(--s5) var(--s4)}.timeline li:before{content:"";position:absolute;left:calc(-1 * var(--s4) - 7px);top:.35rem;width:12px;height:12px;border-radius:50%;background:var(--primary);border:2px solid var(--surface)}.page-narrow{max-width:46rem;margin-inline:auto}.page-medium{max-width:64rem;margin-inline:auto}@media(max-width:48rem){.table.responsive thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.table.responsive,.table.responsive tbody,.table.responsive tr,.table.responsive td{display:block}.table.responsive tbody tr{margin:var(--s3);padding:var(--s2) 0;border:1px solid var(--border);border-radius:var(--radius)}.table.responsive td{display:grid;grid-template-columns:6.5rem 1fr;gap:var(--s3);padding:var(--s1) var(--s4);border:0}.table.responsive td:before{content:attr(data-label);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}}@media(max-width:40rem){h1{font-size:1.5rem}.card{padding:var(--s4)}.bar-row{grid-template-columns:minmax(5rem,8rem) 1fr 2.5rem}}body:has(.savebar) app-toast-host{bottom:5rem}@media(max-width:40rem){body:has(.savebar) app-toast-host{bottom:8.5rem}}
