@import"https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--neutral-0: oklch(1 0 0);--neutral-25: oklch(.99 .003 250);--neutral-50: oklch(.975 .005 250);--neutral-100: oklch(.955 .007 250);--neutral-200: oklch(.92 .01 250);--neutral-300: oklch(.87 .012 252);--neutral-400: oklch(.755 .014 252);--neutral-500: oklch(.62 .015 254);--neutral-600: oklch(.515 .015 256);--neutral-700: oklch(.415 .014 258);--neutral-800: oklch(.3 .013 260);--neutral-900: oklch(.215 .013 262);--neutral-950: oklch(.16 .012 264);--blue-50: oklch(.97 .02 252);--blue-100: oklch(.93 .045 252);--blue-200: oklch(.865 .075 252);--blue-300: oklch(.76 .115 252);--blue-400: oklch(.645 .15 252);--blue-500: oklch(.555 .17 252);--blue-600: oklch(.485 .162 254);--blue-700: oklch(.405 .14 256);--blue-800: oklch(.32 .11 258);--blue-900: oklch(.25 .082 260);--green-50: oklch(.965 .025 155);--green-100: oklch(.92 .055 155);--green-500: oklch(.625 .15 152);--green-600: oklch(.545 .14 152);--green-700: oklch(.455 .118 153);--amber-50: oklch(.975 .03 85);--amber-100: oklch(.935 .07 85);--amber-500: oklch(.76 .155 78);--amber-600: oklch(.7 .16 70);--amber-700: oklch(.58 .14 60);--orange-50: oklch(.965 .035 55);--orange-100: oklch(.915 .075 52);--orange-500: oklch(.685 .19 48);--orange-600: oklch(.62 .19 44);--red-50: oklch(.965 .025 25);--red-100: oklch(.915 .055 25);--red-500: oklch(.575 .215 27);--red-600: oklch(.51 .205 27);--red-700: oklch(.435 .178 27);--teal-50: oklch(.965 .025 205);--teal-100: oklch(.915 .055 205);--teal-500: oklch(.7 .13 202);--teal-600: oklch(.615 .12 204);color-scheme:light;--surface-base: var(--neutral-50);--surface-sunken: var(--neutral-100);--surface-raised: var(--neutral-0);--surface-card: var(--neutral-0);--surface-overlay: var(--neutral-0);--surface-inverse: var(--neutral-900);--border-subtle: var(--neutral-200);--border-default: var(--neutral-300);--border-strong: var(--neutral-400);--border-focus: var(--blue-500);--text-primary: var(--neutral-900);--text-secondary: var(--neutral-600);--text-tertiary: var(--neutral-500);--text-disabled: var(--neutral-400);--text-on-accent: var(--neutral-0);--text-link: var(--blue-600);--accent: var(--blue-500);--accent-hover: var(--blue-600);--accent-active: var(--blue-700);--accent-subtle: var(--blue-50);--accent-border: var(--blue-200);--accent-text: var(--blue-700);--status-success: var(--green-600);--status-success-bg: var(--green-50);--status-success-border: var(--green-100);--status-warning: var(--amber-700);--status-warning-bg: var(--amber-50);--status-warning-border: var(--amber-100);--status-danger: var(--red-600);--status-danger-bg: var(--red-50);--status-danger-border: var(--red-100);--status-info: var(--blue-600);--status-info-bg: var(--blue-50);--status-info-border: var(--blue-100);--status-live: var(--teal-600);--status-live-bg: var(--teal-50);--field-orange: var(--orange-500);--field-orange-bg: var(--orange-50);--ring: 0 0 0 3px color-mix(in oklch, var(--blue-500) 35%, transparent)}[data-theme=dark]{color-scheme:dark;--surface-base: var(--neutral-950);--surface-sunken: oklch(.13 .012 264);--surface-raised: var(--neutral-900);--surface-card: var(--neutral-900);--surface-overlay: var(--neutral-800);--surface-inverse: var(--neutral-50);--border-subtle: oklch(.27 .013 262);--border-default: oklch(.33 .013 260);--border-strong: var(--neutral-700);--border-focus: var(--blue-400);--text-primary: var(--neutral-50);--text-secondary: var(--neutral-400);--text-tertiary: var(--neutral-500);--text-disabled: var(--neutral-700);--text-on-accent: var(--neutral-0);--text-link: var(--blue-300);--accent: var(--blue-400);--accent-hover: var(--blue-300);--accent-active: var(--blue-200);--accent-subtle: color-mix(in oklch, var(--blue-500) 18%, var(--neutral-950));--accent-border: color-mix(in oklch, var(--blue-400) 35%, var(--neutral-900));--accent-text: var(--blue-300);--status-success: var(--green-500);--status-success-bg: color-mix(in oklch, var(--green-500) 16%, var(--neutral-950));--status-success-border: color-mix(in oklch, var(--green-500) 32%, var(--neutral-900));--status-warning: var(--amber-500);--status-warning-bg: color-mix(in oklch, var(--amber-500) 15%, var(--neutral-950));--status-warning-border: color-mix(in oklch, var(--amber-500) 30%, var(--neutral-900));--status-danger: var(--red-500);--status-danger-bg: color-mix(in oklch, var(--red-500) 18%, var(--neutral-950));--status-danger-border: color-mix(in oklch, var(--red-500) 34%, var(--neutral-900));--status-info: var(--blue-400);--status-info-bg: color-mix(in oklch, var(--blue-500) 16%, var(--neutral-950));--status-info-border: color-mix(in oklch, var(--blue-500) 32%, var(--neutral-900));--status-live: var(--teal-500);--status-live-bg: color-mix(in oklch, var(--teal-500) 16%, var(--neutral-950));--field-orange: var(--orange-500);--field-orange-bg: color-mix(in oklch, var(--orange-500) 16%, var(--neutral-950));--ring: 0 0 0 3px color-mix(in oklch, var(--blue-400) 45%, transparent)}:root{--font-sans: "Schibsted Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 16px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--text-3xl: 34px;--text-4xl: 44px;--text-5xl: 56px;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-black: 800;--leading-tight: 1.1;--leading-snug: 1.25;--leading-normal: 1.45;--leading-relaxed: 1.6;--tracking-display: -.02em;--tracking-tight: -.01em;--tracking-normal: 0;--tracking-label: .04em;--tracking-mono: .02em}:root{--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--radius-xs: 3px;--radius-sm: 5px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 22px;--radius-pill: 999px;--control-sm: 28px;--control-md: 36px;--control-lg: 44px;--sidebar-w: 248px;--topbar-h: 56px;--max-content: 1400px}:root{--shadow-xs: 0 1px 2px oklch(.3 .02 260 / .06);--shadow-sm: 0 1px 2px oklch(.3 .02 260 / .06), 0 2px 4px oklch(.3 .02 260 / .05);--shadow-md: 0 2px 4px oklch(.3 .02 260 / .06), 0 6px 12px oklch(.3 .02 260 / .08);--shadow-lg: 0 4px 8px oklch(.3 .02 260 / .07), 0 16px 32px oklch(.25 .02 260 / .12);--shadow-focus-danger: 0 0 0 3px color-mix(in oklch, var(--red-500) 30%, transparent);--shadow-inset: inset 0 1px 2px oklch(.3 .02 260 / .08);--transition-fast: .12s cubic-bezier(.4, 0, .2, 1);--transition-base: .18s cubic-bezier(.4, 0, .2, 1);--transition-slow: .26s cubic-bezier(.16, 1, .3, 1)}[data-theme=dark]{--shadow-xs: 0 1px 2px oklch(0 0 0 / .4);--shadow-sm: 0 1px 2px oklch(0 0 0 / .4), 0 2px 4px oklch(0 0 0 / .35);--shadow-md: 0 2px 4px oklch(0 0 0 / .45), 0 6px 14px oklch(0 0 0 / .45);--shadow-lg: 0 6px 14px oklch(0 0 0 / .5), 0 20px 40px oklch(0 0 0 / .55);--shadow-inset: inset 0 1px 2px oklch(0 0 0 / .45)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text-primary);background:var(--surface-base);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--text-primary)}.ec-label{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-tertiary)}.ec-mono{font-family:var(--font-mono);letter-spacing:var(--tracking-mono)}.ec-dot{width:8px;height:8px;border-radius:999px;display:inline-block;flex:none}:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}html,body{height:100%}body{margin:0;overflow:hidden}#root{height:100vh}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:100vh;background:var(--surface-base);color:var(--text-primary)}.side{background:var(--surface-raised);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;min-height:0}.side-brand{display:flex;align-items:center;gap:10px;padding:0 18px;height:var(--topbar-h);border-bottom:1px solid var(--border-subtle)}.side-brand .wm{font-weight:700;font-size:16px;letter-spacing:-.02em;white-space:nowrap}.side-brand .wm .sub{font-weight:500;color:var(--text-tertiary)}.brand-mark{width:28px;height:28px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}.brand-mark svg{stroke-width:2.25px}.side-nav{padding:10px 12px;display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow:auto}.side-group-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-tertiary);padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;border:1px solid transparent;-webkit-user-select:none;user-select:none;white-space:nowrap}.nav-item:hover{background:var(--surface-sunken);color:var(--text-primary)}.nav-item.active{background:var(--accent-subtle);color:var(--accent-text);border-color:var(--accent-border)}.nav-item .count{margin-left:auto;font-family:var(--font-mono);font-size:11px;background:var(--surface-sunken);color:var(--text-secondary);padding:1px 7px;border-radius:999px}.nav-item.active .count{background:color-mix(in oklch,var(--accent) 16%,transparent);color:var(--accent-text)}.nav-item .alert{margin-left:auto;font-family:var(--font-mono);font-size:11px;background:var(--field-orange);color:#1a1206;padding:1px 7px;border-radius:999px;font-weight:600}.side-foot{border-top:1px solid var(--border-subtle);padding:12px;display:flex;align-items:center;gap:10px}.avatar{border-radius:999px;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;flex:none}.main{display:flex;flex-direction:column;min-width:0;min-height:0}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--border-subtle);background:var(--surface-raised);display:flex;align-items:center;gap:16px;padding:0 20px;flex:none}.event-pick{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);cursor:pointer;white-space:nowrap}.event-pick:hover{background:var(--surface-sunken)}.event-pick .ev-dot{width:8px;height:8px;border-radius:999px;background:var(--status-success);box-shadow:0 0 0 3px var(--status-success-bg)}.topbar-search{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;background:var(--surface-sunken);border:1px solid transparent;border-radius:var(--radius-sm);width:300px;color:var(--text-tertiary)}.topbar-search input{border:none;outline:none;background:transparent;font-family:var(--font-sans);font-size:13px;color:var(--text-primary);width:100%}.topbar-spacer{flex:1}.icon-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;border:1px solid transparent;background:transparent}.icon-btn:hover{background:var(--surface-sunken);color:var(--text-primary)}.role-pick{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border-radius:var(--radius-pill);border:1px solid var(--border-default);cursor:pointer;white-space:nowrap}.role-pick:hover{background:var(--surface-sunken)}.content{flex:1;min-height:0;overflow:auto;padding:22px 26px 60px}.content-narrow{max-width:1180px;margin:0 auto}.page-head{display:flex;align-items:center;gap:14px;margin-bottom:20px}.page-head .ph-text h1{font-size:23px;font-weight:700;letter-spacing:-.02em}.page-head .ph-text p{margin:3px 0 0;color:var(--text-secondary);font-size:13px}.page-head .ph-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.breadcrumb{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-tertiary);margin-bottom:12px}.breadcrumb a{color:var(--text-secondary);cursor:pointer;text-decoration:none}.breadcrumb a:hover{color:var(--accent-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--radius-sm);font-family:var(--font-sans);font-weight:600;font-size:14px;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:filter var(--transition-fast)}.btn:hover{filter:brightness(.95)}.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.btn svg{width:16px;height:16px}.btn-primary{background:var(--accent);color:var(--text-on-accent)}.btn-secondary{background:var(--surface-raised);color:var(--text-primary);border-color:var(--border-default)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--surface-sunken);filter:none}.btn-danger{background:var(--status-danger);color:#fff}.btn-field{background:var(--field-orange);color:#1a1206}.btn-sm{height:30px;padding:0 11px;font-size:13px}.badge{display:inline-flex;align-items:center;gap:6px;height:21px;padding:0 8px;border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.bdot{width:6px;height:6px;border-radius:999px;flex:none}.fn-chip{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-pill);font-weight:600;white-space:nowrap}.fn-chip svg{stroke-width:2.25px}.lucide{stroke-width:2px;flex:none}.mono{font-family:var(--font-mono)}.panel{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}.panel-head{display:flex;align-items:center;gap:10px;padding:13px 15px;border-bottom:1px solid var(--border-subtle)}.panel-head h3{font-size:14px;font-weight:600;margin:0}.panel-head .ct{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary)}.stat-row{display:grid;gap:14px;margin-bottom:18px}.stat{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:14px 16px}.stat-top{display:flex;align-items:center;gap:8px}.stat-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-tertiary)}.stat-value{font-size:27px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin-top:8px;font-variant-numeric:tabular-nums}.stat-sub{font-size:12px;color:var(--text-secondary);margin-top:4px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);font-weight:500}.field-hint{font-size:12px;color:var(--text-tertiary)}.field-hint.invalid{color:var(--status-danger)}.inp,.sel,.txta{width:100%;font-family:var(--font-sans);font-size:14px;color:var(--text-primary);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:0 12px;height:var(--control-md);outline:none;transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.txta{height:auto;padding:10px 12px;resize:vertical;min-height:84px;line-height:1.5}.sel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:34px;cursor:pointer}.inp:focus,.sel:focus,.txta:focus{border-color:var(--border-focus);box-shadow:var(--ring)}.inp::placeholder,.txta::placeholder{color:var(--text-disabled)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px 22px}.form-section-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-tertiary);margin:4px 0 2px;display:flex;align-items:center;gap:8px}.form-section-label:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.span2{grid-column:1 / -1}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.tile{display:flex;align-items:center;gap:10px;padding:12px 13px;border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;background:var(--surface-raised);transition:border-color var(--transition-fast),background var(--transition-fast)}.tile:hover{border-color:var(--border-strong)}.tile.on{border-color:var(--accent);background:var(--accent-subtle);box-shadow:var(--ring)}.tile .tl-ic{width:30px;height:30px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex:none}.tile .tl-name{font-size:13.5px;font-weight:600}.tile .tl-sub{font-size:11px;color:var(--text-tertiary)}.segmented{display:inline-flex;background:var(--surface-sunken);border-radius:var(--radius-sm);padding:3px;gap:2px}.seg{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--text-secondary);padding:6px 12px;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;white-space:nowrap}.seg.on{background:var(--surface-raised);color:var(--text-primary);box-shadow:var(--shadow-xs)}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(290px,1fr);gap:14px;align-items:start;overflow-x:auto;padding-bottom:8px}.kcol{background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);display:flex;flex-direction:column;min-height:120px}.kcol-head{display:flex;align-items:center;gap:8px;padding:12px 13px 10px}.kcol-head .kc-title{font-size:13px;font-weight:600}.kcol-head .kc-count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);background:var(--surface-raised);padding:1px 8px;border-radius:999px}.kcol-body{display:flex;flex-direction:column;gap:9px;padding:0 11px 12px}.need-card{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:11px 12px;display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:box-shadow var(--transition-fast),border-color var(--transition-fast);border-left:3px solid transparent}.need-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-default)}.need-card .nc-top{display:flex;align-items:center;gap:8px}.need-card .nc-id{font-family:var(--font-mono);font-size:11.5px;font-weight:600;color:var(--text-secondary)}.need-card .nc-title{font-size:13.5px;font-weight:600;line-height:1.3}.need-card .nc-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.need-card .nc-meta span{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-tertiary)}.need-card .nc-foot{display:flex;align-items:center;gap:8px}.tbl{width:100%;border-collapse:collapse}.tbl th{font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-tertiary);text-align:left;font-weight:500;padding:10px 14px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}.tbl td{padding:11px 14px;border-bottom:1px solid var(--border-subtle);font-size:13.5px;vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr.clickable{cursor:pointer}.tbl tbody tr.clickable:hover{background:var(--surface-sunken)}.tbl .num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tbl .t-id{font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--text-secondary)}.tbl tfoot td{padding:11px 14px;font-size:13px;font-weight:600;border-top:1px solid var(--border-default)}.tbl tbody tr.agg-group td{background:var(--surface-sunken);border-top:1px solid var(--border-default)}.tbl tbody tr.agg-group.clickable:hover td{background:var(--surface-raised)}.agg-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.agg-toolbar .sel,.agg-toolbar .inp{width:auto}.tbl-sticky thead th{position:sticky;top:0;z-index:1;background:var(--surface-card)}.rl-row{display:grid;grid-template-columns:110px 1fr 70px 56px 110px 32px;gap:10px;align-items:center;padding:8px 0}.rl-row.head{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary);padding-bottom:6px}.rl-row .inp,.rl-row .sel{height:var(--control-sm);font-size:13px}.rl-del{width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center}.rl-del:hover{background:var(--status-danger-bg);color:var(--status-danger)}.bar{height:8px;border-radius:999px;background:var(--surface-sunken);overflow:hidden;min-width:80px}.bar>span{display:block;height:100%;border-radius:999px}.detail-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:18px;align-items:start}.kv{display:grid;grid-template-columns:130px 1fr;gap:10px 14px}.kv dt{font-family:var(--font-mono);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-tertiary);padding-top:1px}.kv dd{margin:0;font-size:13.5px;color:var(--text-primary)}.prose{font-size:14px;line-height:1.55;color:var(--text-primary)}.callout{background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:13px 15px}.feed{display:flex;flex-direction:column}.feed-item{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid var(--border-subtle)}.feed-item:last-child{border-bottom:none}.feed-dot{width:9px;height:9px;border-radius:999px;margin-top:5px;flex:none}.feed-body{flex:1;min-width:0}.feed-body .fb-top{display:flex;align-items:center;gap:8px}.feed-body .fb-who{font-size:13px;font-weight:600}.feed-body .fb-time{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);margin-left:auto}.feed-body .fb-text{font-size:13px;color:var(--text-secondary);margin-top:3px;line-height:1.5}.proc-action{display:inline-flex;align-items:center;gap:6px}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:34px 16px;color:var(--text-tertiary);font-size:13px;text-align:center}.toast-wrap{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:50;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{display:flex;align-items:center;gap:10px;background:var(--surface-overlay);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:11px 15px;box-shadow:var(--shadow-lg);font-size:13.5px;font-weight:500;animation:toastin .22s ease}.toast .t-ic{width:22px;height:22px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex:none}@keyframes toastin{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border-subtle);margin-bottom:16px}.tab{padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:7px}.tab:hover{color:var(--text-primary)}.tab.on{color:var(--accent-text);border-bottom-color:var(--accent)}.tab .tcount{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary)}.gantt-panel{overflow:hidden}.gantt-row{display:grid;grid-template-columns:240px 1fr;align-items:stretch}.gantt-label{padding:9px 14px;border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:2px;justify-content:center;min-width:0}.gantt-label .gl-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-label .gl-meta{font-size:10.5px;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-track{position:relative;border-bottom:1px solid var(--border-subtle);min-height:42px;background-image:repeating-linear-gradient(to right,transparent,transparent calc(100%/6 - 1px),var(--border-subtle) calc(100%/6 - 1px),var(--border-subtle) calc(100%/6))}.gantt-head{position:sticky;top:0;z-index:5;background:var(--surface-card)}.gantt-head .gantt-label{border-bottom:1px solid var(--border-default)}.gantt-head-track{min-height:56px;border-bottom:1px solid var(--border-default)}.phase-bands{position:absolute;inset:6px 0 auto 0;height:20px}.phase-band{position:absolute;top:0;height:20px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;border-radius:var(--radius-sm);margin:0 2px;box-sizing:border-box;width:auto}.day-cols{position:absolute;top:30px;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(6,1fr)}.day-col{display:flex;align-items:center;justify-content:center;border-left:1px solid var(--border-subtle)}.day-col:first-child{border-left:none}.day-col span{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--text-secondary)}.gantt-body{max-height:calc(100vh - var(--topbar-h) - 320px);min-height:280px;overflow:auto;position:relative}.gantt-deps{position:absolute;top:0;z-index:3;pointer-events:none;overflow:visible}.gbar.summary{height:9px;box-shadow:none;opacity:.7;border-radius:2px}.gbar.dep-warn{box-shadow:0 0 0 1.5px var(--status-danger),var(--shadow-xs)}.dep-pick{display:flex;flex-direction:column;gap:2px;max-height:150px;overflow:auto;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:6px}.dep-opt{display:flex;align-items:center;gap:7px;font-size:13px;padding:3px 6px;border-radius:5px;cursor:pointer;white-space:nowrap}.dep-opt.on{background:var(--surface-sunken)}.dep-opt input{flex:none}.gantt-group{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:700;letter-spacing:.01em;background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle);position:sticky;left:0}.gantt-row.clickable{cursor:pointer}.gantt-row.clickable:hover .gantt-label{background:var(--surface-sunken)}.gantt-row.clickable:hover .gbar{filter:brightness(.95)}.gbar{position:absolute;top:50%;transform:translateY(-50%);height:24px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:5px;padding:0 8px;box-shadow:var(--shadow-xs);overflow:hidden;border:1px solid transparent;min-width:4px}.gbar.run{border-style:dashed;box-shadow:none}.gbar.crit{box-shadow:0 0 0 1.5px var(--status-danger),var(--shadow-xs)}.gbar .gbar-txt{font-family:var(--font-mono);font-size:10.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gbar svg{stroke-width:2.5px}.gbar-grip{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;z-index:2}.gbar-grip.l{left:0}.gbar-grip.r{right:0}.now-line{position:absolute;top:0;bottom:0;width:2px;background:var(--status-danger);z-index:4}.now-line.subtle{opacity:.35;width:1.5px}.now-flag{position:absolute;top:2px;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#fff;background:var(--status-danger);padding:1px 5px;border-radius:3px;white-space:nowrap}.risk{display:inline-flex;align-items:center;gap:6px;font-size:13px}.risk .rdot{width:8px;height:8px;border-radius:999px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11161f73;display:grid;place-items:center;z-index:100;padding:24px;animation:toastin .15s ease}.modal-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(580px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border-subtle)}.modal-head h3{font-size:15px;font-weight:600;margin:0;flex:1}.modal-body{padding:16px;overflow:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:13px 16px;border-top:1px solid var(--border-subtle)}:root{--map-bg: oklch(.962 .01 150);--map-line: oklch(.93 .01 150);--map-block: oklch(.93 .018 150);--map-zone-stroke: oklch(.78 .02 150);--map-road: oklch(.988 .004 230)}[data-theme=dark]{--map-bg: oklch(.205 .016 200);--map-line: oklch(.255 .018 200);--map-block: oklch(.245 .02 150);--map-zone-stroke: oklch(.4 .03 150);--map-road: oklch(.3 .014 230)}.site-stage{position:relative;border-radius:var(--radius-lg);border:1px solid var(--border-subtle);overflow:hidden;background:var(--map-bg);width:100%;height:100%}.site-grid{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.site-stage .site-map{position:absolute;top:0;right:0;bottom:0;left:0}.site-stage .map-toolbar,.site-stage .map-scale,.site-stage .map-zoom,.site-stage .map-attr{z-index:3}.maplibregl-ctrl-attrib{font-size:9px;opacity:.7}.maplibregl-marker{will-change:transform}.zone-label{position:absolute;transform:translateZ(0);font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;font-weight:600;color:var(--text-secondary);pointer-events:none;white-space:nowrap}.site-pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;z-index:2}.site-pin.click{cursor:pointer}.site-pin .pin-body{width:28px;height:28px;border-radius:50% 50% 50% 2px;transform:rotate(45deg);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);border:2px solid var(--surface-raised);transition:transform var(--transition-fast)}.site-pin.sm .pin-body{width:20px;height:20px;border-width:1.5px}.site-pin .pin-body>*{transform:rotate(-45deg)}.site-pin.click:hover .pin-body{transform:rotate(45deg) scale(1.08)}.site-pin .pin-num{font-family:var(--font-mono);font-size:12px;font-weight:700;color:#fff}.site-pin.sm .pin-num{font-size:10px}.site-pin .pin-dot{width:7px;height:7px;border-radius:999px;background:#fff}.site-pin .pin-label{margin-top:5px;font-family:var(--font-mono);font-size:9.5px;font-weight:600;background:var(--surface-overlay);color:var(--text-primary);padding:1px 5px;border-radius:4px;box-shadow:var(--shadow-sm);white-space:nowrap;max-width:96px;overflow:hidden;text-overflow:ellipsis;border:1px solid var(--border-subtle)}.site-pin.is-sel{z-index:4}.site-pin.pulse .pin-body{animation:pinpulse 1.6s ease-out infinite}@keyframes pinpulse{0%{box-shadow:0 0 color-mix(in oklch,var(--status-warning) 70%,transparent)}70%{box-shadow:0 0 0 13px transparent}to{box-shadow:0 0 0 0 transparent}}.site-stage .map-toolbar{position:absolute;top:12px;left:12px;display:flex;gap:7px;flex-wrap:wrap;max-width:calc(100% - 24px)}.site-stage .map-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);font-size:12.5px;font-weight:500;cursor:pointer;font-family:var(--font-mono)}.site-stage .map-chip:hover{background:var(--surface-sunken)}.site-stage .map-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);overflow:hidden}.site-stage .map-zoom button{width:32px;height:32px;border:none;background:transparent;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.site-stage .map-zoom button:first-child{border-bottom:1px solid var(--border-subtle)}.site-stage .map-zoom button:hover{background:var(--surface-sunken)}.site-stage .map-scale{position:absolute;left:12px;bottom:12px;font-family:var(--font-mono);font-size:10px;color:var(--text-secondary);background:var(--surface-overlay);padding:3px 8px;border-radius:4px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:8px;border:1px solid var(--border-subtle)}.site-stage .map-scale .sbar{width:44px;height:3px;background:var(--text-secondary);border-radius:2px}.site-stage .map-attr{position:absolute;right:12px;top:12px;font-family:var(--font-mono);font-size:9.5px;color:var(--text-tertiary);background:var(--surface-overlay);padding:2px 7px;border-radius:4px;border:1px solid var(--border-subtle)}.gis-wrap{display:grid;grid-template-columns:1fr 320px;gap:18px;height:calc(100vh - var(--topbar-h) - 44px - 22px);min-height:460px}.gis-side{display:flex;flex-direction:column;gap:16px;min-height:0;overflow:auto}.layer-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border-subtle)}.layer-row:last-child{border-bottom:none}.layer-row .lname{font-size:13px}.layer-row .track{width:38px;height:21px;border-radius:999px;position:relative;flex:none;margin-left:auto;cursor:pointer;transition:background var(--transition-base)}.layer-row .track .knob{position:absolute;top:2px;width:17px;height:17px;border-radius:999px;background:#fff;box-shadow:var(--shadow-sm);transition:left var(--transition-base)}.layer-row .track.on{background:var(--accent)}.layer-row .track.on .knob{left:19px}.layer-row .track.off{background:var(--neutral-300)}.layer-row .track.off .knob{left:2px}.legend-dot{width:10px;height:10px;border-radius:999px;flex:none}.loc-pick{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;align-items:stretch}.loc-meta{display:flex;flex-direction:column;gap:10px}.coord-readout{font-family:var(--font-mono);font-size:13px;color:var(--text-primary);background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:9px 12px;display:flex;align-items:center;gap:8px}
