@charset "UTF-8";@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url("./media/material-icons-LEZCGFVT.woff2") format("woff2"),url("./media/material-icons-JLIDJUWE.woff") format("woff")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}html{color-scheme:light dark;--mat-sys-background: light-dark(#faf9fd, #121316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f2f0f4, #2f3033);--mat-sys-inverse-primary: light-dark(#abc7ff, #005cbb);--mat-sys-inverse-surface: light-dark(#2f3033, #e3e2e6);--mat-sys-on-background: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #002f65);--mat-sys-on-primary-container: light-dark(#00458f, #d7e3ff);--mat-sys-on-primary-fixed: light-dark(#001b3f, #001b3f);--mat-sys-on-primary-fixed-variant: light-dark(#00458f, #00458f);--mat-sys-on-secondary: light-dark(#ffffff, #283041);--mat-sys-on-secondary-container: light-dark(#3e4759, #dae2f9);--mat-sys-on-secondary-fixed: light-dark(#131c2b, #131c2b);--mat-sys-on-secondary-fixed-variant: light-dark(#3e4759, #3e4759);--mat-sys-on-surface: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-surface-variant: light-dark(#44474e, #e0e2ec);--mat-sys-on-tertiary: light-dark(#ffffff, #0001ac);--mat-sys-on-tertiary-container: light-dark(#0000ef, #e0e0ff);--mat-sys-on-tertiary-fixed: light-dark(#00006e, #00006e);--mat-sys-on-tertiary-fixed-variant: light-dark(#0000ef, #0000ef);--mat-sys-outline: light-dark(#74777f, #8e9099);--mat-sys-outline-variant: light-dark(#c4c6d0, #44474e);--mat-sys-primary: light-dark(#005cbb, #abc7ff);--mat-sys-primary-container: light-dark(#d7e3ff, #00458f);--mat-sys-primary-fixed: light-dark(#d7e3ff, #d7e3ff);--mat-sys-primary-fixed-dim: light-dark(#abc7ff, #abc7ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#565e71, #bec6dc);--mat-sys-secondary-container: light-dark(#dae2f9, #3e4759);--mat-sys-secondary-fixed: light-dark(#dae2f9, #dae2f9);--mat-sys-secondary-fixed-dim: light-dark(#bec6dc, #bec6dc);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#faf9fd, #121316);--mat-sys-surface-bright: light-dark(#faf9fd, #38393c);--mat-sys-surface-container: light-dark(#efedf0, #1f2022);--mat-sys-surface-container-high: light-dark(#e9e7eb, #292a2c);--mat-sys-surface-container-highest: light-dark(#e3e2e6, #343537);--mat-sys-surface-container-low: light-dark(#f4f3f6, #1a1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0d0e11);--mat-sys-surface-dim: light-dark(#dbd9dd, #121316);--mat-sys-surface-tint: light-dark(#005cbb, #abc7ff);--mat-sys-surface-variant: light-dark(#e0e2ec, #44474e);--mat-sys-tertiary: light-dark(#343dff, #bec2ff);--mat-sys-tertiary-container: light-dark(#e0e0ff, #0000ef);--mat-sys-tertiary-fixed: light-dark(#e0e0ff, #e0e0ff);--mat-sys-tertiary-fixed-dim: light-dark(#bec2ff, #bec2ff);--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-large-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-medium-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-small-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-large-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-medium-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-small-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-large-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-medium-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-small-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-large-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-medium-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-small-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-large-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-medium-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-small-font: Noto Sans TC, Microsoft JhengHei, PingFang TC, Roboto, sans-serif;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-checkbox-touch-target-display: block;--mat-checkbox-state-layer-size: 36px;--mat-chip-container-height: 28px;--mat-expansion-header-collapsed-state-height: 44px;--mat-expansion-header-expanded-state-height: 60px;--mat-fab-small-touch-target-display: ;--mat-fab-touch-target-display: block;--mat-button-filled-touch-target-display: block;--mat-button-filled-container-height: 36px;--mat-button-outlined-container-height: 36px;--mat-button-outlined-touch-target-display: block;--mat-button-protected-touch-target-display: block;--mat-button-protected-container-height: 36px;--mat-button-text-touch-target-display: block;--mat-button-text-container-height: 36px;--mat-button-tonal-container-height: 36px;--mat-button-tonal-touch-target-display: block;--mat-form-field-container-height: 52px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 14px;--mat-form-field-filled-with-label-container-padding-top: 22px;--mat-form-field-filled-with-label-container-padding-bottom: 6px;--mat-icon-button-touch-target-display: block;--mat-icon-button-state-layer-size: 36px;--mat-list-list-item-leading-icon-start-space: 12px;--mat-list-list-item-leading-icon-end-space: 12px;--mat-list-list-item-one-line-container-height: 44px;--mat-list-list-item-two-line-container-height: 60px;--mat-list-list-item-three-line-container-height: 84px;--mat-paginator-container-size: 52px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block;--mat-radio-touch-target-display: block;--mat-radio-state-layer-size: 36px;--mat-tab-container-height: 44px;--mat-select-arrow-transform: translateY(-8px);--mat-button-toggle-height: 40px;--mat-stepper-header-height: 68px;--mat-table-header-container-height: 52px;--mat-table-footer-container-height: 48px;--mat-table-row-item-container-height: 48px;--mat-toolbar-standard-height: 60px;--mat-toolbar-mobile-height: 52px;--mat-tree-node-min-height: 44px;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}html[data-theme=light]{color-scheme:light}html[data-theme=dark]{color-scheme:dark}:root{--bg: light-dark(#f5f7fb, #121418);--card: light-dark(#ffffff, #1c1f25);--surface-alt: light-dark(#f8fafc, #252a32);--hover: light-dark(#f5f9ff, #232a36);--border: light-dark(#e3e8ef, #343a44);--text: light-dark(#1f2937, #e5e7eb);--muted: light-dark(#6b7280, #9ca3af);--primary: light-dark(#1565c0, #64a8f0);--green: light-dark(#2e7d32, #81c784);--green-bg: light-dark(#e8f5e9, #1d3221);--amber: light-dark(#b26a00, #ffb74d);--amber-bg: light-dark(#fff4e0, #3a2d14);--amber-border: light-dark(#ffe082, #7a5a17);--red: light-dark(#c62828, #ef9a9a);--red-bg: light-dark(#fdecea, #3d1f1f);--blue: light-dark(#1565c0, #64a8f0);--blue-bg: light-dark(#e3f0fd, #1a2a40);--blue-border: light-dark(#bcd3ee, #2f4c72);--purple: light-dark(#6a1b9a, #ce93d8);--purple-bg: light-dark(#f3e5f5, #33213a);--teal: light-dark(#00695c, #80cbc4);--teal-bg: light-dark(#e0f2f1, #1c3330);--grey: light-dark(#546e7a, #b0bec5);--grey-bg: light-dark(#eceff1, #2b3035);--track: light-dark(#edf1f7, #2b313a);--radius: 10px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Noto Sans TC,Microsoft JhengHei,PingFang TC,Roboto,sans-serif;font-size:14px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;font-weight:600;margin:0}h2{font-size:17px;font-weight:600;margin:0 0 12px}h3{font-size:15px;font-weight:600;margin:0 0 8px}.shell{height:100vh}.shell-nav{width:248px;border-right:1px solid var(--border);background:var(--card)}.brand{display:flex;align-items:center;gap:10px;padding:18px 16px 12px}.brand mat-icon{color:var(--primary);font-size:32px;width:32px;height:32px}.brand-title{font-weight:700;font-size:14px;line-height:1.3}.brand-sub{font-size:12px;color:var(--muted)}.nav-group{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--muted);padding:14px 16px 4px;text-transform:uppercase}.shell-nav a.active{background:var(--blue-bg);color:var(--primary)}.shell-nav a.active mat-icon{color:var(--primary)}.shell-nav a.nav-alert:not(.active){background:var(--green-bg)}.shell-nav a.nav-alert .mdc-list-item__primary-text{font-weight:600}.shell-nav a.nav-alert mat-icon{color:#06c755}.topbar .line-pill{border-color:#06c755;color:var(--green);border-radius:999px}.topbar .line-pill mat-icon{color:#06c755}.topbar .line-paused{border-radius:999px;border-color:var(--amber-border);background:var(--amber-bg);color:var(--amber);margin-right:4px}.topbar .line-paused mat-icon{color:var(--amber)}.shell-nav.collapsed{width:64px}.shell-nav.collapsed .brand{justify-content:center;padding:18px 0 12px}.shell-nav.collapsed .brand-text{display:none}.shell-nav.collapsed .nav-group{font-size:0;padding:0;margin:8px 12px;border-top:1px solid var(--border)}.shell-nav.collapsed .mat-mdc-list-item{padding:0}.shell-nav.collapsed .mat-mdc-list-item .mdc-list-item__start{margin:0 auto}.shell-nav.collapsed .mat-mdc-list-item .mdc-list-item__content{display:none}.topbar{position:sticky;top:0;z-index:10;background:var(--card);border-bottom:1px solid var(--border);height:56px;gap:4px}.content{padding:20px 24px 40px;max-width:1480px;margin:0 auto}.content:has(>.board-mode){max-width:none}.wi-filter-menu.mat-mdc-menu-panel{min-width:260px;max-width:360px}.wi-filter-menu .fm-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 8px 4px 16px}.wi-filter-menu .fm-row{display:flex;flex-direction:column;line-height:1.25}.wi-filter-menu .fm-value{font-size:12px;color:var(--primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.wi-filter-menu.fm-long.mat-mdc-menu-panel{max-height:min(460px,100vh - 48px)}.wi-filter-menu .fm-search-wrap{position:sticky;top:0;z-index:1;margin-top:-8px;padding:8px 8px 6px;background:var(--mat-menu-container-color, var(--card))}.wi-filter-menu .fm-search{display:flex;align-items:center;gap:6px;padding:0 4px 0 8px;height:34px;border:1px solid var(--border);border-radius:6px}.wi-filter-menu .fm-search:focus-within{border-color:var(--primary)}.wi-filter-menu .fm-search-clear{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:inherit;cursor:pointer;padding:2px;border-radius:50%}.wi-filter-menu .fm-search mat-icon{font-size:18px;width:18px;height:18px;opacity:.6}.wi-filter-menu .fm-search input{border:0;outline:0;background:transparent;color:inherit;font:inherit;flex:1;min-width:0}.wi-filter-menu .fm-empty{padding:8px 16px}.wi-filter-menu .mat-mdc-menu-item{min-height:40px}.client-content{max-width:1180px}.client-brand{display:flex;align-items:center;gap:8px;color:var(--text);font-weight:700;font-size:15px;margin-right:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.client-brand:hover{text-decoration:none}.client-brand mat-icon{color:var(--primary)}.client-nav{display:flex;gap:2px;overflow-x:auto}.client-nav a.active{background:var(--blue-bg);color:var(--primary)}.menu-header{padding:8px 16px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}.user-btn{gap:4px}.spacer{flex:1 1 auto}.key-chip{display:inline-block;margin-left:4px;padding:0 6px;border:1px solid var(--border);border-radius:4px;background:var(--grey-bg);color:inherit;font:500 12px/18px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;cursor:pointer;vertical-align:middle}button.key-chip:hover{border-color:currentColor}.key-jump{position:relative;display:flex;align-items:center;gap:4px;padding:0 8px;border:1px solid var(--border);border-radius:6px;height:34px;font-size:14px}.key-jump mat-icon{font-size:18px;width:18px;height:18px;opacity:.6}.key-jump input{border:0;outline:0;background:transparent;color:inherit;width:150px;font:inherit}.key-jump-results{position:absolute;top:38px;right:0;min-width:320px;max-width:90vw;background:var(--card);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px #0000001f;z-index:20}.key-jump-results button{display:block;width:100%;text-align:left;padding:8px 12px;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer}.key-jump-results button:hover{background:var(--grey-bg)}.impersonation-bar{position:sticky;top:56px;z-index:9;display:flex;align-items:center;gap:10px;padding:8px 24px;background:var(--amber-bg);color:var(--amber);border-bottom:1px solid var(--amber-border);font-size:14px}.impersonation-bar mat-icon{flex:none}.impersonation-bar.editable{background:var(--red-bg);color:var(--red)}@media(max-width:720px){.content{padding:14px 12px 32px}.hide-mobile{display:none!important}.page-header{flex-direction:column;align-items:stretch!important}}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-subtitle{color:var(--muted);margin-top:4px}.page-header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.card.narrow{max-width:640px}.card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.card-title h2,.card-title h3{margin:0}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:960px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:8px}.grow{flex:1 1 auto;min-width:0}.muted{color:var(--muted)}.small{font-size:12px}.strong{font-weight:600}.nowrap{white-space:nowrap}.pre-line{white-space:pre-line}.right{text-align:right}.full{width:100%}.mt{margin-top:12px}.mb{margin-bottom:12px}.warn-text{color:var(--amber)}.danger-text{color:var(--red)}.ok-text{color:var(--green)}.link{cursor:pointer;color:var(--primary)}.link:hover{text-decoration:underline}.clickable{cursor:pointer}.clickable:hover{background:var(--surface-alt)}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.filters mat-form-field{width:180px}.filters .search{width:260px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}.form-grid .full,.form-grid .span-2{grid-column:1/-1}@media(max-width:640px){.form-grid{grid-template-columns:1fr}}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;flex-wrap:wrap}button.danger,.mat-mdc-unelevated-button.danger{background:var(--red)!important;color:var(--card)!important}.alert{padding:10px 14px;border-radius:8px;background:var(--blue-bg);color:var(--blue);margin:10px 0}.alert-error{background:var(--red-bg);color:var(--red)}.alert-warn{background:var(--amber-bg);color:var(--amber)}.alert-ok{background:var(--green-bg);color:var(--green)}.section-title{font-size:13px;font-weight:600;color:var(--muted);margin:16px 0 8px;text-transform:uppercase;letter-spacing:.04em}.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px}.kv>div:nth-child(odd){color:var(--muted)}@media(max-width:640px){.kv{grid-template-columns:110px 1fr}}.divider{border-top:1px solid var(--border);margin:12px 0}.table-wrap{overflow-x:auto}table.mat-mdc-table{background:transparent}.mat-mdc-row.clickable:hover{background:var(--hover);cursor:pointer}.mat-mdc-header-cell{font-weight:600;color:var(--muted)}.mat-mdc-cell,.mat-mdc-header-cell{padding:0 8px!important}tr.overdue td{color:var(--red)}table.simple{width:100%;border-collapse:collapse}table.simple th,table.simple td{padding:8px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}table.simple th{color:var(--muted);font-weight:600;font-size:12px}table.simple td.num,table.simple th.num{text-align:right}.chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;line-height:18px;white-space:nowrap;font-weight:500}.chip-green{background:var(--green-bg);color:var(--green)}.chip-amber{background:var(--amber-bg);color:var(--amber)}.chip-red{background:var(--red-bg);color:var(--red)}.chip-blue{background:var(--blue-bg);color:var(--blue)}.chip-purple{background:var(--purple-bg);color:var(--purple)}.chip-teal{background:var(--teal-bg);color:var(--teal)}.chip-grey{background:var(--grey-bg);color:var(--grey)}.health{display:inline-flex;align-items:center;gap:6px}.dot{width:12px;height:12px;border-radius:50%;display:inline-block;box-shadow:0 0 0 2px var(--card),0 0 0 3px #0000000f}.dot-green{background:#43a047}.dot-yellow{background:#f9a825}.dot-red{background:#e53935}.progress{position:relative;height:16px;background:var(--track);border-radius:8px;overflow:hidden;min-width:80px}.progress-bar{height:100%;background:linear-gradient(90deg,#42a5f5,#1e88e5);border-radius:8px;transition:width .3s}.progress-bar.done{background:linear-gradient(90deg,#66bb6a,#43a047)}.progress-text{position:absolute;inset:0;font-size:11px;line-height:16px;text-align:center;color:var(--text);font-weight:600}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-value{font-size:26px;font-weight:700}.stat-label{color:var(--muted);font-size:13px;margin-top:2px}.stat-hint{color:var(--muted);font-size:12px;margin-top:4px}.stat-red .stat-value{color:var(--red)}.stat-amber .stat-value{color:var(--amber)}.stat-green .stat-value{color:var(--green)}.stat-blue .stat-value{color:var(--blue)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:32px 12px;color:var(--muted)}.empty mat-icon{font-size:40px;width:40px;height:40px;opacity:.5}.attachments{display:flex;flex-direction:column;gap:4px}.attachment-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.attachment-upload{margin-top:6px;display:flex;gap:8px;flex-wrap:wrap}.attachment-link-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.attachment-link-form .grow{flex:1 1 220px}.notification-row{display:flex;gap:12px;padding:12px 8px;border-bottom:1px solid var(--border);cursor:pointer;align-items:flex-start}.notification-row:hover{background:var(--surface-alt)}.notification-row.unread{background:var(--hover)}.gantt{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--card)}.gantt-header,.gantt-row{display:flex}.gantt-header{background:var(--surface-alt);border-bottom:1px solid var(--border);height:28px}.gantt-row{border-bottom:1px solid var(--border);min-height:48px}.gantt-row:last-child{border-bottom:0}.gantt-label{width:220px;flex:none;padding:6px 10px;border-right:1px solid var(--border);overflow:hidden}.gantt-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-track{position:relative;flex:1;min-width:0}.gantt-month{position:absolute;top:6px;font-size:11px;color:var(--muted);padding-left:4px;border-left:1px solid var(--border);height:100%}.gantt-today{position:absolute;top:0;bottom:-2000px;width:2px;background:#e5393599;z-index:2}.gantt-bar{position:absolute;top:14px;height:20px;border-radius:5px;background:#bbdefb;overflow:hidden}.gantt-bar.status-Done{background:#c8e6c9}.gantt-bar.status-Delayed{background:#ffe0b2}.gantt-bar.status-NotStarted{background:#e0e0e0}.gantt-fill{height:100%;background:#1565c08c}.gantt-bar.status-Done .gantt-fill{background:#2e7d3299}.gantt-bar.status-Delayed .gantt-fill{background:#b26a008c}.gantt-original{position:absolute;top:10px;width:2px;height:28px;background:repeating-linear-gradient(#999 0 3px,transparent 3px 6px)}.gantt-point{position:absolute;top:36px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#90a4ae}.gantt-point.st-Done{background:#43a047}.gantt-point.st-Blocked{background:#e53935}.gantt-point.st-Preparing{background:#00897b}.gantt-point.st-InProgress{background:#1e88e5}.gantt-point.st-WaitingClient{background:#f9a825}.gantt-point.st-StandupReview{background:#8e24aa}@media(max-width:640px){.gantt-label{width:130px}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:linear-gradient(135deg,var(--blue-bg) 0%,var(--bg) 60%)}.auth-card{position:relative;width:100%;max-width:440px;background:var(--card);border-radius:14px;padding:32px 28px 24px;box-shadow:0 10px 30px #1565c01f}.auth-card.wide{max-width:560px}.auth-card h1{text-align:center;margin:8px 0 6px}.auth-card>p{text-align:center}.auth-brand{display:flex;justify-content:center}.auth-brand mat-icon{font-size:44px;width:44px;height:44px;color:var(--primary)}.auth-lang{position:absolute;top:8px;right:8px}.auth-footer{text-align:center;margin-top:18px;font-size:13px;display:flex;flex-direction:column;gap:6px}.big-btn{height:44px!important;margin:12px 0}.dev-login{margin-top:16px;border-top:1px dashed var(--border);padding-top:12px}.list-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--card)}.list-card+.list-card{margin-top:8px}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--border)}.timeline-item{position:relative;padding-bottom:16px}.timeline-item:before{content:"";position:absolute;left:-19px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 3px var(--card)}.timeline-item.done:before{background:#43a047}.timeline-item.delayed:before{background:#f9a825}.timeline-item.overdue:before{background:#e53935}.snack-error{--mdc-snackbar-container-color: #b71c1c}.mat-mdc-tab-body-content{padding-top:12px}.mat-mdc-dialog-content{max-height:75vh!important}.mat-mdc-dialog-title.dialog-title-row{display:flex;align-items:center;gap:8px}.mat-mdc-dialog-title.dialog-title-row .mat-mdc-icon-button{margin-left:auto;margin-right:-12px;flex-shrink:0}.mat-mdc-select-panel.select-search-panel{padding-top:0}.select-search{position:sticky;top:0;z-index:1;padding:8px;background:var(--card);border-bottom:1px solid var(--border)}.select-search-input{width:100%;box-sizing:border-box;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;color:var(--text);background:var(--card)}.select-search-input:focus{outline:none;border-color:var(--primary)}.select-search-empty{padding:8px 4px 0;color:var(--muted);font-size:13px}.select-search-hidden{display:none!important}@media print{.shell-nav,.topbar,.no-print,.mat-mdc-snack-bar-container{display:none!important}.mat-drawer-content,.mat-sidenav-content{margin-left:0!important}.shell,.mat-drawer-container{background:#fff!important}.content{padding:0!important;max-width:none!important}body{background:#fff!important}}app-rich-text{display:block}.rich-content{line-height:1.6;word-break:break-word}.rich-content:not(.pre-line):not(.ProseMirror){white-space:normal}.rich-content>:first-child{margin-top:0}.rich-content>:last-child{margin-bottom:0}.rich-content p{margin:0 0 8px}.rich-content h2,.rich-content h3{margin:12px 0 6px;line-height:1.35}.rich-content h2{font-size:17px}.rich-content h3{font-size:15px}.rich-content ul,.rich-content ol{margin:0 0 8px;padding-left:22px}.rich-content li>p{margin:0}.rich-content blockquote{margin:0 0 8px;padding:2px 12px;border-left:3px solid var(--border);color:var(--muted)}.rich-content code{background:var(--surface-alt);border-radius:4px;padding:1px 4px;font-size:13px}.rich-content pre{background:var(--surface-alt);border-radius:6px;padding:8px 10px;overflow-x:auto;margin:0 0 8px}.rich-content pre code{background:none;padding:0}.rich-content a{color:var(--primary)}.rich-content img{max-width:100%;height:auto;border-radius:4px;border:1px solid var(--border);margin:4px 0;display:block;cursor:zoom-in}.rich-content table{border-collapse:collapse;margin:0 0 8px;max-width:100%;display:block;overflow-x:auto}.rich-content th,.rich-content td{border:1px solid var(--border);padding:4px 8px;vertical-align:top;min-width:60px}.rich-content th{background:var(--surface-alt);font-weight:600;text-align:left}.rich-content th p,.rich-content td p{margin:0}.rich-content hr{border:0;border-top:1px solid var(--border);margin:12px 0}.rte{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);margin-bottom:16px}.rte.rte-focused{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.rte.rte-disabled{background:var(--bg)}.rte-head{display:flex;align-items:flex-start}.rte-label{font-size:12px;color:var(--muted);padding:6px 12px 0}.rte-head .rte-expand{margin-left:auto;color:var(--muted)}.rte-required{color:var(--red)}.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:2px 4px;border-bottom:1px solid var(--border)}.rte-toolbar .rte-btn{width:32px;height:32px;padding:4px;--mdc-icon-button-state-layer-size: 32px;--mat-icon-button-state-layer-size: 32px}.rte-toolbar .rte-btn mat-icon{font-size:20px;width:20px;height:20px}.rte-toolbar .rte-btn.active{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);border-radius:6px}.rte-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.rte-uploading{margin-left:8px}.rte-body{padding:8px 12px;cursor:text;overflow-y:auto;max-height:60vh}.rte-body .ProseMirror{outline:none;min-height:inherit}.rte-body .rte-content .ProseMirror-selectednode img{outline:2px solid var(--primary)}.rte-content [data-resize-wrapper]{max-width:100%}.rte-content [data-resize-wrapper] img{height:auto!important;max-width:100%}.rte-content [data-resize-handle]{width:12px;height:12px;margin:-2px;background:var(--card);border:2px solid var(--primary);border-radius:3px;box-sizing:border-box;opacity:0;z-index:1}.rte-content [data-resize-handle=top-left],.rte-content [data-resize-handle=bottom-right]{cursor:nwse-resize}.rte-content [data-resize-handle=top-right],.rte-content [data-resize-handle=bottom-left]{cursor:nesw-resize}.rte-content [data-resize-container]:hover [data-resize-handle],.rte-content .ProseMirror-selectednode [data-resize-handle],.rte-content [data-resize-state=true] [data-resize-handle]{opacity:1}.rte-body .rte-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--muted);float:left;height:0;pointer-events:none}.rte-body .rte-content .selectedCell{background:color-mix(in srgb,var(--primary) 10%,transparent)}.rte-hint{font-size:12px;color:var(--muted);padding:0 12px 6px}.rte.rte-fullscreen{position:fixed;inset:16px;z-index:999;margin:0;display:flex;flex-direction:column;box-shadow:0 0 0 100vmax #00000073}.rte.rte-fullscreen .rte-body{flex:1;max-height:none}.rte.rte-fullscreen .rte-body .ProseMirror{min-height:100%}.rte-body .rte-content img{cursor:zoom-in}.img-preview{position:fixed;inset:0;z-index:1200;width:auto;height:auto;max-width:none;max-height:none;margin:0;border:0;color:inherit;background:#000000d9;display:flex;align-items:center;justify-content:center;overflow:auto;padding:48px 16px 16px;box-sizing:border-box}.img-preview img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;background:#fff;border-radius:4px}.img-preview.actual-size{align-items:flex-start;justify-content:flex-start}.img-preview.actual-size img{max-width:none;max-height:none;cursor:zoom-out;margin:auto}.img-preview-bar{position:fixed;top:8px;right:12px;display:flex;gap:4px}.img-preview-bar button{width:36px;height:36px;border:0;border-radius:50%;background:#ffffff26;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.img-preview-bar button:hover{background:#ffffff4d}
