@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-looped-thai-400-normal-SpmhhrGh.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-thai-400-normal-DGalgPVe.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-looped-latin-ext-400-normal-DjM6UMG_.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-ext-400-normal-BWIL61rc.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-looped-latin-400-normal-DJo3FHRv.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-400-normal-8zKgKEEK.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-looped-thai-500-normal-CcubINtZ.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-thai-500-normal-CN4k49hU.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-looped-latin-ext-500-normal-B_Hjx5fU.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-ext-500-normal-B_55-KeB.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-looped-latin-500-normal-Dd5TKoZy.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-500-normal-DeJUNXXh.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-looped-thai-600-normal-BGKMfTeY.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-thai-600-normal-DkJviN7K.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-looped-latin-ext-600-normal-B-_QCGdB.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-ext-600-normal-Cut5D3m-.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-looped-latin-600-normal-C4yuT2PC.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-600-normal-CJvRMOyL.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-looped-thai-700-normal-B8vLPqPj.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-thai-700-normal-CC0Uq543.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-looped-latin-ext-700-normal-VIxuB01l.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-ext-700-normal-CXy-7run.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai Looped;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-looped-latin-700-normal-6tR2W7Gd.woff2) format("woff2"),url(/assets/noto-sans-thai-looped-latin-700-normal-DkaibGiD.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Krona One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/krona-one-latin-ext-400-normal-Dxkupn2B.woff2) format("woff2"),url(/assets/krona-one-latin-ext-400-normal-CRTB3kuu.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Krona One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/krona-one-latin-400-normal-lxbkZ9Cr.woff2) format("woff2"),url(/assets/krona-one-latin-400-normal-Bq1MwVf6.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font:"Noto Sans Thai Looped","Noto Sans Thai",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--bg:#F8FAFC;--surface:#FFFFFF;--surface-2:#F9FAFB;--border:#E5E7EB;--border-strong:#9CA3AF;--text:#111827;--text-2:#374151;--muted:#6B7280;--navy:#111827;--navy-2:#1F2937;--primary:#B35500;--primary-hover:#8A4100;--primary-soft:#FFF3E5;--brand:#FF8200;--brand-hover:#FF9A33;--on-brand:#1F1300;--brand-border:#FFD3A3;--success:#15803D;--success-bg:#F0FDF4;--warning:#A16207;--warning-bg:#FEFCE8;--danger:#B91C1C;--danger-bg:#FEF2F2;--info:#1D4ED8;--info-bg:#EFF6FF;--ai:#6D28D9;--ai-bg:#F5F3FF;--radius:6px;--radius-lg:8px;--shadow:0 1px 2px rgba(17,24,39,.05);font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary);text-decoration:none;text-underline-offset:3px}a:hover{text-decoration:underline}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}.icon{flex-shrink:0;vertical-align:-3px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:11.5px}.grow{flex:1}.pad{padding:16px}.center{display:grid;place-items:center;padding:48px}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);height:100vh}.side{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:auto;min-height:0}.side .brand{height:64px;padding:0 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);flex:none}.side .brand img{height:22px;width:auto}.cm{font-family:Krona One,Noto Sans Thai Looped,sans-serif;font-size:11px;letter-spacing:.06em;background:var(--brand);color:var(--on-brand);padding:3px 7px;border-radius:4px;line-height:1.2;font-weight:600}.proj{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}.proj a{font-size:12px;color:var(--primary);font-weight:500;margin-top:6px}.side .nav{display:flex;flex-direction:column;gap:2px;padding:12px}.nav-section{font-size:11px;color:var(--muted);letter-spacing:.04em;margin:14px 12px 6px}.nav-item{display:flex;align-items:center;gap:10px;min-height:40px;padding:8px 12px;border-radius:var(--radius);color:var(--text-2)}.nav-item:hover{background:#f3f4f6;color:var(--text);text-decoration:none}.nav-item.active{background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.nav-label{flex:1}.nav-badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--warning-bg);color:var(--warning);font-size:12px;font-weight:600;display:grid;place-items:center}.sidebar-foot{margin-top:auto;padding:12px 20px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.main{display:flex;flex-direction:column;min-width:0;min-height:0}.top{min-height:64px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;flex:none}.crumb{display:flex;gap:8px;color:var(--muted);list-style:none;margin:0;padding:0;flex-wrap:wrap}.crumb li{min-width:0;overflow-wrap:anywhere}.crumb li+li:before{content:"/";margin-right:8px;color:#9ca3af}.crumb a{color:var(--muted)}.crumb [aria-current]{color:var(--text);font-weight:500}.top-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.view{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:4px;background:var(--navy);color:#fff;font-size:12px;font-weight:500}.ai-status{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;border:1px solid var(--border);font-size:12px;color:var(--text-2)}.ai-status .dot{width:7px;height:7px;border-radius:50%;background:#9ca3af}.ai-status.on .dot{background:var(--success)}.ai-status.off .dot{background:var(--warning)}.um{position:relative}.user{display:flex;align-items:center;gap:10px;background:none;border:0;cursor:pointer;padding:4px;border-radius:var(--radius);text-align:left}.user:hover{background:#f3f4f6}.av{width:32px;height:32px;border-radius:50%;background:#ffe4c7;color:var(--primary-hover);font-weight:600;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none}.umenu{position:absolute;right:0;top:calc(100% + 4px);min-width:220px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 8px 20px #1118271f;padding:4px;z-index:30;display:flex;flex-direction:column}.umenu button{background:none;border:0;text-align:left;padding:8px 12px;border-radius:var(--radius);cursor:pointer}.umenu button:hover{background:#f3f4f6}.version{color:var(--muted);font-size:11px;padding:4px 12px 8px}.content{overflow:auto;padding:24px 24px 32px;flex:1;min-height:0}.content>*{max-width:1480px;margin-left:auto;margin-right:auto}.eyebrow{font-size:12px;font-weight:600;color:var(--primary);letter-spacing:.04em}@media(max-width:820px){.shell{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:auto;min-height:100vh}.side{max-height:none}.side .nav{flex-direction:row;flex-wrap:wrap}.content{overflow:visible}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.page-head>div:first-child,.phead>div:first-child{min-width:0;overflow-wrap:anywhere}.page-head h1{font-size:24px;font-weight:700;line-height:1.3}.page-head p{margin:2px 0 0;color:var(--muted)}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);margin-bottom:16px;min-width:0}.panel-head{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 24px;border-bottom:1px solid var(--border)}.panel-head h3{font-size:14px;flex:1;min-width:0}.panel-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panel-body{padding:16px}.panel-body.flush{padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--radius);border:1px solid transparent;font-weight:500;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600}.btn-primary:not(:disabled):hover{background:var(--brand-hover);border-color:var(--brand-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-secondary:not(:disabled):hover{background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--primary)}.btn-ghost:not(:disabled):hover{background:var(--primary-soft)}.btn-danger{background:var(--surface);border-color:#e4b4b0;color:var(--danger)}.btn-danger:not(:disabled):hover{background:var(--danger-bg)}.icon-btn{display:inline-grid;place-items:center;width:28px;height:28px;border:0;border-radius:var(--radius);background:transparent;color:var(--muted);cursor:pointer}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.on-dark{color:#c9d6e5;border:1px solid #2c4a6e}.icon-btn.on-dark:hover{background:#1a3352;color:#fff}input,select,textarea{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:6px 10px;width:100%;min-height:32px}textarea{resize:vertical}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:1px}input[type=checkbox]{width:auto;min-height:0;accent-color:var(--primary)}.compact-select{width:auto;min-width:220px}.field{display:grid;gap:4px}.field-label{font-size:12px;font-weight:500;color:var(--text-2)}.field-hint{font-size:11.5px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .field:last-child{grid-column:1/-1}.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;border:1px solid var(--border)}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill-neutral{background:#f3f4f6;color:#374151}.pill-info{background:var(--info-bg);color:var(--info);border-color:#bfdbfe}.pill-success{background:var(--success-bg);color:var(--success);border-color:#bbf7d0}.pill-warning{background:var(--warning-bg);color:var(--warning);border-color:#fde68a}.pill-danger{background:var(--danger-bg);color:var(--danger);border-color:#fecaca}.pill-ai{background:var(--ai-bg);color:var(--ai);border-color:#ddd6fe}.tag{display:inline-block;font-size:12px;padding:1px 8px;border:1px solid var(--border);border-radius:4px;color:var(--text-2);background:#f3f4f6;font-weight:500}.tag-strong{border-color:#b9cde3;background:var(--primary-soft);color:var(--primary)}.tag-warn{border-color:#ecd39b;background:var(--warning-bg);color:var(--warning)}.origin{font-size:10.5px;font-weight:600;padding:0 5px;border-radius:3px;margin-left:4px}.origin-ai{background:var(--ai-bg);color:var(--ai)}.origin-manual{background:var(--info-bg);color:var(--info)}.notice{display:flex;gap:8px;align-items:flex-start;padding:8px 12px;border-radius:var(--radius);font-size:12.5px;margin:12px 0}.notice .icon{margin-top:2px}.notice.warning{background:var(--warning-bg);color:var(--warning)}.notice.danger{background:var(--danger-bg);color:var(--danger)}.notice.info{background:var(--info-bg);color:var(--info)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid #c5d3e2;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.empty{display:grid;justify-items:center;gap:6px;text-align:center;padding:40px 16px;color:var(--muted)}.empty-title{font-weight:600;color:var(--text);font-size:14px}.empty-body{display:grid;gap:12px;justify-items:center}.empty-body p{margin:0}.stepper{display:flex;list-style:none;margin:0;padding:0;gap:0}.step{flex:1;display:flex;align-items:flex-start;gap:8px;position:relative;padding-right:12px;min-width:0}.step:not(:last-child):after{content:"";position:absolute;top:11px;left:30px;right:8px;height:1px;background:var(--border-strong)}.step-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:600;border:1px solid var(--border-strong);background:var(--surface);color:var(--muted);position:relative;z-index:1;flex-shrink:0}.step-text{display:grid;background:var(--surface);position:relative;z-index:1;padding-right:8px;min-width:0}.step-label{font-weight:600;font-size:12.5px;white-space:nowrap}.step-detail{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-done .step-dot{background:var(--success);border-color:var(--success);color:#fff}.step-current .step-dot{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 0 0 3px var(--primary-soft)}.step-current .step-label{color:var(--primary)}.step-locked{opacity:.5}.step-error .step-dot{background:var(--danger);border-color:var(--danger);color:#fff}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{font-weight:500;color:var(--muted);text-align:left;background:var(--surface-2);height:40px;padding:0 16px;border-bottom:1px solid var(--border);white-space:nowrap;background:#f9fafb}.table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:top}.table tbody tr:last-child td{border-bottom:0}.table tfoot td{font-weight:600;background:var(--surface-2);border-top:1px solid var(--border-strong)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table tr.clickable,.table.selectable tbody tr{cursor:pointer}.table tr.clickable:hover td,.table.selectable tbody tr:hover td{background:var(--surface-2)}.table.selectable tr.active td{background:var(--primary-soft)}.table.selectable tr.active td:first-child{box-shadow:inset 3px 0 0 var(--primary)}.cell-sub{font-size:11.5px;color:var(--muted)}.table.kv td:first-child{color:var(--muted);width:30%}.flag-count{display:inline-flex;align-items:center;gap:2px;margin-left:6px;color:var(--warning);font-size:11.5px}.grid-2-1{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px}.next-step{display:flex;align-items:center;gap:16px;justify-content:space-between}.next-title{font-weight:600;font-size:15px}.kpis{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.kpis-3{grid-template-columns:repeat(3,1fr)}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 16px;box-shadow:var(--shadow)}.kpi-label{font-size:12px;color:var(--muted)}.kpi-value{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.kpi-unit{font-size:12px;font-weight:400;color:var(--muted);margin-left:4px}.kpi-hint{font-size:11.5px;color:var(--muted)}.master-detail{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}.master{position:sticky;top:0}.dropzone{margin:12px;padding:14px;border:1px dashed var(--border-strong);border-radius:var(--radius);display:grid;justify-items:center;gap:2px;text-align:center;color:var(--text-2);cursor:pointer;font-size:12.5px;background:var(--surface-2)}.dropzone .muted{font-size:11.5px}.dropzone.over,.dropzone:hover{border-color:var(--primary);background:var(--primary-soft)}.list{list-style:none;margin:0;padding:0 0 6px;max-height:calc(100vh - 290px);overflow:auto}.list-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:0;border-top:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}.list-item:hover{background:var(--surface-2)}.list-item.active{background:var(--primary-soft);box-shadow:inset 3px 0 0 var(--primary)}.list-main{flex:1;min-width:0;display:grid}.list-title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-sub{font-size:11.5px;color:var(--muted)}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.detail-head h2{font-size:16px}.meta{color:var(--muted);font-size:12px;margin-top:2px}.action-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.job-progress{display:flex;align-items:center;gap:8px;color:var(--info)}.tabs{display:flex;gap:2px;min-height:44px;align-items:stretch;flex-wrap:wrap}.tab{border:0;background:transparent;padding:0 16px;color:#4b5563;font-weight:500;cursor:pointer;border-bottom:2px solid transparent}.tab:hover{color:var(--text)}.tab.active{color:var(--primary);border-bottom-color:var(--brand);font-weight:600}.sheet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;padding:16px}.sheet{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.sheet.foundation{border-color:#b9cde3}.sheet.selected{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.sheet-thumb{display:block;width:100%;padding:0;border:0;border-bottom:1px solid var(--border);background:#fff;cursor:zoom-in}.sheet-check{display:flex;align-items:center;gap:6px;padding:6px 8px 0;font-weight:500;cursor:pointer}.sheet-meta{display:flex;flex-wrap:wrap;gap:4px;padding:4px 8px 8px;font-size:11.5px;min-height:28px}.pdf{display:block;width:100%;height:70vh;border:0}.lightbox-img{display:block;max-width:100%;max-height:72vh;margin:auto}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px}.segmented{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.seg{border:0;border-right:1px solid var(--border);background:transparent;height:30px;padding:0 12px;cursor:pointer;color:var(--text-2);display:flex;align-items:center;gap:6px}.seg:last-child{border-right:0}.seg:hover{background:var(--surface-2)}.seg.active{background:var(--primary);color:#fff}.seg-count{font-size:11px;padding:0 6px;border-radius:9px;background:#00000012}.seg.active .seg-count{background:#fff3}.split{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(0,1.6fr);gap:16px;align-items:start}.split.wide-left{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}.queue{max-height:calc(100vh - 210px);overflow:auto}.decision-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px}.flags{list-style:none;padding:0;margin:12px 0;display:grid;gap:4px}.flags li{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--warning)}.flags li.severe{color:var(--danger)}.flags code{margin-left:auto;font-size:10.5px;color:var(--muted)}.note{font-size:12px;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;margin:12px 0;white-space:pre-wrap}.decision-box{display:grid;gap:10px;border-top:1px solid var(--border);padding-top:12px;margin-top:12px}.decision-box .notice{margin:0}.decision-actions{display:flex;justify-content:flex-end;gap:8px}.evidence{margin:0}.evidence-frame{position:relative;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff}.evidence-frame img{display:block;width:100%}.evidence figcaption{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);margin-top:6px}.evidence figcaption a{margin-left:auto}.evidence-missing{display:grid;place-items:center;min-height:200px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted)}.bbox{position:absolute;border:2px solid #d9412b;background:#d9412b1f}.bbox.occurrence{border-color:var(--ai);background:#5a3ec01f}.key{display:inline-block;width:10px;height:10px;border:2px solid #d9412b}.key.occurrence{border-color:var(--ai)}.viewer{height:calc(100vh - 190px);min-height:420px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f223873;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--surface);border-radius:var(--radius-lg);width:min(560px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 20px 50px #0f223840}.modal.wide{width:min(1200px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 12px 0 16px;border-bottom:1px solid var(--border)}.modal-head h3{font-size:14px}.modal-body{padding:16px;overflow:auto}.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border);font-size:12px}.toasts{position:fixed;right:16px;top:60px;display:grid;gap:8px;z-index:60;max-width:420px}.toast{display:flex;align-items:flex-start;gap:8px;padding:10px 8px 10px 12px;border-radius:var(--radius);background:var(--navy);color:#eef3f8;box-shadow:0 8px 24px #0f223840;font-size:12.5px}.toast span{flex:1;padding-top:1px}.toast .icon-btn{color:#a8bbd0;width:22px;height:22px}.toast-success .icon{color:#4cc38a}.toast-danger{background:#5c1a16}.toast-danger .icon{color:#ff9b91}@media(max-width:1100px){.master-detail,.split,.split.wide-left,.grid-2-1,.decision-grid{grid-template-columns:minmax(0,1fr)}.master{position:static}.queue{max-height:none}.project-switch select{min-width:160px}.stepper{flex-wrap:wrap;row-gap:12px}.step{flex:1 1 45%}.step:after{display:none}}.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn.danger-text{color:var(--danger)}.btn.danger-text:not(:disabled):hover{background:var(--danger-bg)}.btn-danger.solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger.solid:not(:disabled):hover{background:#97201a}.confirm-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-weight:500;cursor:pointer}.modal-body p{margin:0 0 12px}.disc-num{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:600;background:var(--primary-soft);color:var(--primary);flex-shrink:0}.disc-num.muted-num{background:#eef1f4;color:var(--muted)}.sheet-group+.sheet-group{border-top:1px solid var(--border)}.sheet-group-head{display:flex;align-items:center;gap:6px;padding:12px 16px 0;font-weight:500}.sheet-group .sheet-grid{padding-top:10px}.action-bar.flat{margin-top:0;padding-top:0;border-top:0}.sheet-section-head{display:flex;align-items:center;gap:8px;padding:12px 16px 0;font-weight:600}.sheet-section-head .link{border:0;background:none;color:var(--primary);cursor:pointer;font-size:12px;padding:0}.disc-num.inline{display:inline-grid;width:20px;height:20px;margin-right:6px;vertical-align:middle}:root{--d-structural:#1f4e79;--d-architectural:#8a5a2b;--d-electrical:#a67c00;--d-sanitary:#1b7a8c;--d-mechanical:#5a3ec0;--d-fire_protection:#b3261e;--d-external_works:#3c7a2a;--d-none:#8a97a6}.d-structural{--dc:var(--d-structural)}.d-architectural{--dc:var(--d-architectural)}.d-electrical{--dc:var(--d-electrical)}.d-sanitary{--dc:var(--d-sanitary)}.d-mechanical{--dc:var(--d-mechanical)}.d-fire_protection{--dc:var(--d-fire_protection)}.d-external_works{--dc:var(--d-external_works)}.d-none{--dc:var(--d-none)}.dot{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--dc);color:#fff;font-size:10.5px;font-weight:600;flex-shrink:0}.disc-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-2)}.disc-tab{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-2);cursor:pointer;white-space:nowrap;font-weight:500;transition:background .15s,border-color .15s}.disc-tab:hover{border-color:var(--border-strong)}.disc-tab.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.disc-tab.drop{border-style:dashed;border-color:var(--primary);background:#dfeaf6;transform:translateY(-1px)}.disc-tab.flash{animation:flash 1.2s ease}@keyframes flash{0%,to{box-shadow:none}30%{box-shadow:0 0 0 3px #9cc3e8}}.tab-count{font-size:11px;min-width:20px;padding:0 6px;border-radius:9px;background:#eef1f4;color:var(--muted);text-align:center}.disc-tab.active .tab-count{background:var(--primary);color:#fff}.board-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border)}.board-toolbar .hint{margin-left:auto}.range-box{display:flex;align-items:center;gap:6px}.range-box input{width:150px;min-height:30px;padding:4px 8px}.range-box .btn{margin:0;height:30px}.link{border:0;background:none;color:var(--primary);cursor:pointer;font-size:12.5px;padding:0;font-weight:500}.link:disabled{color:var(--muted);cursor:not-allowed}.board-empty{padding:40px 16px;text-align:center}.board-section+.board-section{border-top:1px solid var(--border)}.sheet.card-select{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.sheet.card-select:hover{border-color:var(--border-strong)}.sheet.card-select.selected{border-color:var(--primary);box-shadow:0 0 0 2px #c9dbee}.sheet .stripe{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--dc);z-index:1}.sheet-thumb{position:relative;display:block;border-bottom:1px solid var(--border);background:#fff}.sheet-thumb img{display:block;width:100%;aspect-ratio:1.414;object-fit:contain}.zoom-btn{position:absolute;top:6px;right:6px;width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius);background:#ffffffeb;color:var(--text-2);cursor:zoom-in;opacity:0;transition:opacity .15s}.sheet:hover .zoom-btn,.zoom-btn:focus-visible{opacity:1}.check-badge{position:absolute;top:6px;left:10px;width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center}.sheet-caption{display:flex;align-items:center;gap:6px;padding:6px 8px 0 12px}.sheet .sheet-meta{padding-left:12px}.disc-tag{border-color:var(--dc);color:var(--dc)}.move-bar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:10px 16px;background:var(--navy);color:#e6edf5;border-radius:0 0 var(--radius-lg) var(--radius-lg);box-shadow:0 -6px 18px #0f22382e}.move-count{font-weight:600;margin-right:6px}.move-bar .muted{color:#9fb3c8}.move-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px 0 6px;border:1px solid #34506f;border-radius:var(--radius);background:#16304d;color:#fff;cursor:pointer;white-space:nowrap}.move-btn:not(:disabled):hover{background:#1f3e62;border-color:#5a7ba0}.move-btn:disabled{opacity:.4;cursor:not-allowed}.move-bar .sep{width:1px;height:20px;background:#34506f;margin:0 4px}.move-bar .btn-ghost{color:#cfe0f2}.move-bar .btn-ghost:not(:disabled):hover{background:#1f3e62}.toast-action{border:1px solid #5a7ba0;background:transparent;color:#fff;border-radius:var(--radius);padding:2px 10px;cursor:pointer;font-weight:500;white-space:nowrap}.toast-action:hover{background:#1f3e62}.disc-info{padding:12px 16px;border-bottom:1px solid var(--border);display:grid;gap:10px}.disc-info p,.disc-info .notice{margin:0}.disc-info-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.dot.lg{width:28px;height:28px;font-size:13px}.table.compact td,.table.compact th{padding:5px 10px;height:auto}.extract-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.extract-bar .btn{margin:0}.toolbar-row{display:flex;align-items:center;gap:12px;justify-content:space-between}.cat-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 12px}.notice.pad-x{margin:12px 16px 0}.review-split{grid-template-columns:minmax(360px,.8fr) minmax(0,2fr)}.decision-grid{grid-template-columns:minmax(260px,.8fr) minmax(0,1.4fr)}.cell-input{width:110px;min-height:28px;padding:2px 6px;text-align:right}.flag-count.danger{color:var(--danger)}.evidence-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.ev{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:4px 8px;cursor:pointer;font-size:12px}.ev:hover{border-color:var(--border-strong)}.ev.active{border-color:var(--primary);background:var(--primary-soft)}.ev-text{color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdfv{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff}.pdfv-bar{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:1px solid var(--border);background:var(--surface-2)}.pdfv-scroll{position:relative;overflow:auto;background:#e9edf2}.pdfv-page{position:relative;margin:0 auto;background:#fff;box-shadow:0 1px 4px #0000001f}.pdfv-page canvas{display:block}.pdfv-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:2}.bbox.active{border-width:3px;box-shadow:0 0 0 3px #d9412b40}.extract-group{display:grid;gap:8px}.type-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.tag-ok{border-color:#b8dcc8;background:var(--success-bg);color:var(--success)}.tag-info{border-color:#b9cde3;background:var(--info-bg);color:var(--info)}.tag-danger{border-color:#efc2bf;background:var(--danger-bg);color:var(--danger)}.tag-planned{color:var(--muted);border-style:dashed}.kpis-4{grid-template-columns:repeat(4,1fr)}.trace-row td{background:var(--surface-2);line-height:1.7}.sd-editor{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}.sd-chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:2px 10px;font-size:12px;cursor:pointer;color:var(--text-2)}.sd-chip.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);font-weight:500}.sd-editor .btn{margin:0;height:28px}.decision-grid>*{min-width:0}.decision-actions{flex-wrap:wrap}.decision-actions .btn{margin:0}.review-split .queue .table td:nth-child(2){white-space:nowrap}.queue .pill{white-space:normal;height:auto;min-height:20px;line-height:1.3;padding:2px 8px}.sheet-meta-editor{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.sheet-meta-editor label{display:flex;align-items:center;gap:6px}.sheet-meta-editor select{height:28px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:0 6px}.inline-check{gap:4px!important;font-size:12.5px}.level-chips{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.grid-page{display:flex;flex-direction:column;gap:8px}.grid-page .notice{margin:0}.gtop{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.gtop label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--muted)}.gtop select{height:30px;min-width:120px;max-width:280px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:0 6px;color:var(--text)}.gtop-rev{font-size:12px;color:var(--text-2);padding-bottom:6px}.gtop-more{display:flex;gap:2px;padding-bottom:2px}.gtop-more .icon-btn.on{background:var(--primary-soft);color:var(--primary)}.gtop-more a.disabled{pointer-events:none;opacity:.4}.geditor{display:grid;grid-template-columns:52px minmax(0,1fr) 320px;height:calc(100vh - 250px);min-height:520px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.gtoolbar{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;border-right:1px solid var(--border);background:var(--surface-2);overflow:auto}.gtool{position:relative;width:38px;height:38px;display:grid;place-items:center;border:1px solid transparent;border-radius:var(--radius);background:none;color:var(--text-2);cursor:pointer}.gtool:hover:not(:disabled){background:#fff;border-color:var(--border)}.gtool.active{background:var(--primary);color:#fff}.gtool:disabled{opacity:.35;cursor:default}.gtool-key{position:absolute;right:2px;bottom:0;font-size:8.5px;opacity:.6}.gtool-sep{width:28px;height:1px;background:var(--border);margin:4px 0}.gtool-sub{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:var(--muted)}.gtool-sub button{width:30px;height:22px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-weight:700}.gtool-sub button.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.gtool-sub input{width:44px;height:22px;padding:0 2px;font-size:11px;border:1px solid var(--border);border-radius:4px;text-align:center;-moz-appearance:textfield}.gtool-sub input::-webkit-inner-spin-button,.gtool-sub input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.gcenter{display:flex;flex-direction:column;min-width:0;min-height:0}.ghint{padding:4px 10px;border-bottom:1px solid var(--border);background:var(--surface-2);color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gridc{position:relative;flex:1;overflow:hidden;background:#dfe5ec;touch-action:none;-webkit-user-select:none;user-select:none}.gridc-stage{position:absolute;left:0;top:0;transform-origin:0 0;background:#fff;box-shadow:0 1px 6px #0000002e}.gridc-stage canvas{display:block;position:absolute;left:0;top:0}.gridc-svg{position:absolute;left:0;top:0;overflow:visible}.gridc-msg{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:3;pointer-events:none}.gridc-msg.danger{color:var(--danger)}.gridc-zoom{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:4px;padding:3px 6px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.gridc-svg .gl line{stroke:#d1453b;stroke-width:1.2;stroke-dasharray:8 3 2 3}.gridc-svg .gl circle{fill:#fff;stroke:#d1453b;stroke-width:1.2}.gridc-svg .gl text{fill:#a1271f;font-weight:600;font-family:var(--font)}.gridc-svg .gl.ai line,.gridc-svg .gl.ai circle{stroke:var(--ai)}.gridc-svg .gl.verified line,.gridc-svg .gl.verified circle{stroke:var(--success)}.gridc-svg .gl.verified text{fill:var(--success)}.gridc-svg .gl.locked line{stroke-dasharray:2 3}.gridc-svg .gl.hover line{stroke-width:2}.gridc-svg .gl.sel line{stroke:#f08c00;stroke-width:2.4;stroke-dasharray:none}.gridc-svg .gl.sel circle{stroke:#f08c00;fill:#fff4e0;stroke-width:2}.gridc-svg .gl.sel text{fill:#a35d00}.gridc-svg .gi{fill:#d1453b;opacity:.8}.gridc-svg .ghost{stroke:var(--primary);stroke-width:1;stroke-dasharray:4 4}.gridc-svg .snap-mark{fill:none;stroke:#0b8a6a;stroke-width:1.5}.gridc-svg .pick{fill:#0b8a6a;stroke:#fff;stroke-width:1}.gridc-svg .measure{stroke:#0b8a6a;stroke-width:1.6}.gridc-svg .measure.preview{stroke-dasharray:4 3}.gridc-svg .gd line{stroke:#1f5fa8;stroke-width:1}.gridc-svg .gd text{fill:#1f5fa8;font-weight:600;font-family:var(--font);paint-order:stroke;stroke:#fff;stroke-width:3px}.gridc-svg .gd.total line{stroke-width:1.4}.gridc-svg .gd .lbl{fill:#fff;stroke:#9db7d6;stroke-width:1}.gridc-svg .gd.editable>g{cursor:pointer}.gridc-svg .gd.editable>g:hover .lbl{stroke:#1f5fa8;stroke-width:1.6;fill:#eef4fb}.gridc-svg .gd.scaled .lbl{stroke:#c3cad2}.gridc-svg .gd.unknown .lbl{stroke:#e8b46a;fill:#fff8ec}.gridc-svg .gd.scaled line{stroke:#7b8794;stroke-dasharray:3 2}.gridc-svg .gd.scaled text{fill:#5b6672;font-weight:500;font-style:italic}.gridc-svg .gd.unknown line{stroke:#d97706;stroke-dasharray:3 2}.gridc-svg .gd.unknown text{fill:#b45309}.gridc-svg .gd.prop line{stroke:var(--ai)}.gridc-svg .gd.prop text{fill:var(--ai)}.gridc-svg .gd.prop.bad line{stroke:#b91c1c;stroke-dasharray:2 2}.gridc-svg .gd.prop.bad text{fill:#b91c1c;text-decoration:line-through}.gridc-svg .measure-label{fill:#065c47;font-weight:600;paint-order:stroke;stroke:#fff;stroke-width:3px;font-family:var(--font)}.gside{display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--border)}.gside .tabs{padding:0 8px;flex-shrink:0}.gside-body{flex:1;overflow:auto;padding:10px 12px}.gbadge{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:9px;background:var(--warning-bg);color:var(--warning);font-size:11px}.gbadge.err{background:var(--danger-bg);color:var(--danger)}.gprops{display:grid;grid-template-columns:110px 1fr;gap:6px 10px;margin:0;font-size:12.5px}.gprops dt{color:var(--muted)}.gprops dd{margin:0;min-width:0}.gprops input,.gprops textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius);padding:3px 6px}.gprops input[aria-invalid=true]{border-color:var(--danger)}.gprops-toggles{display:flex;gap:12px}.gprops-actions{display:flex;flex-wrap:wrap;gap:6px}div.gprops{display:block}.field-error{display:block;color:var(--danger);font-size:11.5px}.glist-head{font-weight:600;margin:6px 0 4px;font-size:12px}.table.compact td,.table.compact th{padding:3px 6px;font-size:12px}.table tr.selected td{background:#fff4e0}.glist-flags{white-space:nowrap;text-align:right}.glist-flags .icon-btn{width:22px;height:22px;font-size:12px}.gissues{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.gissues li{padding:6px 8px;border-radius:var(--radius);font-size:12.5px}.gissues li.err{background:var(--danger-bg);color:var(--danger)}.gissues li.warn{background:var(--warning-bg);color:var(--warning)}.gissue-sev{font-weight:600;margin-right:6px}.gstatus{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:6px 12px;font-size:12px;color:var(--text-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.gstatus .pill{margin-right:4px}.gs-err{color:var(--danger)}.ghistory{margin:6px 0;padding-left:18px;font-size:12.5px;max-height:240px;overflow:auto}@media(max-width:1100px){.geditor{grid-template-columns:48px minmax(0,1fr);height:auto}.gside{grid-column:1/-1;border-left:0;border-top:1px solid var(--border);max-height:360px}.gridc{min-height:480px}}.gridc-svg .gp line{stroke:var(--ai);stroke-width:1.6;stroke-dasharray:3 3;opacity:.85}.gridc-svg .gp rect{fill:var(--ai-bg);stroke:var(--ai);stroke-width:1}.gridc-svg .gp text{fill:var(--ai);font-weight:700;font-family:var(--font)}.gridc-svg .gp.focus line{stroke-width:3;opacity:1;stroke-dasharray:none}.gbadge.ai{background:var(--ai-bg);color:var(--ai)}.gempty-actions{display:inline-flex;gap:8px}.gdetect,.gdetect-empty{display:flex;flex-direction:column;gap:8px}.gdetect-wait{display:flex;align-items:center;gap:8px;color:var(--text-2);padding:12px 0}.gdetect-meta{display:flex;flex-direction:column;gap:2px;color:var(--text-2);padding:6px 8px;background:var(--ai-bg);border-radius:var(--radius)}.gdetect-cal{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px dashed var(--ai);border-radius:var(--radius)}.gdetect-actions{display:flex;align-items:center;gap:8px}.gdetect-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.gdetect-list li{padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius)}.gdetect-list li:hover{border-color:var(--ai)}.gdetect-list li.dupe{opacity:.6}.gdetect-list label{display:flex;align-items:center;gap:6px}.gdetect-list .tag{margin:2px 4px 0 0}.m3-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:8px 0;padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.m3-toolbar label{display:flex;align-items:center;gap:6px;font-size:12.5px}.m3-toolbar select{height:28px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:0 6px}.m3-legend{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2)}.m3-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-left:8px}.m3-legend .c-ok{background:#2878a4}.m3-legend .c-prop{background:#7b5cd6}.m3-legend .c-stale{background:#d9822b}.m3-legend .c-none{background:#c6cfd9}.m3-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;margin-bottom:12px}.m3-view{height:520px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:#eef3fa}.m3-side{margin:0}.m3-info{display:flex;flex-direction:column;gap:4px}.m3-info hr{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}.m3-actions{display:flex;gap:6px;margin-top:6px}.m3-elev{display:inline-flex;gap:4px;align-items:center}.m3-elev input{width:90px;height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 6px}.m3-elev select{height:28px;border:1px solid var(--border);border-radius:var(--radius)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:8px}@media(max-width:1100px){.m3-main{grid-template-columns:1fr}}.aiprog{display:flex;flex-direction:column;gap:6px;width:100%;padding:10px 12px;border:1px solid var(--border);border-left:3px solid var(--ai);border-radius:var(--radius);background:var(--surface)}.aiprog.stalled{border-left-color:#d9822b}.aiprog.done.ok{border-left-color:var(--success)}.aiprog.done.warn{border-left-color:#d9822b}.aiprog .notice{margin:0}.aiprog-head{display:flex;align-items:center;gap:8px}.aiprog-head .icon{color:var(--ai)}.aiprog.done.ok .aiprog-head .icon{color:var(--success)}.aiprog-pct{font-variant-numeric:tabular-nums;color:var(--ai)}.aiprog-bar{display:flex;height:8px;border-radius:4px;background:#e6eaf0;overflow:hidden}.aiprog-bar .ok{background:var(--ai);transition:width .4s ease}.aiprog-bar .bad{background:var(--danger);transition:width .4s ease}.aiprog-stats{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--text-2);font-variant-numeric:tabular-nums}.aiprog-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.classify-progress{gap:12px;margin-bottom:16px}.classify-progress .aiprog-stats{row-gap:8px}.classify-progress.done.ok{background:var(--success-bg);border-color:var(--success)}.classify-progress.done.ok .aiprog-head b,.classify-progress.done.ok .aiprog-pct{color:var(--success)}.classify-progress.done.ok .aiprog-bar .ok{background:var(--success)}@media(prefers-reduced-motion:reduce){.classify-progress .spinner{animation:none}.classify-progress .aiprog-bar span{transition:none}}.danger-text{color:var(--danger)}.sheet.ai-active{outline:2px solid var(--ai);outline-offset:1px}.gridc-svg .gl.aligned line{stroke:#0b6e4f;stroke-dasharray:none;stroke-width:1.4}.gridc-svg .gl.aligned circle{stroke:#0b6e4f}.gridc-svg .gl.aligned text{fill:#0b6e4f}.gridc-svg .gl.unaligned{opacity:.55}.gdetect-views{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--ai);border-radius:var(--radius);background:var(--ai-bg)}.gdetect-view-list{display:flex;flex-wrap:wrap;gap:6px}.gdetect-view-list button{border:1px solid var(--border);background:#fff;border-radius:999px;padding:3px 10px;cursor:pointer;font-size:12.5px}.gdetect-view-list button.on{border-color:var(--ai);color:var(--ai);font-weight:600;box-shadow:0 0 0 1px var(--ai)}.gridc-svg .gview{fill:none;stroke:var(--ai);stroke-width:1.5;stroke-dasharray:10 6}:root{--g-arch:#2f6fd6;--g-struct:#e0731f;--g-mep:#1f9a5c;--g-none:#8a97a6}.cls-page{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding-bottom:56px}.cls-page.with-panel{grid-template-columns:minmax(0,1fr) 340px}.cls-main{min-width:0}.cls-title{display:flex;align-items:center;gap:12px 16px;margin:0 0 16px;padding-bottom:16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.cls-title h1{font-size:24px;font-weight:700;line-height:1.3;display:flex;align-items:center;gap:8px;white-space:nowrap}.cls-title h1 .muted{font-weight:400;font-size:14px}.cls-title h1 .icon{color:var(--primary)}.cls-stats{display:flex;gap:6px;flex-wrap:wrap;font-size:12px}.cls-stats span{padding:3px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:12.5px}.cls-stats .ok{background:var(--success-bg);border-color:transparent;color:var(--success)}.cls-stats .warn{background:var(--warning-bg);border-color:transparent;color:var(--warning)}.cls-title-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}.cls-title-actions select{width:auto;height:32px;max-width:220px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:0 8px}.cls-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}.cls-group{--gc:var(--g-none);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:4px 8px;align-items:center;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);text-align:left;cursor:pointer;box-shadow:var(--shadow)}.cls-group:hover{border-color:var(--gc)}.cls-group.on{border-color:var(--gc);box-shadow:0 0 0 2px color-mix(in srgb,var(--gc) 30%,transparent)}.g-ARCHITECTURE{--gc:var(--g-arch)}.g-STRUCTURAL{--gc:var(--g-struct)}.g-MEP{--gc:var(--g-mep)}.g-UNASSIGNED,.g-EXCLUDED{--gc:var(--g-none)}.cls-group-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cls-group-text b{font-size:13px;color:var(--gc)}.cls-group-text small{color:var(--muted);font-size:11px}.cls-group-count{font-size:11.5px;color:var(--muted)}.cls-group-count b{font-size:15px;color:var(--text)}.cls-group-bar{grid-column:1/-1;height:3px;border-radius:3px;background:var(--surface-2);overflow:hidden;border:1px solid var(--border)}.cls-group-bar span{display:block;height:100%;background:var(--gc)}.cls-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.cls-toolbar select,.cls-search{width:auto;height:28px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:0 10px}.cls-search{width:200px}.cls-chips{display:flex;gap:6px;flex-wrap:wrap}.chip{height:26px;padding:0 10px;font-size:12px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface);color:var(--text-2);cursor:pointer;white-space:nowrap}.chip:hover{background:var(--surface-2)}.chip.on{background:var(--navy-2);border-color:var(--navy-2);color:#fff}.cls-view{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.cls-view button{width:30px;height:26px;border:0;background:var(--surface);cursor:pointer;color:var(--text-2)}.cls-view button.on{background:var(--primary);color:#fff}.cls-subbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:2px 0 8px}.cls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.cls-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;box-shadow:var(--shadow);border-top:3px solid var(--gc)}.cls-card:hover{border-color:var(--border-strong);border-top-color:var(--gc)}.cls-card.selected{outline:2px solid var(--primary);outline-offset:-1px}.cls-card.active{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 35%,transparent)}.cls-card.ai-active{outline:2px dashed var(--ai)}.cls-thumb{position:relative;background:#fff;border-bottom:1px solid var(--border)}.cls-thumb img{display:block;width:100%;aspect-ratio:1.414;object-fit:contain}.cls-check{position:absolute;top:5px;left:5px;width:15px;height:15px;margin:0;cursor:pointer;accent-color:var(--primary)}.cls-reading{position:absolute;bottom:6px;left:6px}.cls-card-body{padding:5px 7px 6px;display:grid;gap:3px}.cls-card-row{display:flex;align-items:center;gap:6px}.cls-card-title{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cls-card-tags{display:flex;gap:4px;flex-wrap:wrap}.cls-card-foot{display:flex;align-items:center;gap:4px}.cls-card .tag{font-size:10.5px;padding:0 4px}.cls-conf{font-size:11px;font-weight:600;padding:0 6px;border-radius:4px;background:var(--surface-2);color:var(--muted);white-space:nowrap}.cls-conf.band-HIGH{background:var(--success-bg);color:var(--success)}.cls-conf.band-MEDIUM{background:var(--warning-bg);color:var(--warning)}.cls-conf.band-LOW{background:var(--danger-bg);color:var(--danger)}.cls-state{font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;white-space:nowrap}.cls-state.st-APPROVED{background:var(--success-bg);color:var(--success)}.cls-state.st-PENDING,.cls-state.st-NONE{background:var(--warning-bg);color:var(--warning)}.cls-state.st-REJECTED{background:var(--danger-bg);color:var(--danger)}.cls-state.st-EXCLUDED{background:var(--surface-2);color:var(--muted)}.cls-warn-dot{font-size:11px;color:var(--warning);white-space:nowrap}.cls-table tbody tr{cursor:pointer}.cls-table tbody tr:hover td{background:var(--surface-2)}.cls-table tr.active td{background:var(--primary-soft)}.cls-panel{position:sticky;top:0;align-self:start;max-height:calc(100vh - 120px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);min-width:0}.cls-panel-head{display:flex;align-items:center;gap:4px;padding:10px 12px;border-bottom:1px solid var(--border)}.cls-panel-body{overflow:auto;padding:10px;display:grid;gap:8px}.cls-preview{height:190px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff;cursor:zoom-in}.cls-preview img{display:block;margin:auto}.cls-preview-bar{display:flex;align-items:center;gap:6px}.cls-file{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cls-section-head{display:flex;align-items:center;gap:8px}.cls-section-head.as-btn{width:100%;border:0;background:transparent;padding:0;cursor:pointer;text-align:left}.cls-status-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:-4px}.cls-form{display:grid;gap:5px}.cls-form label{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px;font-size:12.5px}.cls-form label>span,.cls-secondary>span{color:var(--text-2)}.cls-form select,.cls-form input{width:100%;height:27px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:0 8px;min-width:0}.cls-secondary{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;font-size:12.5px}.cls-secondary div{display:flex;flex-wrap:wrap;gap:4px}.cls-secondary .chip{height:22px;padding:0 6px;font-size:11px}.cls-warnings{list-style:none;margin:0;padding:8px 10px;background:var(--warning-bg);color:var(--warning);border-radius:var(--radius);display:grid;gap:4px;font-size:12px}.cls-warnings li{display:flex;gap:6px}.cls-evidence{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.cls-evidence ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;font-size:12px}.cls-evidence li{display:flex;gap:6px}.cls-evidence li .icon{color:var(--success);margin-top:2px}.cls-note{display:grid;gap:4px;font-size:12.5px}.cls-note textarea{border:1px solid var(--border-strong);border-radius:var(--radius);padding:6px 8px;resize:vertical}.cls-history ul{margin:0;padding-left:16px;display:grid;gap:4px}.cls-panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px 10px;border-top:1px solid var(--border)}.cls-bulk{position:fixed;left:244px;right:24px;bottom:12px;z-index:20;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:0 6px 24px #1022382e}.cls-bulk select{width:auto;height:28px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:0 8px;max-width:220px}.cls-page.with-panel .cls-bulk{right:380px}.cls-map-row{display:flex;gap:8px;align-items:center;margin:8px 0}@media(max-width:1200px){.cls-page.with-panel{grid-template-columns:minmax(0,1fr)}.cls-panel{position:static;max-height:none}.cls-page.with-panel .cls-bulk{right:24px}.cls-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.cls-bulk{left:12px;right:12px;flex-wrap:wrap}.cls-search{width:100%}.cls-groups{grid-template-columns:minmax(0,1fr)}}.cls-extra{display:grid;gap:6px;padding:6px 0;border-top:1px dashed var(--border);border-bottom:1px dashed var(--border)}.dw-drop{margin-bottom:12px;padding:16px}.dw-table td{vertical-align:middle}.dw-prep{display:inline-flex;align-items:center;gap:6px}.dw-quality{display:inline-flex;gap:6px;flex-wrap:wrap}.dw-quality span{padding:0 6px;border-radius:4px;background:var(--surface-2);border:1px solid var(--border)}.dw-quality .warn{background:var(--warning-bg);color:var(--warning);border-color:transparent}.dw-supersede{width:auto;height:26px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);font-size:12px}.dw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:12px}.dw-page{display:grid;gap:3px;padding:0 0 6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:zoom-in;text-align:left;overflow:hidden}.dw-page:hover{border-color:var(--border-strong)}.dw-page img{display:block;width:100%;aspect-ratio:1.414;object-fit:contain;background:#fff;border-bottom:1px solid var(--border)}.dw-page-row{display:flex;gap:4px;flex-wrap:wrap;align-items:center;padding:0 6px;font-size:11.5px}.dw-page .tag{font-size:10.5px;padding:0 4px}.an-tabs{display:flex;align-items:center;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--border)}.an-title{font-weight:600;font-size:15px;margin-right:12px}.an-tabs button{height:34px;padding:0 14px;border:0;border-bottom:2px solid transparent;background:transparent;cursor:pointer;color:var(--text-2);font-weight:500}.an-tabs button.on{border-bottom-color:var(--primary);color:var(--primary)}.an-bar{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-bottom:10px}.an-bar label{display:grid;gap:2px}.an-bar select{width:auto;height:30px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:0 8px;max-width:320px}.an-sheets{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.an-sheet{display:grid;gap:3px;padding-bottom:6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden;cursor:pointer}.an-sheet.on{outline:2px solid var(--primary);outline-offset:-1px}.an-sheet.ai-active{outline:2px dashed var(--ai)}.an-sheet img{width:100%;aspect-ratio:1.414;object-fit:contain;background:#fff;border-bottom:1px solid var(--border)}.an-sheet-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:0 6px}.an-sheet-title{padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.an-head{margin-bottom:6px}.an-page .gtop{margin-top:0}.dw-strip{display:flex;align-items:center;gap:8px;padding:6px 12px;margin-bottom:8px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-2);font-size:12.5px;cursor:pointer}.dw-strip:hover{border-color:var(--primary);color:var(--primary)}.dw-strip.busy{cursor:default}.cls-page.dw-dragging .cls-main{outline:2px dashed var(--primary);outline-offset:4px;border-radius:var(--radius-lg)}.dw-files{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.dw-file{cursor:pointer;grid-template-columns:minmax(0,1fr) auto}.dw-file-meta{grid-column:1/2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dw-file-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.warn-text{color:var(--warning);display:inline-flex;align-items:center;gap:4px}.btn-ghost{text-decoration:none}.dw-header-row{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:14px}.dw-header-row.dw-header-between{flex-direction:row;align-items:center;justify-content:space-between}.dw-header-text h1{font-size:22px;font-weight:700;color:var(--text);margin:2px 0 4px}.dw-header-sub{font-size:12.5px;color:var(--muted);line-height:1.4;max-width:850px}.dw-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%}.dw-rev-select{height:36px;width:auto;min-width:130px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);font-size:13px;font-weight:500;padding:0 10px}.dw-upload-btn{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.dw-upload-btn:hover{background:var(--brand-hover);border-color:var(--brand-hover)}.dw-empty-state-box{background:var(--surface);border:1.5px dashed #b5bcc7;border-radius:12px;padding:52px 24px;text-align:center;margin:16px 0 20px;cursor:pointer;transition:border-color .2s,background-color .2s}.dw-empty-state-box:hover{border-color:var(--brand);background:#fffcf8}.dw-empty-icon-wrap{width:44px;height:44px;margin:0 auto 16px;border:2px solid var(--brand);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--brand);font-size:22px;font-weight:700}.dw-empty-title{font-size:18px;font-weight:700;color:var(--text);margin:0 0 8px}.dw-empty-sub{font-size:13.5px;color:var(--muted);margin:0 0 22px}.dw-empty-btn-upload{background:var(--brand);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;padding:10px 24px;cursor:pointer;box-shadow:0 2px 6px #ff820040;transition:background-color .15s}.dw-empty-btn-upload:hover{background:var(--brand-hover)}.dw-empty-hint{font-size:12px;color:var(--muted);margin-top:18px}.dw-empty-cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}.dw-empty-feature-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 20px;box-shadow:var(--shadow)}.dw-empty-card-step{display:block;font-size:12px;font-weight:700;color:var(--brand);margin-bottom:8px}.dw-empty-card-title{font-size:14.5px;font-weight:700;color:var(--text);margin:0 0 6px}.dw-empty-card-desc{font-size:12px;color:var(--muted);margin:0;line-height:1.5}.dw-summary-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 20px 16px;margin-bottom:14px}.dw-summary-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.dw-summary-left{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.dw-stat-group{display:flex;align-items:center;gap:16px}.dw-stat-unit{display:flex;flex-direction:column}.dw-stat-label{font-size:11px;color:var(--muted);line-height:1.2}.dw-stat-num{font-size:24px;font-weight:700;color:var(--text);line-height:1.1}.dw-summary-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dw-badge-rev{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:11.5px;background:#fff8e6;color:#b78103;border:1px solid #ffe58f;font-weight:500}.dw-badge-fail{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:11.5px;background:#fff1f0;color:#cf1322;border:1px solid #ffa39e;font-weight:500}.dw-summary-right{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--text-2)}.dw-legend-item{display:inline-flex;align-items:center;gap:6px}.dw-legend-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dw-legend-dot.green{background:#52c41a}.dw-legend-dot.orange{background:#fa8c16}.dw-legend-dot.red{background:#f5222d}.dw-stacked-progress{display:flex;height:6px;border-radius:3px;overflow:hidden;background:#f0f0f0;width:100%;margin:12px 0 8px}.dw-prog-green{background:#52c41a}.dw-prog-orange{background:#fa8c16}.dw-prog-red{background:#f5222d}.dw-summary-footer{font-size:11px;color:var(--muted);line-height:1.4}.dw-upload-strip{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;margin-bottom:14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;transition:border-color .15s,box-shadow .15s}.dw-upload-strip:hover{border-color:var(--brand)}.dw-upload-strip-left{display:flex;align-items:center;gap:12px}.dw-upload-strip-icon{font-size:20px;color:var(--text-2)}.dw-upload-strip-text b{display:block;font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}.dw-upload-strip-text span{font-size:11.5px;color:var(--muted)}.dw-upload-strip-right{font-size:11.5px;color:var(--muted);text-align:right}.dw-tabs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.dw-tabs-group{display:flex;align-items:center;gap:8px}.dw-pill-tab{height:34px;padding:0 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;display:inline-flex;align-items:center;gap:6px;transition:all .15s}.dw-pill-tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}.dw-pill-tab:not(.active){background:var(--surface);color:var(--text-2);border-color:var(--border)}.dw-pill-tab:not(.active):hover{border-color:var(--border-strong);color:var(--text)}.dw-tab-count{font-size:12px}.dw-view-all-btn{height:34px;padding:0 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--border);transition:all .15s}.dw-view-all-btn:hover{border-color:var(--border-strong)}.dw-cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px}@media(max-width:900px){.dw-cards-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.dw-discipline-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;display:flex;flex-direction:column}.dw-card-subcode{font-size:11px;color:var(--muted);letter-spacing:1.5px;font-weight:500;margin-bottom:4px}.dw-card-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.dw-card-title{font-size:18px;font-weight:700;color:var(--text)}.dw-card-count{font-size:13px;color:var(--muted)}.dw-card-count b{font-size:22px;font-weight:700;color:var(--text);margin-right:2px}.dw-card-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:14px}.dw-sub-pill{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:12px;font-size:11.5px;font-weight:500}.dw-sub-pill.teal{background:#e6fffb;color:#08979c;border:1px solid #87e8de}.dw-sub-pill.blue{background:#e6f7ff;color:#096dd9;border:1px solid #91d5ff}.dw-sub-pill.purple{background:#f9f0ff;color:#531dab;border:1px solid #d3adf7}.dw-sub-pill.gray{background:#f5f5f5;color:#595959;border:1px solid #d9d9d9}.dw-card-source-title{font-size:11px;color:var(--muted);margin-bottom:6px}.dw-card-source-list{display:flex;flex-direction:column;gap:5px;flex-grow:1;min-height:75px}.dw-card-source-item{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text)}.dw-card-source-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}.dw-card-source-note{font-size:11.5px;color:var(--muted);white-space:nowrap}.dw-card-source-note.danger{color:var(--danger);font-weight:500}.dw-card-alert-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:11.5px;margin-top:10px;font-weight:500;width:fit-content}.dw-card-alert-badge.warn{background:#fff8e6;color:#b78103;border:1px solid #ffe58f}.dw-card-alert-badge.danger{background:#fff1f0;color:#cf1322;border:1px solid #ffa39e}.dw-card-actions{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.dw-card-action-btn{flex:1;height:32px;border-radius:var(--radius);font-size:12.5px;font-weight:500;text-align:center;cursor:pointer;background:var(--surface);border:1px solid var(--border);color:var(--text);transition:all .15s}.dw-card-action-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.dw-tab-circle-badge{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#fff;color:var(--brand);font-size:11px;font-weight:700;margin-left:4px}.dw-pill-tab:not(.active) .dw-tab-circle-badge{background:#f0f0f0;color:#595959}.dw-file-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-bottom:20px}.dw-fcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s;box-shadow:var(--shadow-sm,0 1px 2px rgba(0,0,0,.03))}.dw-fcard:hover{border-color:var(--border-strong)}.dw-fcard.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.dw-fcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:4px}.dw-fcard-name{font-size:13.5px;font-weight:700;color:var(--text);word-break:break-all;line-height:1.3}.dw-fcard-rev{background:#f5f5f5;color:#595959;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0}.dw-fcard-meta{font-size:11.5px;color:var(--muted);margin-bottom:12px}.dw-fcard-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.dw-fcard-section-title{font-size:11px;color:var(--muted);font-weight:500}.dw-fcard-multi-badge{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:12px;font-size:11px;font-weight:500;background:#e6f7ff;color:#1890ff;border:1px solid #91d5ff}.dw-fcard-disc-bar{display:flex;height:4px;border-radius:2px;overflow:hidden;background:#e8e8e8;margin-bottom:10px}.dw-fcard-disc-bar .bar-arch{background:#006d75}.dw-fcard-disc-bar .bar-struct{background:#2f54eb}.dw-fcard-disc-bar .bar-mep{background:#b37feb}.dw-fcard-disc-bar .bar-other{background:#d9d9d9}.dw-fcard-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:12px}.dw-fcard-note-box{margin-bottom:10px}.dw-fcard-note-text{font-size:11px;color:var(--text-2);line-height:1.3}.dw-fcard-note-text.muted{color:var(--muted)}.dw-fcard-note-line{height:3px;border-radius:2px;background:#006d75;margin-top:4px}.dw-fcard-quality-bar{display:flex;height:5px;border-radius:2.5px;overflow:hidden;background:#f0f0f0;margin-bottom:4px}.dw-fcard-quality-legend{font-size:11px;color:var(--muted);margin-bottom:12px}.dw-fcard-actions{margin-top:auto;padding-top:10px;border-top:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;gap:8px}.dw-fcard-btn-edit{flex:1;height:30px;background:#fff;border:1px solid var(--border);border-radius:4px;font-size:12px;font-weight:500;color:var(--text);cursor:pointer;text-align:center;transition:all .15s}.dw-fcard-btn-edit:hover{background:var(--surface-2);border-color:var(--border-strong)}.dw-fcard-btn-del{height:30px;padding:0 14px;background:#fff;border:1px solid #ffa39e;border-radius:4px;font-size:12px;font-weight:500;color:#cf1322;cursor:pointer;text-align:center;transition:all .15s}.dw-fcard-btn-del:hover{background:#fff1f0;border-color:#f5222d}.dw-rev-modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;z-index:999;padding:16px}.dw-rev-modal{background:#fff;border-radius:12px;width:100%;max-width:640px;box-shadow:0 20px 48px #11182733;padding:24px 28px;display:flex;flex-direction:column;max-height:calc(100vh - 48px);overflow-y:auto}.dw-rev-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.dw-rev-modal-title{font-size:16px;font-weight:700;color:#1f2937;margin:0 0 4px;line-height:1.3}.dw-rev-modal-sub{font-size:12px;color:#6b7280;margin:0}.dw-rev-close{background:none;border:none;font-size:22px;line-height:1;color:#9ca3af;cursor:pointer;padding:2px 6px;border-radius:4px}.dw-rev-close:hover{color:#374151;background:#f3f4f6}.dw-rev-dropzone{border:1.5px dashed #d1d5db;border-radius:8px;background:#fafafa;padding:20px 16px;text-align:center;cursor:pointer;transition:all .15s;margin-bottom:16px}.dw-rev-dropzone:hover{border-color:#ff8200;background:#fffcf8}.dw-rev-dropzone-title{font-size:13px;color:#374151;font-weight:500}.dw-rev-dropzone-title .dw-link-accent{color:#ff8200;font-weight:600;text-decoration:underline}.dw-rev-dropzone-sub{font-size:11.5px;color:#8c8c8c;margin-top:4px}.dw-rev-file-selected{display:flex;align-items:center;justify-content:center;gap:12px;padding:4px}.dw-rev-file-meta{display:flex;flex-direction:column;align-items:flex-start}.dw-rev-file-name{font-size:13px;color:#1f2937}.dw-rev-file-size{font-size:11px;color:#6b7280}.dw-rev-form-row{display:flex;gap:14px;margin-bottom:14px}.dw-rev-field{display:flex;flex-direction:column;gap:5px}.dw-rev-label{font-size:12px;font-weight:600;color:#374151}.dw-rev-label .req{color:#ef4444}.dw-rev-select-input,.dw-rev-text-input{height:36px;border:1px solid #d1d5db;border-radius:6px;padding:0 10px;font-size:12.5px;color:#1f2937;background:#fff;width:100%;box-sizing:border-box}.dw-rev-select-input:focus,.dw-rev-text-input:focus{border-color:#ff8200;outline:none}.dw-rev-info-box{background:#f0f5ff;border:1px solid #d6e4ff;border-radius:6px;padding:10px 14px;font-size:12px;color:#1d39c4;line-height:1.5;margin-bottom:16px}.dw-rev-impact-sec{border-top:1px solid #f3f4f6;padding-top:14px;margin-bottom:8px}.dw-rev-impact-title{font-size:13px;font-weight:700;color:#1f2937;margin-bottom:8px}.dw-rev-impact-table{width:100%;border-collapse:collapse;font-size:12.5px}.dw-rev-impact-table th{padding:6px 10px;font-size:11.5px;font-weight:500;color:#6b7280;border-bottom:1px solid #f0f0f0}.dw-rev-impact-table td{padding:8px 10px;color:#262626;border-bottom:1px solid #f9fafb}.dw-rev-chip-warn{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#fffbe6;color:#d46b08;border:1px solid #ffe58f}.dw-rev-impact-footer{font-size:11px;color:#9ca3af;margin-top:8px}.dw-rev-modal-footer{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:20px;padding-top:12px;border-top:1px solid #f3f4f6}.dw-rev-btn-cancel{height:36px;padding:0 18px;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-weight:500;color:#4b5563;cursor:pointer;transition:all .15s}.dw-rev-btn-cancel:hover{background:#f9fafb;border-color:#9ca3af}.dw-rev-btn-confirm{height:36px;padding:0 20px;background:#ff8200;border:none;border-radius:6px;font-size:13px;font-weight:600;color:#fff;cursor:pointer;transition:all .15s;box-shadow:0 1px 3px #ff820040}.dw-rev-btn-confirm:hover{background:#e67600}.dw-rev-btn-confirm:disabled{background:#fdba74;cursor:not-allowed}.dw-rev-carried-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 14px;margin-bottom:16px}.dw-rev-carried-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:12.5px;color:#1e293b}.dw-rev-carried-icon{font-size:16px;line-height:1.2}.dw-rev-carried-sub{font-size:11.5px;color:#64748b;margin-top:2px;line-height:1.4}.dw-rev-carried-list{display:flex;flex-direction:column;gap:6px}.dw-rev-carried-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:6px 10px;font-size:12px}.dw-rev-carried-item.current{background:#fffcf8;border-color:#fed7aa}.dw-rev-carried-item-main{display:flex;align-items:center;gap:8px;min-width:0}.dw-rev-carried-name{font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dw-rev-carried-desc{font-size:11px;color:#64748b;margin-left:6px}.dw-rev-chip-mod{font-size:11px;font-weight:600;color:#d97706;background:#fef3c7;padding:2px 8px;border-radius:10px;white-space:nowrap}.dw-rev-chip-keep{font-size:11px;font-weight:600;color:#15803d;background:#dcfce7;padding:2px 8px;border-radius:10px;white-space:nowrap}.dw-fcard-rev.dw-fcard-carried{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.dw-fcard-note-box.carried{background:#f0fdf4;border-color:#bbf7d0}.dw-fcard-note-box.carried .dw-fcard-note-text{color:#166534;font-weight:500}.dw-rev-page-head{margin-bottom:16px}.dw-rev-back-link{font-size:12px;color:var(--muted);text-decoration:none;display:inline-block;margin-bottom:4px}.dw-rev-back-link:hover{color:var(--brand)}.dw-rev-page-title{font-size:22px;font-weight:700;color:var(--text);margin:0 0 4px}.dw-rev-page-sub{font-size:13px;color:var(--text-2);margin:0}.dw-rev-banner{background:#f6ffed;border:1px solid #b7eb8f;border-radius:6px;padding:12px 18px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dw-rev-banner-body{display:flex;flex-direction:column;gap:2px}.dw-rev-banner-title{font-size:13.5px;font-weight:600;color:#389e0d}.dw-rev-banner-desc{font-size:12.5px;color:#52c41a}.dw-rev-banner-close{border:none;background:none;font-size:13px;color:#52c41a;cursor:pointer;font-weight:600;padding:4px 8px;border-radius:4px}.dw-rev-banner-close:hover{background:#52c41a1a}.dw-rev-panel{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;margin-bottom:20px;box-shadow:0 1px 2px #00000008}.dw-rev-table{width:100%;border-collapse:collapse;font-size:13px}.dw-rev-table th{background:#fafafa;color:#595959;font-size:12.5px;font-weight:600;padding:12px 16px;border-bottom:1px solid #e8e8e8;text-align:left}.dw-rev-table td{padding:12px 16px;color:#262626;border-bottom:1px solid #f0f0f0;vertical-align:middle}.dw-rev-table tr:last-child td{border-bottom:none}.dw-rev-pill-active{display:inline-flex;align-items:center;gap:4px;padding:2px 12px;border-radius:12px;font-size:12px;font-weight:500;background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.dw-rev-pill-inactive{display:inline-flex;align-items:center;gap:4px;padding:2px 12px;border-radius:12px;font-size:12px;font-weight:500;background:#f5f5f5;color:#8c8c8c;border:1px solid #d9d9d9}.dw-rev-chip-gray{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11.5px;font-weight:500;background:#f5f5f5;color:#8c8c8c;border:1px solid #d9d9d9}.dw-rev-chip-new{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;background:#e6f7ff;color:#096dd9;border:1px solid #91d5ff}.dw-rev-chip-manual{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#fff7e6;color:#d46b08;border:1px solid #ffd591}.dw-rev-table-select{height:30px;font-size:12px;border:1px solid #d9d9d9;border-radius:4px;padding:0 8px;background:#fff;color:#1f2937;max-width:280px;cursor:pointer}.dw-rev-table-select:focus{border-color:#ff8200;outline:none}.dw-rev-action-cell{display:flex;align-items:center;gap:12px;justify-content:flex-end}.dw-rev-link-view{color:#ff8200;font-size:13px;font-weight:500;text-decoration:none;cursor:pointer}.dw-rev-link-view:hover{text-decoration:underline}.dw-rev-btn-apply-active{height:30px;padding:0 12px;background:#fff;border:1px solid #d9d9d9;border-radius:4px;font-size:12px;font-weight:500;color:#262626;cursor:pointer;transition:all .15s}.dw-rev-btn-apply-active:hover{border-color:#ff8200;color:#ff8200;background:#fff9f2}.dw-rev-matching-sec{margin-top:28px}.dw-rev-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:8px}.dw-rev-section-title{font-size:14px;font-weight:700;color:#1f2937}.dw-rev-section-note{font-size:11.5px;color:#8c8c8c}.dw-rev-bottom-hint{font-size:11.5px;color:#8c8c8c;margin-top:6px}.dw-rev-footer-note{font-size:12px;color:#8c8c8c;margin-top:24px}.dw-up-modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;z-index:999;padding:16px}.dw-up-modal{background:#fff;border-radius:12px;width:100%;max-width:700px;box-shadow:0 20px 48px #11182733;padding:24px 28px;display:flex;flex-direction:column;max-height:calc(100vh - 48px);overflow-y:auto}.dw-up-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.dw-up-title{font-size:17px;font-weight:700;color:#1f2937;margin:0 0 4px;line-height:1.3}.dw-up-sub{font-size:12px;color:#6b7280;margin:0}.dw-up-close{background:none;border:none;font-size:22px;line-height:1;color:#9ca3af;cursor:pointer;padding:2px 6px;border-radius:4px}.dw-up-close:hover{color:#374151;background:#f3f4f6}.dw-up-dropzone{border:1.5px dashed #d1d5db;border-radius:8px;background:#fafafa;padding:20px 16px;text-align:center;cursor:pointer;transition:all .15s;margin-bottom:16px}.dw-up-dropzone:hover{border-color:#ff8200;background:#fffcf8}.dw-up-drop-icon{font-size:22px;color:#8c8c8c;line-height:1;margin-bottom:4px}.dw-up-drop-title{font-size:13px;color:#374151;font-weight:500;margin-bottom:4px}.dw-up-drop-title .dw-link-accent{color:#ff8200;font-weight:600;text-decoration:underline}.dw-up-drop-sub{font-size:11.5px;color:#8c8c8c;line-height:1.4}.dw-up-drop-sub2{font-size:11px;color:#bfbfbf;margin-top:2px}.dw-up-batch-sec{margin-bottom:14px}.dw-up-batch-title{font-size:12.5px;font-weight:600;color:#262626;margin-bottom:8px}.dw-up-form-row{display:flex;gap:12px;margin-bottom:6px}.dw-up-field{display:flex;flex-direction:column;gap:4px}.dw-up-label{font-size:11.5px;font-weight:500;color:#595959}.dw-up-label .req{color:#ef4444}.dw-up-input,.dw-up-select{height:34px;border:1px solid #d9d9d9;border-radius:6px;padding:0 10px;font-size:12.5px;color:#262626;background:#fff;width:100%;box-sizing:border-box}.dw-up-input:focus,.dw-up-select:focus{border-color:#ff8200;outline:none}.dw-up-batch-hint{font-size:11px;color:#8c8c8c;line-height:1.4;margin-top:4px}.dw-up-ai-box{background:#fcf8ff;border:1px solid #e8d8fc;border-radius:8px;padding:10px 14px;margin-bottom:16px}.dw-up-ai-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.dw-up-ai-check{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.dw-up-ai-check-label{font-size:12.5px;font-weight:600;color:#531dab}.dw-up-ai-badge{font-size:11px;font-weight:500;color:#722ed1;background:#f9f0ff;border:1px solid #d3adf7;border-radius:10px;padding:1px 8px}.dw-up-ai-desc{font-size:11px;color:#722ed1;line-height:1.4}.dw-up-file-sec{margin-bottom:12px}.dw-up-file-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.dw-up-file-title{font-size:13px;font-weight:700;color:#1f2937}.dw-up-file-summary{font-size:11.5px;color:#8c8c8c}.dw-up-file-list{display:flex;flex-direction:column;gap:8px}.dw-up-item{border:1px solid #e8e8e8;border-radius:6px;padding:10px 14px;background:#fff;transition:border-color .15s}.dw-up-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.dw-up-item-name{font-size:12.5px;font-weight:600;color:#262626}.dw-up-item-sub{font-size:11px;color:#8c8c8c;margin-top:3px}.chip-success{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.chip-blue{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#e6f7ff;color:#1890ff;border:1px solid #91d5ff}.chip-danger{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#fff1f0;color:#cf1322;border:1px solid #ffa39e}.chip-warn{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#fffbe6;color:#d46b08;border:1px solid #ffe58f}.chip-gray{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;background:#f5f5f5;color:#8c8c8c;border:1px solid #d9d9d9}.dw-up-btn-remove{background:none;border:none;font-size:11.5px;color:#8c8c8c;cursor:pointer;padding:2px 4px}.dw-up-btn-remove:hover{color:#cf1322;text-decoration:underline}.dw-up-btn-retry{height:26px;padding:0 10px;background:#fff;border:1px solid #d9d9d9;border-radius:4px;font-size:11.5px;color:#262626;cursor:pointer}.dw-up-btn-retry:hover{border-color:#ff8200;color:#ff8200}.dw-up-dup-box{margin-top:8px;padding-top:8px;border-top:1px dashed #e8e8e8}.dw-up-dup-title{font-size:11.5px;font-weight:600;color:#262626;margin-bottom:4px}.dw-up-dup-title .req{color:#ef4444}.dw-up-dup-options{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}.dw-up-radio-label{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:#262626;cursor:pointer}.dw-up-dup-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}.dw-up-btn-ghost-sm{height:28px;padding:0 12px;background:#fff;border:1px solid #d9d9d9;border-radius:4px;font-size:11.5px;color:#595959;cursor:pointer}.dw-up-btn-ghost-sm:hover{background:#fafafa;border-color:#bfbfbf}.dw-up-btn-orange-sm{height:28px;padding:0 14px;background:#ff8200;border:none;border-radius:4px;font-size:11.5px;font-weight:600;color:#fff;cursor:pointer}.dw-up-btn-orange-sm:hover{background:#e67600}.dw-up-dup-resolved{font-size:11px;color:#52c41a;margin-top:4px}.dw-up-footer{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:14px;border-top:1px solid #f0f0f0;flex-wrap:wrap;gap:10px}.dw-up-footer-note{font-size:11px;color:#8c8c8c}.dw-up-footer-btns{display:flex;align-items:center;gap:8px}.dw-up-btn-close{height:34px;padding:0 16px;background:#fff;border:1px solid #d9d9d9;border-radius:6px;font-size:12.5px;font-weight:500;color:#595959;cursor:pointer;transition:all .15s}.dw-up-btn-close:hover{background:#f9fafb;border-color:#bfbfbf}.dw-up-btn-view{height:34px;padding:0 18px;background:#ff8200;border:none;border-radius:6px;font-size:12.5px;font-weight:600;color:#fff;cursor:pointer;transition:all .15s;box-shadow:0 1px 3px #ff820033}.dw-up-btn-view:hover{background:#e67600}.an-page .gtop{align-items:center;padding:6px 8px;gap:6px 8px;border-radius:var(--radius)}.an-page .gtop label{flex-direction:row;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap}.an-page .gtop select{height:28px;min-width:100px}.an-page .gtop .btn{height:28px;padding:0 10px;font-size:12.5px}.an-page .gtop-rev{padding-bottom:0}.dw-file .cls-group-text b{color:var(--text)}.ov-steps{grid-template-columns:repeat(5,minmax(0,1fr))}.ov-step{--gc:var(--border-strong)}.ov-step.done{--gc:var(--success)}.ov-step.current{--gc:var(--primary)}.ov-detail{grid-column:1/-1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-no{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--gc);font-size:10.5px;margin-right:2px}.ov-step.done .ov-no{background:var(--success);color:#fff}.ov-next{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 14px;margin-bottom:12px;background:var(--primary-soft);border:1px solid #b9cde3;border-radius:var(--radius-lg)}.ds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:10px;align-items:start}.ds-card{display:grid;gap:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);border-top:3px solid var(--primary)}.ds-card.planned{border-top-color:var(--border-strong)}.ds-card header{display:flex;align-items:center;gap:6px}.ds-code{min-width:24px;height:22px;padding:0 4px;border-radius:4px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:600}.ds-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.ds-stats div{display:grid;align-content:start;padding:6px 8px;background:var(--surface-2);border-radius:var(--radius)}.ds-stats span{font-size:11px;color:var(--muted)}.ds-stats b{font-size:16px}.ds-stats small{font-size:11px;color:var(--muted)}.ds-bar{height:3px;border-radius:2px;background:var(--surface-2);overflow:hidden}.ds-bar span{display:block;height:100%;background:var(--success)}.ds-types{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--muted)}.ds-types li{display:inline-flex;align-items:center;gap:4px}.ds-types li.on{color:var(--success);font-weight:500}.ds-dot{width:6px;height:6px;border-radius:50%;background:var(--border-strong)}.ds-note{margin:0}.ds-card footer{display:flex;gap:4px;flex-wrap:wrap}@media(max-width:1200px){.ov-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}.login-page{min-height:100vh;display:flex;flex-wrap:wrap;background:var(--surface)}.login-hero{flex:1 1 480px;background:var(--brand);color:var(--on-brand);padding:clamp(24px,5vw,56px);display:flex;flex-direction:column;justify-content:flex-end;gap:32px}.login-hero-text{display:grid;gap:16px;max-width:460px}.login-hero p{margin:0;font-size:15px;line-height:1.6}.login-hero .login-title{font-family:Krona One,Noto Sans Thai Looped,sans-serif;font-size:clamp(32px,4.5vw,56px);line-height:1.15;letter-spacing:.02em}.login-hero .login-module{font-size:18px;font-weight:600}.login-hero .login-tagline{font-size:13px;font-weight:600;letter-spacing:.04em}.login-main{flex:999 1 420px;min-width:0;display:flex;align-items:center;justify-content:center;padding:clamp(24px,5vw,56px)}.login-card{width:100%;max-width:400px;display:grid;gap:24px}.login-card h1{font-size:28px}.login-card input{width:100%;height:40px;border:1px solid var(--border-strong);border-radius:var(--radius);padding:0 12px}.login-logo{display:flex;align-items:center;gap:10px}.login-logo img{height:32px;width:auto}.login-logo .cm{font-size:13px}.login-card .btn{justify-content:center;height:44px}.login-notes{display:grid;gap:8px;padding-top:24px;border-top:1px solid var(--border)}.login-notes p{margin:0}.topbar-user{display:inline-flex;align-items:center;gap:6px;color:#e6edf5}.role-pill{font-size:10.5px;padding:1px 7px;border-radius:999px;border:1px solid #4d6c8f;color:#a9c4e2}.role-pill.admin{background:#e0a03a;border-color:#e0a03a;color:#1b1300}.topbar-link{border:0;background:transparent;color:#a9c4e2;cursor:pointer;font-size:12px;padding:0}.topbar-link:hover{color:#fff;text-decoration:underline}.qp-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;padding:8px 12px;margin-bottom:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.qp-bar label{display:grid;gap:2px;font-size:11.5px;color:var(--muted)}.qp-bar label.missing span{color:var(--warning);font-weight:600}.qp-bar input{width:120px;height:28px;border:1px solid var(--border-strong);border-radius:var(--radius);padding:0 8px}.rebar{display:grid;gap:6px;margin:10px 0;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.rebar-head{display:flex;align-items:center;gap:8px}.rebar-table{table-layout:fixed;width:100%}.rebar-table th:nth-child(1){width:auto}.rebar-table th:nth-child(2){width:58px}.rebar-table th:nth-child(3),.rebar-table th:nth-child(4){width:56px}.rebar-table th:nth-child(5){width:62px}.rebar-table th:nth-child(6){width:28px}.rebar-table td{padding:3px 4px}.rebar-table select,.rebar-table input{width:100%;height:26px;border:1px solid var(--border-strong);border-radius:4px;padding:0 4px;background:var(--surface)}.rebar-table input{text-align:right}.rebar-actions{display:flex;align-items:center;gap:6px}.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;height:48px;font-size:16px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;font-weight:500;cursor:pointer;color:#1f1f1f}.google-btn:hover{background:#f6f8fa}.login-form{display:grid;gap:10px}.login-or{text-align:center;margin-top:4px}.exp-input{height:28px;border:1px solid var(--border-strong);border-radius:var(--radius);padding:0 6px;width:140px}.lv-bar{align-items:center}.lv-levels{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:10px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.lv-building{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.lv-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,44%);gap:12px;align-items:start}.lv-list{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:auto}.lv-list td{vertical-align:middle}.lv-list .tag{margin-left:3px}.lv-actions{display:inline-flex;gap:4px}.lv-evidence{display:grid;gap:6px;position:sticky;top:8px}.lv-ev-head{display:grid;gap:4px}.lv-sheets{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-bottom:10px}.lv-sheets .an-sheet{cursor:pointer}.lv-sheets .an-sheet img{aspect-ratio:1.6}.lv-warn{display:inline-flex;align-items:center;gap:8px;color:var(--warning)}.tag-click{cursor:pointer}.tag-click:hover{border-color:var(--primary);color:var(--primary)}.lv-fix{display:flex;align-items:center;gap:8px}.lv-fix input{width:120px}.lv-check{display:flex;gap:6px;align-items:flex-start;margin:6px 0}.lv-sub{margin-bottom:8px}.lv-new{display:grid;grid-template-columns:120px 1fr;gap:8px}@media(max-width:1100px){.lv-layout{grid-template-columns:1fr}.lv-evidence{position:static}}.lvw-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.lvw-chips{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.lvw-chip{position:relative;display:inline-flex;align-items:center;gap:2px;height:24px;padding:0 8px;border:1px solid var(--border-strong);border-radius:999px;font-size:12px;background:var(--surface);white-space:nowrap}.lvw-chip.none{color:var(--muted);background:var(--surface-2)}.lvw-chip.unread{border-style:dashed}.lvw-chip.off{opacity:.45;border-style:dashed}.lvw-chip.failed{border-color:var(--danger);color:var(--danger)}.lvw-chip.reading{border-color:var(--ai);color:var(--ai);animation:lvw-pulse 1.2s ease-in-out infinite}@keyframes lvw-pulse{50%{background:#5a3ec01f}}.lvw-thumb{display:none;position:absolute;top:28px;left:0;width:260px;z-index:20;border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}.lvw-chip:hover .lvw-thumb{display:block}.lvw-pick{position:relative}.lvw-menu{position:absolute;top:30px;left:0;z-index:30;min-width:300px;padding:6px;display:grid;gap:4px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.lvw-menu-sep{margin-top:4px;padding-top:6px;border-top:1px solid var(--border)}.lvw-menu label{display:flex;align-items:center;gap:6px;white-space:nowrap}.lvw-menu .small{overflow:hidden;text-overflow:ellipsis;flex:1}.lvw-unit{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-2)}.lvw-unit select{width:auto;height:26px}.lvw-dot{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;font-size:11px;font-weight:700}.lvw-dot.warn{background:var(--danger-bg);color:var(--danger)}.lvw-dot.info{background:var(--info-bg);color:var(--info)}.lvw-pager{display:inline-flex;align-items:center;gap:2px;margin-left:6px}.dv{position:relative;display:flex;flex-direction:column;height:100%;min-height:0;border:1px solid var(--border);border-radius:var(--radius);background:#dfe5ec;overflow:hidden}.dv-view{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.dv-stage{position:absolute;left:0;top:0;background:#fff;box-shadow:0 1px 6px #0000002e}.dv-stage canvas{display:block;position:absolute;left:0;top:0}.dv-msg{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:3;pointer-events:none}.dv-msg.danger{color:var(--danger)}.dv-box{position:absolute;border:1px dashed rgba(90,100,120,.7);background:#5a64780f}.dv-box i{position:absolute;left:-1px;top:-16px;font-style:normal;font-size:10px;line-height:14px;padding:0 3px;background:#fff;border:1px solid rgba(90,100,120,.5);color:#3d4655;white-space:nowrap}.dv-box.tiny i{display:none}.dv-box.tiny:hover i{display:block;z-index:2}.dv-box.click{cursor:pointer}.dv-box.click:hover{border-style:solid;background:#1f5fa81f}.dv-ring{position:absolute;border:3px solid #d9412b;border-radius:50%;pointer-events:none;box-shadow:0 0 0 3px #fffc;animation:dv-ping 1.6s ease-out 2}@keyframes dv-ping{0%{transform:scale(1.8);opacity:0}60%{transform:scale(1);opacity:1}}.dv-box.target{border:2.5px solid #d9412b;background:#d9412b1f;box-shadow:0 0 0 4px #d9412b38}.dv-tools{position:absolute;left:8px;bottom:8px;display:flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--border);border-radius:var(--radius);background:#fffffff2;box-shadow:var(--shadow)}.dv-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 9px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);cursor:pointer;font:inherit;font-size:12.5px;white-space:nowrap}.dv-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.dv-btn:disabled{opacity:.45;cursor:default}.dv-zoom{display:inline-flex;align-items:center;gap:4px;margin:0 4px}.dv-zoom .mono{min-width:42px;text-align:center}.dv-hint{margin-left:4px}@media(max-width:1100px){.dv-hint{display:none}}.rw{display:flex;flex-direction:column;gap:6px;height:calc(100vh - 170px);min-height:520px}.rw.full{height:100vh;padding:8px;background:var(--bg)}.rw-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.rw-title{font-size:14px}.rw-progress{display:inline-flex;align-items:center;gap:6px}.rw-bar{display:inline-block;width:90px;height:6px;border-radius:3px;background:var(--surface-2);border:1px solid var(--border);overflow:hidden}.rw-bar span{display:block;height:100%;background:var(--success)}.rw-nav{display:inline-flex;gap:4px}.rw-tools{flex:1;display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.rw-top .lvw-strip{border:0;padding:0;background:none;flex:1;flex-wrap:nowrap;min-width:0}.rw-top .lvw-chips{flex-wrap:nowrap;min-width:0}.rw-top,.rw-tools{flex-wrap:nowrap}.rw-levels{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.rw-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:8px}.rw-view{min-width:0;min-height:0}.rw-side{display:flex;flex-direction:column;min-height:0;gap:8px}.rw-card{display:grid;gap:7px;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:auto;max-height:62%}.rw-empty{padding:12px}.rw-ask{display:grid;gap:5px;padding:8px;border:1px solid #ecd39b;border-radius:var(--radius);background:var(--warning-bg);font-size:12.5px}.rw-ask-row{display:flex;gap:4px;flex-wrap:wrap}.rw-ask-row input{height:30px;width:auto;flex:1;min-width:0}.rw-ask-row input:first-child{flex:0 0 60px}.rw-summary{display:grid;gap:8px;padding:4px}.rw-more-info summary{cursor:pointer}.rw-more-info[open]{display:grid;gap:6px}.rw-reads{display:grid;gap:3px;font-size:12px}.rw-reads div{display:flex;gap:6px}.rw-reads b{min-width:40px}.rw-reads .muted{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.rw-val{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.rw-val b{font-size:18px}.rw-label{font-size:13px}.rw-ev{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--text-2)}.rw-how div{padding:1px 0}.rw-how .on{font-weight:600}.rw-q{font-weight:600;margin-top:2px}.rw-opts{display:grid;gap:4px}.rw-opts label{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.rw-opts label.on{border-color:var(--primary);background:var(--primary-soft)}.rw-opts input[type=radio],.rw-datum input[type=checkbox]{margin:0;width:auto;height:auto;flex:none}.rw-key{display:inline-grid;place-items:center;min-width:16px;height:16px;font-size:10px;border:1px solid var(--border-strong);border-radius:3px;color:var(--muted)}.rw-new{display:flex;gap:4px;width:100%;margin-left:22px}.rw-new input{height:28px}.rw-new input:first-child{width:64px}.rw-new input:last-child{flex:1;min-width:0}.rw-go{width:100%;justify-content:center;height:36px}.rw-kbd{margin-left:6px;font-size:10px;padding:0 4px;border:1px solid rgba(255,255,255,.5);border-radius:3px;opacity:.85}.rw-datum{display:flex;gap:6px;align-items:flex-start;padding:6px 8px;border:1px dashed var(--border-strong);border-radius:var(--radius);font-size:12.5px}.rw-decided{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rw .link{background:none;border:0;color:var(--primary);cursor:pointer;padding:0;text-align:left}.rw-list{flex:1;min-height:0;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.rw-list-head{position:sticky;top:0;padding:4px 8px;background:var(--surface-2);border-bottom:1px solid var(--border)}.rw-item{display:flex;align-items:center;gap:6px;width:100%;height:30px;padding:0 8px;border:0;border-bottom:1px solid var(--border);background:none;cursor:pointer;font:inherit;text-align:left;white-space:nowrap}.rw-item:hover{background:var(--surface-2)}.rw-item.on{background:var(--primary-soft);box-shadow:inset 3px 0 0 var(--primary)}.rw-item.accepted .rw-ic{color:var(--success)}.rw-item.rejected{color:var(--muted)}.rw-ic{width:14px;text-align:center}.rw-item b{min-width:48px}.rw-sec{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:12.5px;color:var(--text-2)}.rw-note{font-size:11px;color:var(--success)}@media(max-width:1000px){.rw{height:auto}.rw-body{grid-template-columns:1fr}.rw-view{height:65vh}}.dw-reset{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12.5px}.dw-reset ul{margin:4px 0 0;padding-left:18px}.gissue-sum{padding:6px 8px;border-radius:var(--radius);font-size:12.5px;margin-bottom:6px}.gissue-sum.ok{background:var(--success-bg);color:var(--success)}.gissue-sum.err{background:var(--danger-bg);color:var(--danger)}.gissue-group{margin-bottom:6px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);font-size:12.5px}.gissue-group.warn{border-color:#ecd39b;background:#fffaf0}.gissue-group.err{border-color:#efc2bf;background:#fff6f5}.gissue-group summary{cursor:pointer}.gissue-group p{margin:4px 0}.gissue-fix{display:grid;gap:4px;margin:4px 0}.gissue-fix:empty{display:none}.gissue-group .gissues{margin-top:4px}.phead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px 24px;flex-wrap:wrap;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)}.phead h1{font-size:24px;font-weight:700;line-height:1.4}.phead p{margin:0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;display:flex;flex-direction:column;gap:2px;color:inherit}a.stat:hover{border-color:var(--brand-border);text-decoration:none}.stat strong{font-size:24px;font-weight:700;line-height:1.3;font-variant-numeric:tabular-nums}.stat .lab{font-size:12px;color:var(--muted)}.stat .na{font-size:13px;color:var(--muted);font-weight:500}.cnt{display:inline-flex;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#f3f4f6;color:#374151;font-size:12px;align-items:center;justify-content:center}.alert{display:flex;gap:12px;padding:12px 16px;border-radius:var(--radius);border:1px solid;align-items:flex-start}.alert.warn{background:var(--warning-bg);border-color:#fde68a;color:#713f12}.alert.err{background:var(--danger-bg);border-color:#fecaca;color:#7f1d1d}.alert.info{background:var(--primary-soft);border-color:var(--brand-border);color:#7a3a00}.alert.good{background:var(--success-bg);border-color:#bbf7d0;color:#14532d}.steps7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.steps7 i{height:6px;border-radius:3px;background:#e5e7eb}.steps7 i.done{background:var(--success)}.steps7 i.cur{background:var(--brand)}.steps7 i.blocked{background:var(--danger)}.list{list-style:none;margin:0;padding:0}.list li{padding:12px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;align-items:center}.list li:last-child{border-bottom:0}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.timeline li{display:flex;gap:12px}.tdot{width:10px;height:10px;border-radius:50%;background:#9ca3af;margin-top:6px;flex:none}.tdot.g{background:var(--success)}.tdot.a{background:var(--warning)}.tdot.r{background:var(--danger)}.tdot.bl{background:var(--brand)}.notready{max-width:720px;margin:48px auto;text-align:center;display:grid;gap:12px;justify-items:center}.notready h1{font-size:24px}.cols3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px;align-items:start}.project-details{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;padding:16px;border-bottom:1px solid var(--border)}.filters .field{flex:1 1 150px;max-width:220px}.search{position:relative;flex:1 1 260px;max-width:400px}.search .icon{position:absolute;left:12px;top:12px;color:var(--muted)}.search input{padding-left:36px;height:40px}.tw{overflow-x:auto}.table .r{text-align:right}a.btn{text-decoration:none}.form-stack{display:grid;gap:16px}.req{color:var(--danger)}.field-error{font-size:12px;color:var(--danger)}input.err,select.err,textarea.err{border:2px solid var(--danger)}.kv{display:grid;grid-template-columns:160px minmax(0,1fr);gap:12px 16px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:500;overflow-wrap:anywhere}.ptabs{margin-bottom:16px}.danger-zone{border-color:#fecaca}.role-checks{display:flex;flex-wrap:wrap;gap:8px 20px}.role-checks label{display:inline-flex;align-items:center;gap:8px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.wf{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:16px}.wf div{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;background:var(--surface);display:grid;gap:2px}.wf div.on{border-color:var(--brand);background:var(--primary-soft)}.wf div.done{border-color:#bbf7d0;background:var(--success-bg)}@media(max-width:820px){.wf{grid-template-columns:1fr 1fr}}.chip{height:32px;padding:0 12px;border-radius:16px}.chip.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.stat.warn strong{color:var(--warning)}.stat.bad strong{color:var(--danger)}.sel{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:40px;height:40px;padding:0 10px 0 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer}.sel:hover:not(:disabled){border-color:#6b7280}.sel.open,.sel:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ff820033}.sel:disabled{background:#f3f4f6;border-color:var(--border);color:#4b5563;cursor:not-allowed}.sel-val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sel-ph{color:var(--muted)}.sel-chev{flex:none;color:var(--muted);transition:transform .15s}.sel.open .sel-chev{transform:rotate(180deg)}.sel-pop{position:fixed;z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 12px 28px #11182729;padding:4px;display:flex;flex-direction:column;max-height:300px}.sel-list{overflow:auto;min-height:0}.sel-search{margin:2px 2px 6px;height:34px;width:auto}.sel-opt{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:var(--radius);cursor:pointer;min-height:36px}.sel-opt[data-active=true]{background:#f3f4f6}.sel-opt.on{background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.sel-opt.dis{color:#9ca3af;cursor:not-allowed}.sel-group{padding:8px 10px 4px;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em}.sel-empty{padding:10px;color:var(--muted)}.rebar-table .sel,.cls-toolbar .sel,.cls-title-actions .sel,.qp-bar .sel{height:32px;min-height:32px}.rebar-table .sel{height:26px;min-height:26px;padding:0 4px 0 6px}input,textarea{min-height:40px;padding:8px 12px;border-color:var(--border-strong)}input[type=checkbox],input[type=radio]{min-height:0;width:16px;height:16px}textarea{padding:10px 12px}input:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ff820033}input[readonly]{background:#f3f4f6;border-color:var(--border);color:#374151}.field{gap:6px}.field-label{font-size:14px;font-weight:500;color:var(--text)}.field-hint{font-size:12px}.btn{height:40px;padding:0 16px;border-radius:6px}.btn-secondary{border-color:var(--border-strong)}.panel-head{padding:16px 24px;min-height:0}.panel-head h3{font-size:18px;font-weight:600}.panel-body{padding:24px}.table th{height:48px;font-weight:600;color:#374151;background:#f8fafc}.table td{padding:6px 16px;height:48px;vertical-align:middle}.table tr.sel td,.table.selectable tr.active td{background:var(--primary-soft)}.modal-backdrop{background:#11182780;place-items:start center;padding:72px 16px}.modal{box-shadow:0 20px 48px #11182740;max-height:calc(100vh - 144px)}.modal.wide{width:min(960px,100%)}.modal-head{height:auto;padding:20px 24px;gap:16px;flex-shrink:0;align-items:flex-start}.modal-head h3{font-size:18px;font-weight:600}.modal-body{padding:24px;display:flex;flex-direction:column;gap:16px;min-height:0}.modal-body p{margin:0}.modal-foot{padding:16px 24px;gap:12px;font-size:14px;flex-wrap:wrap;flex-shrink:0}.toasts{top:auto;bottom:24px;right:24px}.toast{background:#111827;color:#fff;padding:12px 12px 12px 16px;border-radius:6px;font-size:14px;align-items:center}.toast-danger{background:#7f1d1d}.empty{padding:48px 16px}.empty-title{font-size:16px}.notice{padding:12px 16px;font-size:14px;border:1px solid transparent;border-radius:6px}.notice.warning{border-color:#fde68a;color:#713f12}.notice.danger{border-color:#fecaca;color:#7f1d1d}.notice.info{background:var(--primary-soft);border-color:var(--brand-border);color:#7a3a00}.page-head{align-items:flex-start;margin-bottom:24px}.page-head p{margin-top:4px}.btn:disabled,.btn-primary:disabled{opacity:1;background:#f3f4f6;border-color:#e5e7eb;color:#4b5563}.btn-ghost:disabled{background:transparent;border-color:transparent;color:#9ca3af}.field-opt{color:var(--muted);font-weight:400}.modal-title{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}.modal-title p{margin:0}.login-hero{justify-content:space-between}.login-mark{width:56px;height:auto;display:block}.form-grid{gap:16px}.empty-start{padding:64px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.empty-start>svg{color:var(--muted)}.empty-start h2{font-size:18px}.empty-start p{margin:0}.step-pills{list-style:none;margin:0;padding:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;color:var(--muted)}.step-pills li:not([aria-hidden]){height:32px;padding:0 12px;border-radius:16px;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;color:var(--text-2);font-weight:500}.step-pills li.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.alert p{margin:0}.side .brand{padding:0 16px;border-top:4px solid var(--brand);box-sizing:border-box}.proj{background:#fff9f2}.nav-item.active{box-shadow:inset 3px 0 0 var(--brand)}.view{background:#575e61}.step-pills li:not([aria-hidden]){background:#f3f4f6;border:0;font-size:12px;color:#374151}.step-pills li.on{background:var(--brand);color:var(--on-brand)}.alert.info{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}.pill-info{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.back-link{justify-self:start;padding:0;height:auto;font-size:12px}.cls-heading{display:grid;gap:4px}.g2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.rv-split{display:grid;grid-template-columns:minmax(0,65fr) minmax(360px,35fr);gap:0;margin:-24px -24px -32px;min-height:calc(100vh - 64px);max-width:none!important}.rv-pdf{padding:16px 24px;background:#f1f5f9;min-width:0}.rv-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rv-bar .btn{height:32px;padding:0 8px}.rv-sep{width:1px;height:24px;background:var(--border)}kbd{font:inherit;font-size:11px;border:1px solid #9CA3AF;border-bottom-width:2px;border-radius:4px;padding:0 4px;background:#fff}.rv-ev{margin-top:8px;color:#334155}.rv-panel{background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;min-width:0;position:sticky;top:0;max-height:calc(100vh - 64px)}.rv-body{padding:24px;overflow:auto;flex:1;display:flex;flex-direction:column;gap:16px}.rv-foot{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.cmp{display:grid;grid-template-columns:minmax(96px,auto) minmax(0,1fr) minmax(0,1.4fr);gap:8px 12px;align-items:center}.cmp .h{font-size:12px;font-weight:600;color:var(--muted);padding-bottom:4px;border-bottom:1px solid var(--border)}.cmp-l{font-size:13px;font-weight:500}.cmp-ai{font-size:13px;color:var(--ai);overflow-wrap:anywhere}.cmp-v.edited .sel,.cmp-v.edited input{background:#fefce8;border-color:#ca8a04}.btn-success{background:var(--success);border-color:var(--success);color:#fff;font-weight:600}.btn-success:not(:disabled):hover{background:#166534}.btn-dangerSolid{background:var(--danger);border-color:var(--danger);color:#fff}.btn-dangerSolid:not(:disabled):hover{background:#991b1b}@media(max-width:1000px){.rv-split{grid-template-columns:1fr}.rv-panel{position:static;max-height:none}}.an-tabs{border-bottom:1px solid var(--border);margin:-8px 0 16px;height:auto}.an-tabs .tab{height:40px}.gtop{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:8px 12px;gap:8px}.gtop label,.gtop .muted{font-size:12px}.gtop .btn{height:32px;padding:0 12px}.rv-el{margin:0 -24px -32px;min-height:calc(100vh - 200px)}.note{font-size:12px;color:var(--muted);padding:8px 12px;background:#f8fafc;border-radius:6px;margin:0}.cls-dash-actions{display:flex;align-items:center;gap:10px;margin:14px 0 16px;flex-wrap:wrap}.cls-dash-btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-size:13.5px;font-weight:500;color:var(--text);cursor:pointer;transition:all .15s ease}.cls-dash-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.cls-dash-btn.active{border-color:#ff8200;background:#fff9f5;color:#d96800}.cls-dash-btn-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#f1f5f9;font-size:11.5px;font-weight:600;color:#475569}.cls-dash-btn.active .cls-dash-btn-badge{background:#ffedd5;color:#c2410c}.cls-dash-btn-ai{background:#6366f1!important;border-color:#6366f1!important;color:#fff!important;font-weight:600}.cls-dash-btn-ai:hover:not(:disabled){background:#4f46e5!important;border-color:#4f46e5!important}.cls-dash-btn-ai:disabled{opacity:.6;cursor:not-allowed}.cls-dash-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.cls-kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 20px;display:flex;flex-direction:column;box-shadow:0 1px 3px #00000008}.cls-kpi-label{font-size:13px;font-weight:500;color:var(--muted);margin-bottom:6px}.cls-kpi-val{font-size:26px;font-weight:700;color:var(--text);line-height:1.2}.cls-val-ok{color:#16a34a}.cls-val-warn{color:#ea580c}.cls-kpi-sub{font-size:12px;color:var(--muted);margin-top:4px}.cls-dash-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.cls-dash-group-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 18px;text-align:left;cursor:pointer;box-shadow:0 1px 3px #00000008;transition:all .15s ease}.cls-dash-group-card:hover{border-color:#cbd5e1;background:#fafafa}.cls-dash-group-card.on{border-color:#ff8200;box-shadow:0 0 0 2px #ff820033;background:#fffdfb}.cls-dash-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.cls-dash-group-title{font-size:14px;font-weight:700;color:var(--text)}.cls-dash-group-code{font-size:11.5px;color:var(--muted);letter-spacing:.5px;font-family:var(--mono)}.cls-dash-group-value{font-size:20px;font-weight:700;line-height:1.2;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.cls-dash-group-stat{font-size:12px;color:var(--muted)}.cls-status-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.cls-status-pill{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:12.5px;font-weight:500;color:#475569;cursor:pointer;transition:all .15s ease}.cls-status-pill:hover{background:#f8fafc;border-color:#cbd5e1}.cls-status-pill.on{background:#ff8200;border-color:#ff8200;color:#fff}.cls-pill-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.cls-status-pill.on .cls-pill-dot{background-color:#fff!important}.cls-pill-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#f1f5f9;font-size:11px;font-weight:600;color:#475569}.cls-status-pill.on .cls-pill-badge{background:#0003;color:#fff}.cls-quick-bar{display:flex;align-items:center;gap:8px;margin:10px 0 16px;flex-wrap:wrap;font-size:12px}.cls-quick-label{font-weight:600;color:var(--muted);margin-right:2px}.cls-quick-btn{height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px;cursor:pointer;transition:all .15s ease}.cls-quick-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.cls-quick-btn:disabled{opacity:.5;cursor:not-allowed}.cls-quick-clear{color:#dc2626;border-color:#fca5a5;background:#fef2f2}.cls-quick-clear:hover{background:#fee2e2}.cls-quick-hint{color:var(--muted);font-size:11.5px;margin-left:4px}@media(max-width:1024px){.cls-dash-kpis,.cls-dash-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.cls-dash-kpis,.cls-dash-groups{grid-template-columns:1fr}}.dw-rev-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px}.dw-rev-toolbar-field{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#374151}.dw-rev-toolbar-field .dw-rev-select{min-width:240px}.dw-rev-row-active td{background:#fffcf8}button.dw-rev-link-view{background:none;border:none;padding:0}button.dw-rev-link-view:disabled{color:#d1d5db;cursor:default}.dw-rev-state{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 10px;border-radius:10px;white-space:nowrap}.dw-rev-state.base{background:#f3f4f6;color:#374151}.dw-rev-state.mod{background:#fef3c7;color:#b45309}.dw-rev-state.carried{background:#dcfce7;color:#15803d}.dw-rev-state.none{background:#fff;color:#9ca3af;border:1px dashed #d1d5db}.dw-rev-legend{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px}.dw-rev-st{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 10px;border-radius:10px;white-space:nowrap;border:1px solid transparent}.dw-rev-st.ok{background:#f6ffed;color:#389e0d;border-color:#b7eb8f}.dw-rev-st.mod{background:#fff7e6;color:#d46b08;border-color:#ffd591}.dw-rev-st.new{background:#e6f4ff;color:#0958d9;border-color:#91caff}.dw-rev-st.bad{background:#fff1f0;color:#cf1322;border-color:#ffa39e}.dw-rev-st.keep{background:#f5f5f5;color:#595959;border-color:#d9d9d9}.dw-rev-match td{vertical-align:middle}.dw-rev-match-row.mod td:first-child{box-shadow:inset 3px 0 #fa8c16}.dw-rev-match-row.new td:first-child{box-shadow:inset 3px 0 #1677ff}.dw-rev-match-row.bad td:first-child{box-shadow:inset 3px 0 #f5222d}.dw-rev-match-row.ok td:first-child{box-shadow:inset 3px 0 #52c41a}.dw-rev-match-row.keep td{background:#fafafa}.dw-rev-page-cell{display:flex;align-items:center;gap:10px;min-width:0}.dw-rev-thumb{flex:none;width:96px;height:68px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;padding:0;overflow:hidden;cursor:zoom-in;display:flex;align-items:center;justify-content:center}.dw-rev-thumb img{max-width:100%;max-height:100%;object-fit:contain;display:block}.dw-rev-thumb:hover{border-color:#ff8200}.dw-rev-thumb.empty{cursor:default;font-size:11px;color:#9ca3af;border-style:dashed}.dw-rev-subnote.warn{color:#d97706}@media(max-width:720px){.dw-rev-thumb{width:64px;height:46px}.dw-rev-toolbar-field .dw-rev-select{min-width:0;width:100%}}.cls-filepick{position:relative}.cls-filepick-btn{height:32px;padding:0 12px;border:1px solid var(--border-strong,#d1d5db);border-radius:6px;background:var(--surface,#fff);font-size:12.5px;color:#374151;cursor:pointer;display:inline-flex;align-items:center;gap:6px;max-width:280px}.cls-filepick-btn b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cls-filepick-btn.partial{border-color:#ff8200;background:#fff9f2}.cls-filepick-btn:disabled{opacity:.5;cursor:default}.cls-filepick-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:50;min-width:300px;max-width:min(420px,calc(100vw - 32px));max-height:360px;overflow:auto;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 12px 32px #11182724;padding:6px}.cls-filepick-actions{display:flex;gap:12px;padding:4px 8px 8px;border-bottom:1px solid #f3f4f6;margin-bottom:4px}.cls-filepick-actions button{background:none;border:none;color:#ff8200;font-size:12px;font-weight:600;cursor:pointer;padding:0}.cls-filepick-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:12.5px}.cls-filepick-item:hover{background:#f9fafb}.cls-filepick-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.cls-reset-files{margin:10px 0;padding-left:18px;font-size:13px;line-height:1.7;max-height:200px;overflow:auto}@media(max-width:720px){.cls-filepick-menu{left:0;right:auto}}.dw-rev-st.none{background:#f5f5f5;color:#8c8c8c;border-color:#d9d9d9}.dw-rev-st.drop{background:#fff1f0;color:#cf1322;border-color:#ffa39e}.dw-rev-match-row.drop td:first-child{box-shadow:inset 3px 0 #ff4d4f}.dw-rev-match-row.drop .dw-rev-thumb{opacity:.55}.dw-rev-st.wait{background:#fffbe6;color:#ad6800;border-color:#ffe58f}.dw-rev-match-row.wait td:first-child{box-shadow:inset 3px 0 #faad14}.dw-rev-match-row.none td:first-child{box-shadow:inset 3px 0 #bfbfbf}.dw-rev-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}.dw-rev-mode-opt{display:flex;gap:8px;align-items:flex-start;border:1px solid #d9d9d9;border-radius:6px;padding:8px 10px;cursor:pointer;background:#fff}.dw-rev-mode-opt.on{border-color:#ff8200;background:#fff7ed}.dw-rev-mode-opt input{margin-top:3px}.dw-rev-mode-opt b{display:block;font-size:13px}.dw-rev-mode-opt small{display:block;color:#8c8c8c;font-size:11.5px;line-height:1.4}@media(max-width:640px){.dw-rev-mode{grid-template-columns:1fr}}::selection{background:var(--brand-border);color:var(--text)}input,textarea{caret-color:var(--primary)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}.field,.form-grid>*{min-width:0}.cls-kpi-val,.cnt,.nav-badge{font-variant-numeric:tabular-nums}.modal-head>.icon-btn{flex-shrink:0}.toast>span{min-width:0;overflow-wrap:anywhere}@media(max-width:820px){.side{border-right:0;border-bottom:1px solid var(--border)}.side .nav{gap:4px;padding:12px 16px}.side .nav-section{flex-basis:100%;margin:8px 12px 4px}.top{padding:12px 16px;gap:12px}.top-right{gap:8px}.content{padding:20px 16px 24px}.project-details{grid-template-columns:minmax(0,1fr)}.rv-split{margin:-20px -16px -24px}.rv-el{margin:0 -16px -24px}}@media(max-width:560px){.page-head h1,.phead h1{font-size:22px}.panel-head{padding:16px;flex-wrap:wrap}.panel-body{padding:16px}.form-grid,.g2{grid-template-columns:minmax(0,1fr)}.kv{grid-template-columns:minmax(0,1fr);gap:4px}.kv dd:not(:last-child){margin-bottom:12px}.modal-backdrop{padding:16px}.modal{max-height:calc(100dvh - 32px)}.modal-head,.modal-body,.modal-foot{padding:16px}.toasts{left:16px;right:16px;bottom:16px;max-width:none}}.dw-sup-note{font-size:12px;color:#6b7280;margin:4px 0 0}.dw-rev-scroll{overflow-x:auto}.dw-rev-table-revs{min-width:760px}.dw-rev-table-revs th{white-space:nowrap}.dw-rev-table-revs td:nth-child(1),.dw-rev-table-revs td:nth-child(2),.dw-rev-table-revs td:nth-child(5){white-space:nowrap}.dw-rev-table-revs td:nth-child(3){max-width:0;width:40%}.dw-rev-table-revs td:nth-child(4) .dw-rev-state{white-space:nowrap}.dw-rev-table-revs .dw-rev-action-cell{flex-wrap:nowrap;white-space:nowrap}.dw-rev-btn-apply-active,.dw-rev-pill-active,button.dw-rev-link-view{white-space:nowrap}.dw-rev-files{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:12.5px}.dw-rev-ellipsis{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dw-rev-page-cell>div{min-width:0}.dw-rev-match td{max-width:320px}.dw-rev-banner-body{min-width:0;overflow-wrap:anywhere}.dw-rev-section-head{flex-wrap:wrap}
