:root{--brand-50: #e6f2f2;--brand-100: #cfe8e8;--brand-200: #a8dadc;--brand-500: #2d8b8b;--brand-600: #22736f;--brand-700: #185c5a;--n-0: #ffffff;--n-50: #f8fafc;--n-100: #f1f5f9;--n-200: #e2e8f0;--n-300: #cbd5e1;--n-400: #94a3b8;--n-500: #64748b;--n-600: #475569;--n-700: #334155;--n-800: #1e293b;--n-900: #0f172a;--bg: #e9f3f1;--surface: #ffffff;--surface-subtle:#eef7f4;--border: #d5e6e3;--border-strong: #bcd6d3;--text: #1a2332;--text-muted: #566b72;--text-subtle: #8aa1a3;--text-on-brand: #ffffff;--topnav-bg: rgba(255, 255, 255, .85);--scrim: rgba(15, 23, 42, .5);--code-bg: var(--n-100);--primary: #1a6d6b;--primary-hover: #135755;--primary-soft: #d9edeb;--success: #16a34a;--success-soft: #dcfce7;--success-ink: #166534;--warning: #d97706;--warning-soft: #fef3c7;--warning-ink: #92400e;--danger: #dc2626;--danger-soft: #fee2e2;--danger-ink: #991b1b;--info: #2563eb;--info-soft: #dbeafe;--info-ink: #1e40af;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .08);--shadow-md: 0 4px 6px -1px rgba(15, 23, 42, .07), 0 2px 4px -2px rgba(15, 23, 42, .06);--shadow-lg: 0 12px 28px -8px rgba(15, 23, 42, .2), 0 4px 10px -4px rgba(15, 23, 42, .1);--ring: 0 0 0 3px rgba(45, 139, 139, .4);--ease: cubic-bezier(.4, 0, .2, 1);--t-fast: .12s var(--ease);--t: .18s var(--ease);--font-sans: "DejaVu Sans", "Verdana", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Menlo", monospace;color-scheme:light}:root[data-theme=dark]{--bg: #10171f;--surface: #1a2332;--surface-subtle:#151d29;--border: #2b3a48;--border-strong: #3a4c5b;--text: #f1faee;--text-muted: #9dc0c2;--text-subtle: #6d8a8c;--primary: #2d8b8b;--primary-hover: #37a3a3;--primary-soft: rgba(45, 139, 139, .2);--text-on-brand: #0d1a24;--success-soft: rgba(22, 163, 74, .18);--success-ink: #4ade80;--warning-soft: rgba(217, 119, 6, .2);--warning-ink: #fbbf24;--danger-soft: rgba(220, 38, 38, .2);--danger-ink: #f87171;--info-soft: rgba(45, 139, 139, .22);--info-ink: #a8dadc;--topnav-bg: rgba(26, 35, 50, .8);--scrim: rgba(6, 12, 20, .68);--code-bg: #223042;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 28px -8px rgba(0, 0, 0, .7), 0 4px 10px -4px rgba(0, 0, 0, .5);color-scheme:dark}:root[data-theme=dark] .badge.critical{background:#dc262647;color:#fca5a5}:root[data-theme=dark] .badge{background:#94a3b824;color:var(--text-muted)}:root[data-theme=dark] .badge.pending{background:var(--info-soft);color:var(--info-ink)}:root[data-theme=dark] .badge.submitted{background:var(--warning-soft);color:var(--warning-ink)}:root[data-theme=dark] .badge.validated,:root[data-theme=dark] .badge.active{background:var(--success-soft);color:var(--success-ink)}:root[data-theme=dark] .badge.rejected,:root[data-theme=dark] .badge.overdue{background:var(--danger-soft);color:var(--danger-ink)}:root[data-theme=dark] .badge.paused,:root[data-theme=dark] .badge.medium{background:var(--warning-soft);color:var(--warning-ink)}:root[data-theme=dark] .badge.high,:root[data-theme=dark] .badge.negative{background:var(--danger-soft);color:var(--danger-ink)}:root[data-theme=dark] .badge.positive{background:var(--success-soft);color:var(--success-ink)}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.55;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em;color:var(--text)}h1{font-size:24px;line-height:1.25}h2{font-size:18px;line-height:1.3}h3{font-size:15px;line-height:1.35}p{margin:0}code{font-family:var(--font-mono);font-size:.9em;background:var(--code-bg);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--n-700)}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}::selection{background:var(--brand-100)}.btn,button{font:inherit;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;background:var(--surface);color:var(--n-700);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:7px 13px;min-height:36px;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast),color var(--t-fast),transform var(--t-fast)}button:hover{background:var(--n-50);border-color:var(--n-400)}button:active{transform:translateY(.5px)}button:focus-visible{box-shadow:var(--ring)}button[disabled],button:disabled{opacity:.5;cursor:not-allowed;transform:none}button.primary{background:var(--primary);color:var(--text-on-brand);border-color:var(--primary);box-shadow:var(--shadow-xs)}button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.danger{background:var(--surface);border-color:#fca5a5;color:var(--danger)}button.danger:hover{background:var(--danger-soft);border-color:var(--danger)}button.ghost{background:transparent;border-color:transparent;color:var(--text-muted)}button.ghost:hover{background:var(--n-100);color:var(--n-700)}button.icon-btn{padding:0;width:32px;min-height:32px;height:32px}button.sm{min-height:30px;padding:4px 10px;font-size:13px}:root[data-theme=dark] button{color:var(--text)}:root[data-theme=dark] button:hover{background:var(--surface-subtle)}:root[data-theme=dark] button.danger{color:var(--danger-ink);border-color:#f8717166}:root[data-theme=dark] button.ghost:hover{background:#94a3b824;color:var(--text)}.icon{display:inline-block;flex:none;vertical-align:-.15em}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:7px 11px;min-height:36px;transition:border-color var(--t-fast),box-shadow var(--t-fast)}input::placeholder,textarea::placeholder{color:var(--text-subtle)}input:hover,select:hover,textarea:hover{border-color:var(--n-400)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:var(--ring)}textarea{resize:vertical;min-height:84px;line-height:1.5}select{cursor:pointer}input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--primary);cursor:pointer}input[type=file]{border:none;padding:0;min-height:0}input[type=date]{min-width:150px}.field{display:flex;flex-direction:column;gap:5px}.field>label{font-size:13px;font-weight:600;color:var(--n-700)}:root[data-theme=dark] .field>label{color:var(--text)}.field .hint{font-size:12px;color:var(--text-muted)}.app-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.topnav{position:sticky;top:0;z-index:30;background:var(--topnav-bg);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border);padding:0 24px;height:58px;display:flex;align-items:center;gap:20px}.topnav .brand{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:15px;letter-spacing:-.02em;color:var(--text)}.topnav .brand .brand-mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;box-shadow:var(--shadow-sm)}.topnav .links{display:flex;align-items:center;gap:2px}.topnav .links a{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:14px;font-weight:500;transition:background var(--t-fast),color var(--t-fast)}.topnav .links a:hover{background:var(--n-100);color:var(--n-800);text-decoration:none}:root[data-theme=dark] .topnav .links a:hover{background:#94a3b824;color:var(--text)}.topnav .links a.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.topnav .spacer{flex:1}.topnav .user{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted)}.topnav .user .user-name{font-weight:600;color:var(--n-800)}:root[data-theme=dark] .topnav .user .user-name{color:var(--text)}.page{padding:28px 24px 56px;max-width:1160px;margin:0 auto;width:100%}.page-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:20px}.page-head .grow{flex:1;min-width:0}.page-head .subtitle{color:var(--text-muted);font-size:14px;margin-top:3px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.card>h2:first-child,.card>h3:first-child{margin-bottom:14px}.card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.card-head .grow{flex:1;min-width:0}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>*{flex-shrink:0}.row .grow{flex:1;min-width:0}.stack>*+*{margin-top:12px}.section-count{color:var(--text-subtle);font-weight:500;font-size:13px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table{width:100%;border-collapse:collapse;background:var(--surface)}.table-wrap table{border:none}th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--border);font-size:14px;vertical-align:top}thead th{position:sticky;top:0;background:var(--surface-subtle);font-weight:600;color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}tbody tr{transition:background var(--t-fast)}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-subtle)}tr.is-selected{background:var(--primary-soft)!important}td .cell-title{font-weight:600;color:var(--text)}td .cell-sub{color:var(--text-muted);font-size:13px;margin-top:2px}.num{font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-full);font-size:12px;font-weight:600;line-height:1.4;background:var(--n-100);color:var(--n-700);border:1px solid transparent;text-transform:capitalize}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}.badge.no-dot:before{display:none}.badge.pending{background:var(--info-soft);color:var(--info-ink)}.badge.submitted{background:var(--warning-soft);color:var(--warning-ink)}.badge.validated,.badge.active{background:var(--success-soft);color:var(--success-ink)}.badge.rejected,.badge.overdue{background:var(--danger-soft);color:var(--danger-ink)}.badge.paused{background:var(--warning-soft);color:var(--warning-ink)}.badge.low{background:var(--n-100);color:var(--n-600)}.badge.medium{background:var(--warning-soft);color:var(--warning-ink)}.badge.high{background:var(--danger-soft);color:var(--danger-ink)}.badge.critical{background:#fecaca;color:#7f1d1d}.badge.positive{background:var(--success-soft);color:var(--success-ink)}.badge.neutral{background:var(--n-100);color:var(--n-600)}.badge.negative{background:var(--danger-soft);color:var(--danger-ink)}.error{color:var(--danger);font-size:14px}.muted{color:var(--text-muted);font-size:13px}.notice{color:var(--text-muted);font-size:14px}.banner{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:var(--radius);font-size:14px;border:1px solid transparent}.banner.error{background:var(--danger-soft);color:var(--danger-ink);border-color:#fecaca}.banner.info{background:var(--info-soft);color:var(--info-ink);border-color:#bfdbfe}.banner.success{background:var(--success-soft);color:var(--success-ink);border-color:#bbf7d0}.banner .icon{margin-top:1px}.progress{width:100%;height:8px;background:var(--n-200);border-radius:var(--radius-full);overflow:hidden}:root[data-theme=dark] .progress{background:#1f2a3d}.progress>div{height:100%;background:linear-gradient(90deg,var(--brand-500),var(--brand-600));border-radius:inherit;transition:width .4s var(--ease)}.task-panel{background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin:4px 0}.task-panel .field{margin-bottom:12px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:backdrop-in .16s var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-lg);padding:22px;width:480px;max-width:100%;max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);animation:modal-in .18s var(--ease)}.modal.wide{width:820px}.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}.modal-head h3{flex:1;margin:0;font-size:17px}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tabs{display:flex;gap:2px;padding:4px;background:var(--n-100);border-radius:var(--radius);margin-bottom:20px;overflow-x:auto}:root[data-theme=dark] .tabs{background:#94a3b81a}.tabs button{background:transparent;border:none;border-radius:var(--radius-sm);padding:7px 14px;min-height:34px;color:var(--text-muted);font-weight:500;flex:none}.tabs button:hover{background:#fff9;color:var(--n-800)}.tabs button.active{background:var(--surface);color:var(--primary);font-weight:600;box-shadow:var(--shadow-xs)}.tree-node{border-left:2px solid var(--border);padding-left:14px;margin-left:4px;margin-top:10px}.tree-node>.tree-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tree-node>.tree-head .tree-toggle{flex:none;padding:2px;color:var(--text-subtle);background:transparent;border-color:transparent}.tree-node>.tree-head .tree-toggle:hover{color:var(--text);background:var(--n-100)}:root[data-theme=dark] .tree-node>.tree-head .tree-toggle:hover{background:#94a3b824}.tree-node>.tree-head .name{font-weight:600}.tree-node>.tree-head .type{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle);background:var(--n-100);border-radius:var(--radius-full);padding:1px 8px}:root[data-theme=dark] .tree-node>.tree-head .type{background:#94a3b824}.tree-node>.tree-children{margin-top:4px}.response-view{margin-top:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:13px;width:100%}.response-view .response-title{font-weight:600;margin-bottom:4px}.response-view .response-list{list-style:none;margin:0;padding:0}.response-view .response-list li{margin:2px 0}.editor-split{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}.editor-split>.editor-settings{flex:1 1 320px;min-width:260px}.editor-split>.editor-content{flex:1 1 340px;min-width:260px;border-left:1px solid var(--border);padding-left:16px}@media (max-width: 640px){.editor-split>.editor-content{border-left:none;padding-left:0;border-top:1px solid var(--border);padding-top:12px}}.editor-split>.editor-content>.tree-node{margin:0;border-left:none;padding-left:0}.content-body{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);line-height:1.55}.content-body>:first-child{margin-top:0}.content-body>:last-child{margin-bottom:0}.content-body img{max-width:100%;height:auto}.content-body a{color:var(--primary)}.content-body ul,.content-body ol{padding-left:20px}.tree-node ul.muted{margin:6px 0;padding-left:18px}.tree-node ul.muted li{margin:3px 0}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:36px 20px;color:var(--text-muted)}.empty .empty-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-full);background:var(--n-100);color:var(--text-subtle)}:root[data-theme=dark] .empty .empty-icon{background:#94a3b824}.empty .empty-title{font-weight:600;color:var(--n-700);font-size:15px}:root[data-theme=dark] .empty .empty-title{color:var(--text)}.skeleton{background:linear-gradient(90deg,var(--n-100) 25%,var(--n-200) 37%,var(--n-100) 63%);background-size:400% 100%;border-radius:var(--radius-sm);animation:shimmer 1.3s ease-in-out infinite}.skeleton.line{height:12px;margin:8px 0}.skeleton.line.short{width:40%}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.center-screen .card{width:420px;max-width:100%;margin:0;text-align:center}.center-screen .card .brand-mark{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;margin:0 auto 14px;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;box-shadow:var(--shadow-md)}.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.text-center{text-align:center}@media (pointer: coarse){button{min-height:40px}button.sm{min-height:36px}button.icon-btn{width:38px;height:38px;min-height:38px}input,select,textarea{min-height:40px}.tabs button{min-height:38px}}@media (max-width: 900px){.page{padding:24px 20px 48px}.topnav{padding:0 16px;gap:14px}}@media (max-width: 640px){body{overflow-x:clip}input,select,textarea{font-size:16px;max-width:100%}.hide-sm{display:none!important}.topnav{flex-wrap:wrap;height:auto;min-height:54px;padding:8px 14px;gap:8px 10px;row-gap:6px}.topnav .spacer{display:none}.topnav .user{margin-left:auto}.topnav .user .user-meta{display:none}.topnav .links{order:3;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.topnav .links::-webkit-scrollbar{display:none}.topnav .links a{white-space:nowrap}.page{padding:18px 14px 48px}.card{padding:16px;border-radius:var(--radius)}h1{font-size:21px}.tabs{gap:2px}.viewas-banner{padding:8px 14px;flex-wrap:wrap}.card-head select{flex:1 1 40%}.card-head input{flex:1 1 100%;max-width:100%!important}th,td{padding:9px 10px;font-size:13px}table.stack-sm thead{display:none}table.stack-sm,table.stack-sm tbody,table.stack-sm tr,table.stack-sm td{display:block;width:100%}table.stack-sm tr{padding:10px 2px;border-bottom:1px solid var(--border)}table.stack-sm tr:last-child{border-bottom:none}table.stack-sm td{border:none;padding:3px 0;max-width:none!important}table.stack-sm td:empty{display:none}table.stack-sm td[data-th]:before{content:attr(data-th);display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle);margin-bottom:1px}table.stack-sm tbody tr:hover{background:transparent}.stat-row{display:grid;grid-template-columns:1fr 1fr}.stat-tile{min-width:0}.stat-row .report-cta{grid-column:1 / -1}.modal-backdrop{padding:0;align-items:flex-end}.modal,.modal.wide{width:100%;max-height:94dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));animation:sheet-in .2s var(--ease)}.action-item{flex-wrap:wrap}.task-panel{padding:12px}.tree-node{padding-left:10px}.gantt-wrap{padding:8px 10px}}@keyframes sheet-in{0%{opacity:.5;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.gantt-wrap{border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;margin-bottom:14px;background:var(--surface-subtle)}.gantt-wrap>summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--text-muted);list-style:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gantt-wrap>summary::-webkit-details-marker{display:none}.gantt-wrap>summary:before{content:"▸"}.gantt-wrap[open]>summary:before{content:"▾"}.sig-canvas-wrap{position:relative;display:block;margin-top:8px;width:700px;max-width:100%}.sig-canvas{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);touch-action:none;cursor:crosshair;display:block;width:100%;height:auto}.sig-clear{position:absolute;top:6px;right:6px}.sig-image{max-width:320px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);display:block;margin-bottom:4px}.sig-name-readonly{font-weight:600}.req{color:var(--warning-ink)}.lesson-signoff>.tree-head .type{color:var(--warning-ink)}.lesson-handover>.tree-head .type{color:var(--info-ink)}.stat-row{display:flex;flex-wrap:wrap;gap:12px}.stat-tile{flex:1 1 120px;min-width:100px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-subtle)}.stat-value{font-size:26px;font-weight:700;line-height:1.1;color:var(--primary)}.stat-value.danger{color:var(--danger)}.stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}.report-cta{flex:1 1 240px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:18px 20px;text-align:left;white-space:normal;font:inherit;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.report-cta:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);background:var(--surface)}.report-cta:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.report-cta:focus-visible{box-shadow:var(--ring)}.report-cta .report-cta-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-full)}.report-cta-title{font-weight:600;font-size:15px;color:var(--text)}.report-cta-go{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:13px;font-weight:600}.report-cta-go .icon{transition:transform .12s ease}.report-cta:hover .report-cta-go .icon{transform:translate(3px)}.report-cta.feedback .report-cta-icon{background:var(--primary-soft);color:var(--primary)}.report-cta.feedback .report-cta-go{color:var(--primary)}.report-cta.feedback:hover{border-color:var(--primary)}.report-cta.incident{border-color:var(--danger-soft)}.report-cta.incident .report-cta-icon{background:var(--danger-soft);color:var(--danger)}.report-cta.incident .report-cta-go{color:var(--danger)}.report-cta.incident:hover{border-color:var(--danger)}:root[data-theme=dark] .report-cta.incident .report-cta-icon{color:var(--danger-ink)}:root[data-theme=dark] .report-cta.incident .report-cta-go{color:var(--danger-ink)}.queue-item{padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-subtle)}tr.row-click{cursor:pointer}tr.row-click:hover td{background:var(--primary-soft)}tr.row-click:focus-visible td{background:var(--primary-soft)}.viewas-control{display:inline-flex;align-items:center;gap:6px}.viewas-control select{padding:4px 26px 4px 8px;font-size:13px;min-height:0}.viewas-banner{display:flex;align-items:center;gap:8px;padding:8px 20px;background:var(--warning-soft);color:var(--warning-ink);font-size:13px;border-bottom:1px solid var(--border)}.viewas-banner .ghost{margin-left:auto;color:inherit}.ref-code{font-family:var(--font-mono);font-size:12px;padding:2px 6px;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary);white-space:nowrap}.tree-head.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.tree-head.clickable:hover .name{color:var(--primary)}.action-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.action-item{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease)}.action-item .action-name,.action-item .action-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-right{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto;white-space:nowrap}.action-item:hover:not(:disabled):not(.is-static){border-color:var(--primary);background:var(--primary-soft)}.action-item:disabled{cursor:default;opacity:.65}.action-item.is-static{cursor:default}.day-group{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;background:var(--surface-subtle)}.day-head{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.day-head:hover strong{color:var(--primary)}.action-item .action-name{display:block;font-weight:600;font-size:14px}.action-item .action-sub{display:block;font-size:12px;color:var(--text-muted);margin-top:1px}.action-ico{flex-shrink:0;color:var(--text-muted)}.action-ico.validated{color:var(--success)}.action-ico.rejected,.action-ico.overdue{color:var(--danger)}.action-ico.submitted{color:var(--primary)}.user-meta{border:none;background:none}.user-meta:hover .user-name{color:var(--primary);text-decoration:underline}.profile-avatar{width:46px;height:46px;border-radius:var(--radius-full);background:var(--primary-soft);color:var(--primary);font-weight:700;font-size:17px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.profile-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 16px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-subtle)}.profile-info-row{display:flex;flex-direction:column;gap:2px;min-width:0}.profile-info-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.profile-info-value{font-size:14px}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;align-items:start;margin-bottom:18px}.overview-grid>.card{margin-bottom:0;height:100%}.overview-hero{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.overview-hero .hero-meta{min-width:200px}.progress-ring{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none}.progress-ring .ring-track{stroke:var(--n-200)}:root[data-theme=dark] .progress-ring .ring-track{stroke:#1f2a3d}.progress-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.progress-ring-value{font-size:24px;font-weight:700;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums}.progress-ring-sub{font-size:11px;color:var(--text-muted);margin-top:1px;text-transform:uppercase;letter-spacing:.04em}.segbar-wrap{display:block}.segbar{display:flex;width:100%;height:12px;border-radius:var(--radius-full);overflow:hidden;background:var(--n-100)}:root[data-theme=dark] .segbar{background:#94a3b824}.segbar-seg{height:100%}.segbar-seg+.segbar-seg{box-shadow:inset 1px 0 0 var(--surface)}.segbar-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px;font-size:12px;color:var(--text-muted)}.segbar-legend-item{display:inline-flex;align-items:center;gap:5px}.segbar-legend-item .num{color:var(--text);font-weight:600;margin-left:2px}.segbar-dot{width:9px;height:9px;border-radius:3px;display:inline-block;flex:none}.seg-validated{background:var(--success)}.seg-submitted{background:var(--warning)}.seg-pending{background:var(--info)}.seg-overdue{background:var(--danger)}.seg-rejected{background:#b91c1c}.empty-seg{background:var(--n-200)}:root[data-theme=dark] .empty-seg{background:#94a3b833}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}th.sortable .th-inner{display:inline-flex;align-items:center;gap:4px}td strong.danger{color:var(--danger);font-variant-numeric:tabular-nums}.ss{position:relative}.ss-control{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:7px 11px;min-height:38px;font:inherit;color:var(--text);cursor:pointer}.ss-control:hover{border-color:var(--n-400)}.ss-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-placeholder{color:var(--text-subtle)}.ss.disabled .ss-control{opacity:.5;cursor:not-allowed}.ss-menu{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden}.ss-search{padding:8px;border-bottom:1px solid var(--border)}.ss-search input{width:100%}.ss-options{max-height:240px;overflow-y:auto}.ss-option{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:transparent;border:none;border-radius:0;padding:8px 12px;min-height:0;cursor:pointer}.ss-option:hover{background:var(--surface-subtle)}.ss-option.selected{background:var(--primary-soft)}.ss-option-label{font-size:14px;color:var(--text)}.ss-option-sub{font-size:12px;color:var(--text-muted)}.ss-empty{padding:14px 12px;color:var(--text-muted);font-size:13px;text-align:center}.gantt{--g-surface: #ffffff;--g-surface-alt: #fafafa;--g-group: #f9fafb;--g-border: #e5e7eb;--g-grid: #f1f5f9;--g-weekend: #f8fafc;--g-text: #111827;--g-muted: #6b7280;--g-dep: #9ca3af;--g-today: #ef4444;--g-tooltip-shadow: rgba(15, 23, 42, .2);display:flex;border:1px solid var(--g-border);border-radius:8px;overflow:hidden;background:var(--g-surface);font-size:13px;color:var(--g-text)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .gantt{--g-surface: #1a2332;--g-surface-alt: #151d29;--g-group: #151d29;--g-border: #2b3a48;--g-grid: #223042;--g-weekend: rgba(148, 163, 184, .06);--g-text: #f1faee;--g-muted: #9dc0c2;--g-dep: #6d8a8c;--g-today: #f87171;--g-tooltip-shadow: rgba(0, 0, 0, .6)}}:root[data-theme=dark] .gantt{--g-surface: #1a2332;--g-surface-alt: #151d29;--g-group: #151d29;--g-border: #2b3a48;--g-grid: #223042;--g-weekend: rgba(148, 163, 184, .06);--g-text: #f1faee;--g-muted: #9dc0c2;--g-dep: #6d8a8c;--g-today: #f87171;--g-tooltip-shadow: rgba(0, 0, 0, .6)}.gantt-empty{display:flex;align-items:center;justify-content:center;min-height:160px;color:var(--g-muted);font-size:14px}.gantt-left{flex:none;border-right:1px solid var(--g-border);background:var(--g-surface);z-index:2}.gantt-left-head{display:flex;align-items:center;padding:0 16px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--g-muted);background:var(--g-surface-alt);border-bottom:1px solid var(--g-border)}.gantt-left-group{display:flex;align-items:center;padding:0 16px;font-size:12px;font-weight:600;color:var(--g-muted);background:var(--g-group);border-bottom:1px solid var(--g-border)}.gantt-left-task{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:0 16px;border-bottom:1px solid var(--g-border);overflow:hidden}.gantt-left-name{font-size:13px;font-weight:500;color:var(--g-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-left-sub{font-size:11px;color:var(--g-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-right{flex:1 1 auto;overflow-x:auto;overflow-y:hidden}.gantt-canvas{position:relative}.gantt-timescale{position:relative;background:var(--g-surface-alt);border-bottom:1px solid var(--g-border)}.gantt-months{display:flex;height:24px}.gantt-month{flex:none;display:flex;align-items:center;padding-left:8px;font-size:11px;font-weight:600;color:var(--g-muted);border-right:1px solid var(--g-border);border-bottom:1px solid var(--g-grid);white-space:nowrap;overflow:hidden}.gantt-days{display:flex;height:28px}.gantt-day{flex:none;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--g-muted);border-right:1px solid var(--g-grid)}.gantt-day.weekend{background:var(--g-weekend)}.gantt-today-pill{position:absolute;bottom:4px;transform:translate(-50%);background:var(--g-today);color:#fff;font-size:10px;font-weight:600;line-height:1;padding:3px 6px;border-radius:999px;white-space:nowrap;pointer-events:none}.gantt-body{position:relative}.gantt-grid{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;z-index:0}.gantt-col{flex:none;height:100%;border-right:1px solid var(--g-grid)}.gantt-col.weekend{background:var(--g-weekend)}.gantt-rows{position:relative;z-index:1}.gantt-row-group{background:var(--g-group);border-bottom:1px solid var(--g-border)}.gantt-row-task{position:relative;border-bottom:1px solid var(--g-border)}.gantt-bar{position:absolute;border-radius:6px;overflow:hidden;transition:box-shadow .12s ease,transform .12s ease}.gantt-bar:hover{transform:translateY(-1px);box-shadow:0 4px 10px -2px #0f172a40;z-index:3}.gantt-bar-progress{position:absolute;left:0;top:0;bottom:0;border-radius:6px 0 0 6px}.gantt-occ-box{position:absolute;top:4px;bottom:4px;border-radius:2px;background:#ffffff38;box-shadow:inset 0 0 0 1px #fff6;pointer-events:none}.gantt-bar-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;z-index:1}.gantt-deps{position:absolute;top:0;left:0;z-index:2;pointer-events:none;color:var(--g-dep)}.gantt-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--g-today);z-index:4;pointer-events:none}.gantt-tooltip{position:absolute;z-index:6;min-width:160px;max-width:220px;background:var(--g-surface);border:1px solid var(--g-border);border-radius:6px;box-shadow:0 6px 16px -4px var(--g-tooltip-shadow);padding:8px 10px;pointer-events:none}.gantt-tt-name{font-size:12px;font-weight:600;color:var(--g-text);margin-bottom:2px}.gantt-tt-row{font-size:11px;color:var(--g-muted);line-height:1.5}@media (prefers-reduced-motion: reduce){.gantt-bar{transition:none}}.gantt-legend{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-left:auto}.gl-item{display:inline-flex;align-items:center;gap:5px}.gl-label{font-size:11px;font-weight:500;color:var(--text-muted)}.gl-swatch{flex:none;width:16px;height:11px;border-radius:3px;display:inline-block}.gl-gradient{background:linear-gradient(90deg,#3b82f659,#1d4ed8)}.gl-dot{width:11px;height:11px;border-radius:999px}.gl-trainee{background:#3b82f6}.gl-supervisor{background:#f59e0b}.gl-occ{background:#3b82f626;box-shadow:inset 0 0 0 1px #3b82f68c}
