:root{color-scheme:light;--color-brand-50: oklch(.98 .012 165);--color-brand-100: oklch(.95 .025 165);--color-brand-200: oklch(.9 .045 165);--color-brand-300: oklch(.82 .07 165);--color-brand-400: oklch(.72 .09 165);--color-brand-500: oklch(.62 .1 165);--color-brand-600: oklch(.54 .1 165);--color-brand-700: oklch(.45 .085 165);--color-brand-800: oklch(.36 .065 165);--color-brand-900: oklch(.27 .045 165);--color-pv-50: oklch(.98 .012 165);--color-pv-100: oklch(.94 .03 165);--color-pv-500: oklch(.6 .1 165);--color-pv-600: oklch(.52 .095 165);--color-pv-700: oklch(.43 .08 165);--color-gold-50: oklch(.98 .012 85);--color-gold-100: oklch(.94 .035 85);--color-gold-300: oklch(.82 .08 85);--color-gold-500: oklch(.68 .11 85);--color-gold-600: oklch(.58 .1 85);--color-gold-700: oklch(.46 .08 85);--color-success-bg: oklch(.94 .05 155);--color-success-text: oklch(.38 .1 155);--color-warning-bg: oklch(.95 .06 85);--color-warning-text: oklch(.43 .12 70);--color-error-bg: oklch(.94 .045 25);--color-error-text: oklch(.42 .15 25);--color-info-bg: oklch(.96 .018 165);--color-info-text: oklch(.45 .085 165);--color-on-brand: oklch(.995 .005 165);--color-error-border: oklch(.68 .08 25);--color-bg: oklch(.975 .008 165);--color-surface: oklch(.995 .005 165 / .96);--color-surface-solid: oklch(.995 .005 165);--color-surface-muted: oklch(.965 .01 165);--color-border: oklch(.34 .012 165 / .14);--color-border-strong: oklch(.58 .045 85 / .34);--color-text: oklch(.25 .012 165);--color-text-secondary: oklch(.43 .012 165);--color-text-tertiary: oklch(.56 .01 165);--color-brand-shadow: oklch(.52 .095 165 / .22);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 999px;--shadow-sm: 0 1px 3px oklch(.25 .02 165 / .06);--shadow-md: 0 8px 22px oklch(.32 .025 165 / .08);--shadow-lg: 0 16px 42px oklch(.32 .025 165 / .12);--text-xs: 12px;--text-sm: 14px;--text-base: 14px;--text-md: 16px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 28px;--text-3xl: 32px;--tx-type-page-title: 24px;--tx-type-section-title: 16px;--tx-type-card-title: 14px;--tx-type-body: 14px;--tx-type-label: 12px;--tx-type-caption: 12px;--tx-type-data: 14px;--tx-type-kpi: 20px;--tx-type-tag: 12px;--transition-fast: .16s ease-out;--transition-base: .26s ease-out;--page-max: 1440px;--safe-area-inset-top: env(safe-area-inset-top, 0px);--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px)}[data-theme=dark]{--color-bg: oklch(.18 .012 165);--color-surface: oklch(.22 .012 165 / .96);--color-surface-solid: oklch(.24 .012 165);--color-surface-muted: oklch(.28 .012 165);--color-border: oklch(.9 .008 165 / .14);--color-text: oklch(.96 .008 165);--color-text-secondary: oklch(.84 .008 165);--color-text-tertiary: oklch(.68 .008 165)}.tx-page{min-height:100vh;min-width:0;max-width:100%;padding:clamp(16px,2vw,28px);padding-top:calc(clamp(16px,2vw,28px) + var(--safe-area-inset-top));background:radial-gradient(circle at top left,rgba(111,159,141,.08),transparent 34%),linear-gradient(180deg,#fbfdfb 0%,var(--color-bg) 100%);color:var(--color-text)}.tx-page-inner{width:min(var(--page-max),100%);min-width:0;margin:0 auto}.tx-page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:var(--space-6);border:1px solid var(--color-border-strong);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-md)}.tx-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:var(--space-5)}.tx-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4)}.tx-dashboard-grid>*,.tx-metric-grid>*{min-width:0}@media(max-width:1024px){.tx-dashboard-grid{grid-template-columns:1fr}}@media(max-width:768px){.tx-page{padding:12px;padding-bottom:calc(76px + var(--safe-area-inset-bottom))}.tx-page-head{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);padding:var(--space-4)}.tx-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.tx-page{padding-right:10px;padding-left:10px}.tx-metric-grid{grid-template-columns:minmax(0,1fr)}}.tx-btn,.el-button{min-height:36px;border-radius:var(--radius-md);transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.el-button:hover,.tx-btn:hover{box-shadow:0 2px 8px #5f8f7e29;transform:translateY(-1px)}.el-button,.tx-btn{font-size:var(--tx-type-body)}.el-button:active,.tx-btn:active{transform:translateY(0) scale(.99)}.el-button:focus-visible,.tx-btn:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px}.el-button--primary{--el-button-text-color: #ffffff !important;--el-button-bg-color: var(--color-brand-600) !important;--el-button-border-color: var(--color-brand-600) !important;--el-button-hover-text-color: #ffffff !important;--el-button-hover-bg-color: var(--color-brand-700) !important;--el-button-hover-border-color: var(--color-brand-700) !important;--el-button-active-text-color: #ffffff !important;--el-button-active-bg-color: var(--color-brand-800) !important;--el-button-active-border-color: var(--color-brand-800) !important}.el-button--primary.is-plain{--el-button-text-color: var(--color-brand-700) !important;--el-button-bg-color: var(--color-surface-solid) !important;--el-button-border-color: var(--color-brand-300) !important;--el-button-hover-text-color: #ffffff !important;--el-button-hover-bg-color: var(--color-brand-700) !important;--el-button-hover-border-color: var(--color-brand-700) !important}.el-button--primary.is-link{--el-button-text-color: var(--color-brand-700) !important;--el-button-bg-color: transparent !important;--el-button-border-color: transparent !important;--el-button-hover-text-color: var(--color-brand-800) !important;--el-button-hover-bg-color: transparent !important;--el-button-hover-border-color: transparent !important;--el-button-active-text-color: var(--color-brand-900) !important;color:var(--color-brand-700)!important}.el-button.is-link{min-height:28px;padding:0 2px;color:var(--color-brand-700);text-decoration:underline;text-underline-offset:3px;box-shadow:none}@media(max-width:768px){.tx-btn,.el-button{min-height:44px;min-width:44px}}.el-input__wrapper,.el-select__wrapper,.el-textarea__inner{border-radius:var(--radius-md);box-shadow:0 0 0 1px var(--color-border) inset}.el-input__wrapper:hover,.el-select__wrapper:hover,.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--color-brand-300) inset}.el-form-item__label{color:var(--color-text-secondary);font-weight:700}@media(max-width:768px){.el-input__inner,.el-textarea__inner{font-size:16px}.el-form--inline{display:block;width:100%}.el-form--inline .el-form-item{display:flex;width:100%;margin-right:0}.el-form--inline .el-form-item__content,.el-form--inline .el-input,.el-form--inline .el-select,.el-form--inline .el-date-editor{width:100%;min-width:0}}.tx-badge{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--tx-type-tag);font-weight:700;white-space:nowrap}.el-tag{font-size:var(--tx-type-tag);font-weight:600}.tx-badge--success,.el-tag.el-tag--success{background:var(--color-success-bg);color:var(--color-success-text);border-color:transparent}.tx-badge--warning,.el-tag.el-tag--warning{background:var(--color-warning-bg);color:var(--color-warning-text);border-color:transparent}.tx-badge--danger,.el-tag.el-tag--danger{background:var(--color-error-bg);color:var(--color-error-text);border-color:transparent}.tx-badge--info,.el-tag.el-tag--primary,.el-tag.el-tag--info{background:var(--color-info-bg);color:var(--color-info-text);border-color:transparent}.tx-card{border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-md)}.tx-card--clickable{cursor:pointer}.tx-card--clickable:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.tx-card-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.el-table{--el-table-header-bg-color: var(--color-surface-muted);--el-table-header-text-color: var(--color-text-secondary);--el-table-row-hover-bg-color: var(--color-brand-50);width:100%;max-width:100%;border-radius:var(--radius-lg);font-size:var(--tx-type-data)}.el-table__inner-wrapper,.el-table__body-wrapper,.el-table .el-scrollbar__wrap{min-width:0;max-width:100%}.el-table__body-wrapper,.el-table .el-scrollbar__wrap{overflow-x:auto!important;-webkit-overflow-scrolling:touch}.el-table th.el-table__cell{height:44px;font-size:var(--tx-type-label);font-weight:700}.el-table .el-table__cell{padding:10px 0}.el-table__row{min-height:48px}@media(max-width:768px){.el-table{height:auto!important;font-size:var(--text-sm)}.el-table__inner-wrapper,.el-table__body-wrapper{height:auto!important}.el-table__body-wrapper{max-height:65vh}.el-table__fixed,.el-table__fixed-left,.el-table__fixed-right,.el-table__fixed-right-patch{display:none!important}}.el-progress-bar__outer{background:#edf2ee}.el-progress-bar__inner{background:linear-gradient(90deg,var(--color-pv-500),var(--color-brand-500));transition:width .42s ease-out}.tx-progress-rail{height:8px;overflow:hidden;border-radius:var(--radius-full);background:#edf2ee}.tx-progress-bar{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--color-pv-500),var(--color-brand-500))}.tx-empty{display:grid;place-items:center;gap:var(--space-2);min-height:160px;color:var(--color-text-tertiary);text-align:center}.tx-loading-skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,#eef2f0 25%,#f8faf9 37%,#eef2f0 63%);background-size:400% 100%;animation:tx-skeleton 1.2s ease-in-out infinite}@keyframes tx-skeleton{0%{background-position:100% 50%}to{background-position:0 50%}}.m-0{margin:0}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.grid{display:grid}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-brand{color:var(--color-brand-700)}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hidden-mobile{display:initial}.show-mobile-only{display:none}@media(max-width:768px){.hidden-mobile{display:none!important}.show-mobile-only{display:block}}html{scroll-behavior:smooth;max-width:100%;-webkit-text-size-adjust:100%}body{max-width:100%;color:var(--color-text);background:var(--color-bg);font-size:var(--tx-type-body);line-height:1.5}#app,#app>*,main{min-width:0;max-width:100%}*{-webkit-tap-highlight-color:transparent}a,button,[role=button]{-webkit-tap-highlight-color:transparent;touch-action:manipulation}:where(a[href],button,[role=button],input,textarea,select):focus-visible{outline:2px solid var(--color-brand-500);outline-offset:3px}.el-input__wrapper:focus-within,.el-select__wrapper:focus-within,.el-textarea__inner:focus-visible{box-shadow:0 0 0 2px var(--color-brand-500) inset!important}.phase-decision-overlay,.project-delete-overlay{z-index:5000!important;background:#18231e80!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.project-delete-overlay .el-overlay-message-box{display:flex!important;position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100dvh;align-items:center;justify-content:center;box-sizing:border-box;overflow:auto;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom))}.project-delete-message-box{--el-messagebox-content-color: var(--color-text);width:min(440px,calc(100vw - 32px))!important;max-width:440px!important;margin:auto!important;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg)!important;background:var(--color-surface-solid, #ffffff)!important;color:var(--color-text)!important;opacity:1!important;box-shadow:var(--shadow-lg);backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.project-delete-message-box .el-message-box__header,.project-delete-message-box .el-message-box__content,.project-delete-message-box .el-message-box__btns{background:#fff!important}.project-delete-message-box .el-message-box__header{padding:22px 24px 10px}.project-delete-message-box .el-message-box__title{color:var(--color-text)!important;font-size:18px;font-weight:700}.project-delete-message-box .el-message-box__content{padding:8px 24px 18px;color:var(--color-text-secondary)!important;font-size:14px;line-height:1.7}.project-delete-message-box .el-message-box__message{color:inherit!important}.project-delete-message-box .el-message-box__btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px 24px 22px;border-top:1px solid var(--color-border)}.project-delete-message-box .el-message-box__btns .el-button{width:100%;min-height:42px;margin:0}.project-delete-message-box .project-delete-confirm-button{border-color:var(--el-color-danger)!important;background:var(--el-color-danger)!important;color:#fff!important}.phase-decision-overlay .el-overlay-message-box{display:flex!important;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;overflow:auto;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));pointer-events:auto;-webkit-overflow-scrolling:touch}.phase-decision-overlay .el-overlay-message-box:after{display:none}.phase-decision-message-box{--el-messagebox-content-color: var(--color-text);display:flex!important;flex-direction:column;width:min(520px,calc(100vw - 32px))!important;max-width:520px!important;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0!important;overflow:hidden!important;background:var(--color-surface-solid, #ffffff)!important;color:var(--color-text);opacity:1!important;border:1px solid var(--color-border);border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-lg);backdrop-filter:none!important;-webkit-backdrop-filter:none!important;pointer-events:auto}.phase-decision-message-box .el-message-box__header,.phase-decision-message-box .el-message-box__content,.phase-decision-message-box .el-message-box__btns{background:#fff!important}.phase-decision-message-box .el-message-box__header,.phase-decision-message-box .el-message-box__btns{flex:0 0 auto}.phase-decision-message-box .el-message-box__header{padding:22px 24px 12px}.phase-decision-message-box .el-message-box__title{font-size:18px;font-weight:700;line-height:1.4}.phase-decision-message-box .el-message-box__content{min-height:0;overflow-y:auto;padding:0 24px;line-height:1.65;-webkit-overflow-scrolling:touch}.phase-decision-message-box .el-message-box__message{width:100%;text-align:left}.phase-decision-content,.phase-decision-intro{margin:0}.phase-decision-intro{color:var(--color-text-secondary);font-size:14px;line-height:1.6}.phase-decision-intro strong{color:var(--color-text)}.phase-decision-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.phase-decision-option{display:flex;min-width:0;min-height:96px;flex-direction:column;gap:6px;box-sizing:border-box;padding:14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.phase-decision-option strong{color:var(--color-text);font-size:15px;line-height:1.4}.phase-decision-option span{color:var(--color-text-secondary);font-size:13px;line-height:1.55}.phase-decision-option--skip{border-color:color-mix(in srgb,var(--el-color-warning) 42%,var(--color-border))}.phase-decision-option--complete{border-color:color-mix(in srgb,var(--color-brand-500) 38%,var(--color-border))}.phase-decision-message-box .el-message-box__input textarea{min-height:112px;resize:vertical}.phase-decision-message-box .el-message-box__btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px 24px 22px}.phase-decision-message-box .el-message-box__btns .el-button{width:100%;min-width:0;min-height:44px;margin-left:0}.phase-decision-message-box .phase-decision-skip-button,.phase-decision-message-box .phase-decision-skip-confirm-button{border-color:var(--el-color-warning);color:var(--el-color-warning-dark-2)}.phase-decision-message-box .phase-decision-complete-button{border-color:var(--color-brand-500);background:var(--color-brand-500);color:#fff}.tx-skip-link{position:fixed;z-index:10000;top:max(8px,var(--safe-area-inset-top));left:12px;padding:9px 14px;border-radius:var(--radius-md);background:var(--color-surface-solid);box-shadow:var(--shadow-md);color:var(--color-brand-700);font-size:var(--text-base);font-weight:700;opacity:0;pointer-events:none;transform:translateY(-140%);transition:opacity var(--transition-fast),transform var(--transition-fast)}.tx-skip-link:focus-visible{opacity:1;pointer-events:auto;transform:translateY(0)}#app-content:focus{outline:none}.el-scrollbar__wrap,.el-table__body-wrapper,.filter-scroll,.station-list,.timeline-panel,.log-box,.progress-feed,.progress-list,.notice-list,.health-board,.load-list,.stuck-list,.compare-table{-webkit-overflow-scrolling:touch}.tx-page-enter{animation:tx-page-enter .3s linear both}@keyframes tx-page-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){input,textarea,select,.el-input__inner,.el-textarea__inner{font-size:16px!important}.phase-decision-overlay .el-overlay-message-box{align-items:center!important;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))}.phase-decision-message-box{width:100%!important;max-width:520px!important;max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.phase-decision-message-box .el-message-box__header{padding:18px 16px 10px}.phase-decision-message-box .el-message-box__content{padding:0 16px}.phase-decision-message-box .el-message-box__btns{padding:12px 16px 18px}.phase-decision-message-box .el-message-box__btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.phase-decision-message-box .el-message-box__btns .el-button{width:100%;min-width:0}}@media(hover:none){.panel:hover,.tx-card:hover,.tx-card--clickable:hover,.module-tab:hover,.el-button:hover,.tx-btn:hover{transform:none!important}}@media(hover:hover)and (pointer:fine){.tx-card--clickable:hover,.module-tab:hover,.el-button:hover,.tx-btn:hover{will-change:transform}}:root{--vi-white: #fbfaf6;--vi-surface: #ffffff;--vi-frost: #f7f5ee;--vi-gold: #c8ad73;--vi-gold-soft: #eee5d2;--vi-gold-hover: #b79a5e;--vi-green: #6f9f8d;--vi-green-soft: #edf5ef;--vi-green-hover: #5f8f7e;--vi-ink: #1f2a24;--vi-muted: #6f766f;--vi-line: #e6dfcf;--vi-line-green: #d7e4dc;--vi-shadow: 0 10px 30px rgba(111, 95, 55, .08);--vi-soft-shadow: 0 4px 14px rgba(111, 95, 55, .08);--vi-radius: 8px;--el-color-primary: var(--vi-green);--el-color-primary-light-3: #93b8aa;--el-color-primary-light-5: #b7d1c6;--el-color-primary-light-7: #d7e8df;--el-color-primary-light-8: #e4f0e9;--el-color-primary-light-9: var(--vi-green-soft);--el-color-primary-dark-2: var(--vi-green-hover);--el-color-success: var(--vi-green);--el-color-warning: var(--vi-gold);--el-color-info: var(--vi-muted);--el-border-radius-base: var(--vi-radius);--el-border-color: var(--vi-line);--el-border-color-light: #eee8da;--el-fill-color-light: var(--vi-frost);--el-text-color-primary: var(--vi-ink);--el-text-color-regular: var(--vi-muted);color:var(--vi-ink);background:var(--vi-white);font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:#e6dfcf59;border-radius:999px}*::-webkit-scrollbar-thumb{background:#c8ad738c;border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:#6f9f8dad}body{min-width:320px;margin:0;background:radial-gradient(circle at 12% 8%,rgba(200,173,115,.12),transparent 28%),linear-gradient(180deg,var(--vi-white) 0%,#f6f4ec 100%)}button,input{font:inherit}#app{min-height:100vh}.app-shell{min-height:100vh;padding:16px 20px;animation:page-soft-in .3s linear both}.app-shell h1,.page-title{color:var(--vi-ink);font-size:var(--tx-type-page-title);font-weight:700}.panel-title h2,.card-title,.archive-card>span{color:var(--vi-ink);font-size:var(--tx-type-section-title);font-weight:700}.el-form-item__label,.field-label{color:var(--vi-muted);font-size:var(--tx-type-data);font-weight:400}.el-table .cell,.field-value{font-size:var(--tx-type-data)}.field-value,.metric-value{color:var(--vi-ink);font-weight:700}.top-bar{position:relative;display:flex;align-items:center;justify-content:center;gap:16px;min-height:74px;padding:2px 24px 14px;border-bottom:1px solid var(--vi-line)}.top-actions{position:absolute;right:0;top:12px;display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;max-width:350px}.top-actions .el-button{min-height:32px;padding:7px 11px;white-space:nowrap}@media(max-width:768px){.top-bar{padding-right:0;padding-left:0;flex-direction:column}.top-actions{position:static;max-width:none;justify-content:center}}.brand-center{display:grid;place-items:center;gap:4px;text-align:center}.module-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;width:min(960px,100%);min-width:0;margin:14px auto 0}.module-tab{display:inline-flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;text-decoration:none;min-height:46px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);padding:9px 18px;background:#ffffffc7;color:var(--vi-ink);font-size:16px;font-weight:700;line-height:1.25;text-overflow:ellipsis;white-space:nowrap;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.module-tab:hover{border-color:var(--vi-gold);box-shadow:0 1px 8px #c8ad731f}.module-tab.active{border-color:var(--vi-green);background:linear-gradient(180deg,var(--vi-green-soft),#ffffff);color:var(--vi-green-hover);font-weight:700}.v4-entry-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:min(1180px,100%);margin:14px auto 0}.v4-entry-strip button{display:grid;gap:5px;min-height:72px;padding:12px 14px;border:1px solid rgba(196,165,93,.34);border-radius:var(--vi-radius);background:linear-gradient(180deg,#fffffff5,#f4f8f3e6);color:var(--vi-ink);text-align:left;cursor:pointer;box-shadow:0 8px 20px #2747370f;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.v4-entry-strip button:hover{border-color:var(--vi-green);box-shadow:0 10px 22px #4a74521a;transform:translateY(-1px)}.v4-entry-strip span{color:var(--vi-gold-hover);font-size:16px;font-weight:700}.v4-entry-strip strong{color:var(--vi-green-hover);font-size:13px;font-weight:600;line-height:1.45}.top-bar h1,.login-brand h1{margin:0;color:var(--vi-ink);font-size:30px;font-weight:700;letter-spacing:0}.system-name,.company-name,.login-brand p{margin:0 0 6px;color:var(--vi-muted);font-size:13px}.summary-strip{display:grid;grid-template-columns:repeat(7,minmax(112px,1fr));gap:8px;margin:10px 0 12px}.project-summary-strip{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:6px;margin:6px 0 8px}.project-summary-strip .summary-item{grid-template-columns:minmax(0,1fr);gap:4px;min-height:46px;min-width:0;overflow:hidden;padding:5px 8px}.project-summary-strip .summary-item span{font-size:12px}.project-summary-strip .summary-item strong{align-self:baseline;margin-top:0;font-size:12px;line-height:1.25}.project-summary-strip .summary-item em{align-self:baseline;min-width:0;overflow:hidden;margin:0;font-size:12px;font-weight:600;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.summary-strip-tasks{grid-template-columns:repeat(4,minmax(138px,1fr));gap:10px}.summary-strip-tasks .summary-item{display:flex;min-height:54px;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;text-align:left}.summary-strip-tasks .summary-item span{color:var(--vi-muted);font-size:13px;font-weight:600;line-height:1.25}.summary-strip-tasks .summary-item strong{flex:0 0 auto;margin-top:0;color:var(--vi-green-hover);font-size:12px;font-weight:700;line-height:1.25}.summary-item>span,.summary-item>strong,.summary-item>em{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-note{margin:-6px 0 10px;color:var(--vi-muted);font-size:12px;text-align:center}.dashboard-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:16px}.module-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:16px}.admin-shell{display:grid;gap:16px}.admin-card-grid{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));gap:14px}.admin-module-card{display:grid;grid-template-columns:42px minmax(0,1fr);grid-template-rows:auto minmax(44px,auto) auto;min-height:152px;align-content:start;gap:9px 10px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffeb;box-shadow:var(--vi-soft-shadow);color:var(--vi-ink);cursor:pointer;padding:14px;text-align:left;transition:border-color .2s linear,box-shadow .2s linear,transform .2s linear}.admin-module-card:hover{border-color:var(--vi-gold);box-shadow:0 8px 22px #6f5f371f;transform:translateY(-2px)}.admin-module-icon{display:grid;width:42px;height:42px;place-items:center;border-radius:var(--vi-radius);background:var(--vi-green-soft);color:var(--vi-green-hover);font-weight:800;grid-column:1;grid-row:1}.admin-module-card strong{grid-column:2;grid-row:1;align-self:center;min-width:0;color:var(--vi-ink);font-size:var(--tx-type-card-title);line-height:1.35}.admin-module-card p{grid-column:1 / -1;grid-row:2;margin:0;color:var(--vi-muted);font-size:var(--tx-type-body);line-height:1.55;overflow-wrap:anywhere}.admin-module-card em{grid-column:1 / -1;grid-row:3;align-self:end;color:var(--vi-gold-hover);font-size:var(--tx-type-data);font-style:normal;font-weight:700}.summary-strip-admin .summary-item em{display:none}.admin-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffdb;box-shadow:var(--vi-soft-shadow);padding:12px 14px}.admin-detail-head span{color:var(--vi-ink);font-weight:800}.development-dashboard{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:16px}.development-dashboard-detail{grid-template-columns:minmax(0,1fr)}.development-main,.development-side{min-width:0}.development-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}.development-tool-card{display:grid;min-height:126px;align-content:space-between;gap:6px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#fffffff7,#f7f5eedb);box-shadow:0 8px 20px #2a52460d;padding:10px;animation:panel-soft-in .3s linear both}.development-tool-card-green{border-top:3px solid var(--vi-green)}.development-tool-card-gold{border-top:3px solid var(--vi-gold)}.development-tool-top,.development-tool-footer{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.development-tool-footer{min-width:0;align-items:center}.development-tool-footer .el-tag{min-width:0;max-width:100%;flex:1 1 auto;overflow:hidden}.development-tool-footer .el-tag__content{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.development-tool-footer .el-button{flex:0 0 auto;margin:0;white-space:nowrap}.development-tool-top>div{display:flex;min-width:0;align-items:baseline;gap:6px}.development-tool-top>div h3{order:-1;flex:0 0 auto;margin-top:0;white-space:nowrap}.development-tool-top>div span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.development-tool-top span{color:var(--vi-muted);font-size:var(--tx-type-label)}.development-tool-top h3{margin:4px 0 0;color:var(--vi-ink);font-size:var(--tx-type-card-title);font-weight:700}.development-tool-top strong{display:grid;min-width:48px;min-height:34px;place-items:center;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:var(--vi-green-soft);color:var(--vi-green-hover);font-size:var(--tx-type-label)}.development-tool-card-gold .development-tool-top strong{background:var(--vi-gold-soft);color:var(--vi-gold-hover)}.development-tool-card p{margin:0;color:var(--vi-muted);font-size:var(--tx-type-body);line-height:1.35}.solution-workspace{margin:18px 14px 14px;padding:18px;border:1px solid rgba(198,174,113,.32);border-radius:var(--vi-radius);background:linear-gradient(180deg,#fffffffa,#faf8f2d1);box-shadow:0 14px 32px #344f3e14}.solution-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.solution-project-row{display:grid;grid-template-columns:90px minmax(260px,1fr);gap:12px;align-items:center;margin:14px 0 16px;color:var(--vi-green-hover);font-weight:700}.linked-solution-assets{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border:1px solid #dbe7e2;border-radius:12px;background:#f4fbf8;color:#155e55}.solution-form{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:8px 14px}.solution-form .el-form-item{margin-bottom:6px}.solution-upload-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin-top:14px}.solution-upload-box{display:grid;gap:8px;align-content:start;padding:14px;border:1px solid rgba(137,164,117,.28);border-radius:var(--vi-radius);background:#ffffffc7}.solution-upload-box .el-tag{justify-self:start}.solution-upload-box strong,.solution-history strong,.solution-validation strong{color:var(--vi-green-hover);font-size:14px}.solution-upload-box span,.solution-note{color:var(--vi-muted);font-size:12px}.solution-note{margin-top:12px;padding:10px 12px;border-left:3px solid var(--vi-gold);background:var(--vi-gold-soft);border-radius:8px}.solution-validation{display:grid;gap:10px;margin-top:14px;padding:14px;border-radius:var(--vi-radius);background:var(--vi-green-soft)}.solution-check-list{display:flex;flex-wrap:wrap;gap:8px}.solution-check-list span{padding:6px 9px;border:1px solid rgba(198,174,113,.28);border-radius:999px;color:var(--vi-muted);background:#ffffffc2;font-size:12px}.solution-check-list span.pass{border-color:#7b997057;color:var(--vi-green-hover)}.solution-history{display:grid;gap:10px;margin-top:14px}.wide-panel{min-width:0}.panel-table,.side-panel{border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffe6;box-shadow:var(--vi-soft-shadow);animation:panel-soft-in .3s linear both}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--vi-line)}.panel-title>div:first-child{display:flex;min-width:0;flex:1 1 auto;align-items:baseline;gap:8px}.panel-title>div:first-child h2{flex:0 0 auto;white-space:nowrap}.panel-title>div:first-child>span,.panel-title>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-title h2{margin:0;color:var(--vi-ink);font-size:var(--tx-type-section-title)}.panel-title span,.table-sub,.task-mini span{color:var(--vi-muted);font-size:var(--tx-type-label)}.panel-title.compact{padding:12px}.project-list-title{align-items:center;padding:8px 10px}.project-tools{display:flex;flex-wrap:nowrap;align-items:center;gap:5px;min-width:0}.project-tools .el-input{flex:1 1 260px;width:auto;min-width:180px;max-width:420px}.project-tools .el-button{min-height:34px;margin:0;padding:0 9px}.project-tools .el-upload{display:block}.batch-action-bar{display:flex;align-items:center;gap:8px;margin:10px 0 8px;padding:8px 10px;border:1px solid rgba(188,160,106,.28);border-radius:10px;background:#faf7efb8;color:var(--vi-ink);font-size:14px;font-weight:700}.project-overview-table{width:100%}.project-overview-table .el-table__header,.project-overview-table .el-table__body{min-width:1820px}.project-overview-table .el-table__cell{padding:6px 0;vertical-align:middle}.project-overview-table th.el-table__cell{height:38px;padding:4px 0}.project-name-link.el-button{height:auto;min-height:24px;padding:0;white-space:normal;word-break:break-word;text-align:left;line-height:1.45}.muted-line{display:block;margin-top:2px;color:var(--vi-muted);font-size:12px}.upload-drop{display:grid;min-height:92px;place-items:center;color:var(--vi-green-hover);font-weight:700}.table-header-tools{display:inline-flex;align-items:center;gap:6px;min-width:0}.mini-filter-button{min-height:24px;padding:2px 7px;border:1px solid var(--vi-line);border-radius:999px;background:#fff;color:var(--vi-green-hover);cursor:pointer;font-size:12px;line-height:1;transition:background-color .2s linear,border-color .2s linear,box-shadow .2s linear}.mini-filter-button:hover,.mini-filter-button.active{border-color:var(--vi-gold);background:var(--vi-gold-soft);color:var(--vi-ink);box-shadow:0 1px 6px #c8ad7324}.mini-filter-button.icon-only{width:24px;min-height:24px;padding:0;display:inline-grid;place-items:center}.filter-chevron{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-1px) rotate(45deg);transition:transform .2s linear}.mini-filter-button.icon-only.active .filter-chevron,.mini-filter-button.icon-only:hover .filter-chevron{transform:translateY(1px) rotate(45deg)}.table-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;color:var(--vi-muted);font-size:13px}.filter-menu,.sort-menu{display:grid;gap:10px}.filter-scroll{max-height:240px;overflow-y:auto;padding:2px 4px 2px 0}.range-filter-row,.inline-region-fields,.date-input-combo{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.inline-region-fields,.date-input-combo{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.filter-scroll .el-checkbox-group,.sort-menu .el-radio-group{display:grid;gap:8px}.filter-scroll .el-checkbox{align-items:flex-start;height:auto;margin-right:0;white-space:normal}.filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:8px;border-top:1px solid var(--vi-line)}.filter-actions span{margin-right:auto;color:var(--vi-muted);font-size:12px}.search-result-note{padding:10px 16px;border-bottom:1px solid var(--vi-line);color:var(--vi-muted);font-size:13px}.adjust-mode-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;color:var(--vi-muted);font-size:13px}.side-stack{display:grid;gap:16px;align-content:start}.station-list{display:grid;max-height:220px;overflow:auto;padding:10px;gap:8px}.station-dashboard{grid-template-columns:minmax(0,1fr) minmax(300px,340px)}.station-visual-panel{overflow:hidden}.station-analysis-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--vi-line);padding:10px 12px;background:var(--vi-frost)}.station-analysis-toolbar label{display:grid;min-width:132px;gap:5px;color:var(--vi-muted);font-size:12px}.station-analysis-toolbar label:has(.el-input-number){grid-template-columns:minmax(120px,1fr) auto}.station-analysis-toolbar label:has(.el-input-number)>span{grid-column:1 / -1}.station-analysis-toolbar .el-select,.station-analysis-toolbar .el-input-number{width:150px}.station-analysis-toolbar em{align-self:center;color:var(--vi-muted);font-size:11px;font-style:normal}.station-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px}.station-kpi,.station-chart-card,.station-focus{border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#fffffff5,#f8fbf7e6);box-shadow:0 8px 20px #2a52460d}.station-kpi{display:grid;min-height:72px;align-content:center;gap:5px;padding:9px 10px;animation:panel-soft-in .3s linear both}.station-kpi span,.station-focus span,.chart-head span{color:var(--vi-muted);font-size:var(--tx-type-label)}.station-kpi strong{color:var(--vi-green-hover);font-size:var(--tx-type-data);font-weight:700;line-height:1.25}.station-kpi em,.station-focus em,.chart-head strong{color:var(--vi-gold-hover);font-style:normal;font-size:var(--tx-type-label)}.station-focus{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 12px 12px;padding:12px}.station-focus div{display:grid;gap:4px}.station-focus strong{color:var(--vi-ink);font-size:var(--tx-type-section-title)}.station-focus .el-select{width:220px}.station-data-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:0 12px 12px;border:1px solid var(--vi-line);background:var(--vi-line)}.station-data-grid>div{display:grid;min-width:0;min-height:52px;align-content:center;gap:5px;padding:9px 10px;background:#fff}.station-data-grid span{color:var(--vi-muted);font-size:11px}.station-data-grid strong{overflow-wrap:anywhere;color:var(--vi-ink);font-size:13px}.station-data-wide{grid-column:span 2}.station-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 12px 12px}.station-chart-card{min-height:196px;padding:10px}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.chart-head .el-segmented{--el-segmented-item-selected-bg-color: var(--vi-green-soft);--el-segmented-item-selected-color: var(--vi-green-hover);flex-shrink:0}.chart-subtitle{margin:-2px 0 8px;color:var(--vi-muted);font-size:12px}.curve-chart{display:block;width:100%;height:150px;overflow:visible;border-bottom:1px solid var(--vi-line);border-left:1px solid var(--vi-line)}.curve-chart polygon{fill:#c8ad7329}.curve-chart polyline{fill:none;stroke:var(--vi-gold-hover);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:220;animation:chart-line-in .8s linear both}.curve-chart.green polygon{fill:#6a977a26}.curve-chart.green polyline{stroke:var(--vi-green-hover)}.curve-bar-chart{display:flex;height:150px;align-items:flex-end;gap:3px;overflow:hidden;border-bottom:1px solid var(--vi-line);border-left:1px solid var(--vi-line);padding:8px 6px 0}.curve-bar-chart span{display:flex;min-width:2px;height:100%;flex:1 1 0;align-items:flex-end}.curve-bar-chart i{display:block;width:100%;min-height:3px;border-radius:2px 2px 0 0;background:var(--vi-gold-hover);transition:height .22s ease-out}.curve-bar-chart.green i{background:var(--vi-green-hover)}.chart-empty,.empty-note{display:grid;min-height:150px;place-items:center;color:var(--vi-muted);font-size:13px}.station-side{align-content:start}.station-insights{display:grid;gap:8px;padding:12px}.station-insights p{margin:0;border-left:3px solid var(--vi-gold);border-radius:0 8px 8px 0;background:var(--vi-frost);padding:9px 10px;color:var(--vi-ink);font-size:13px;line-height:1.6}.station-row,.task-mini{display:grid;gap:4px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);padding:10px;background:#ffffffd1;animation:panel-soft-in .3s linear both}.station-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;width:100%;text-align:left;color:var(--vi-ink);cursor:pointer;transition:border-color .2s linear,background-color .2s linear,box-shadow .2s linear}.station-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-row span{white-space:nowrap}.station-row:hover,.station-row.active{border-color:var(--vi-gold);background:var(--vi-gold-soft);box-shadow:0 1px 8px #c8ad7324}.station-row span{color:var(--vi-muted);font-size:var(--tx-type-label)}.station-row strong{font-size:var(--tx-type-card-title)}.text-link{border:0;background:transparent;color:var(--vi-green-hover);cursor:pointer;font:inherit;font-weight:700;padding:0}.text-link:hover{color:var(--vi-gold-hover)}.report-box{max-height:260px;overflow:auto;margin:0;padding:12px;color:var(--vi-ink);white-space:pre-wrap;line-height:1.7;font-family:inherit}.report-box.full{max-height:560px}.mini-list{display:grid;gap:10px;padding:14px;color:var(--vi-muted);line-height:1.7}.mini-list p{margin:0}.task-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;padding:14px}.task-panel-head{align-items:flex-start}.task-tools{display:grid;grid-template-columns:180px 120px 130px auto;align-items:center;gap:8px}.task-grouped-list{display:grid;gap:10px;padding:10px;background:var(--color-surface-muted)}.task-project-group{overflow:hidden;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface-solid)}.task-pinned-group{border-color:color-mix(in srgb,var(--vi-gold) 52%,var(--color-border))}.task-group-header{display:flex;min-height:38px;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px;border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-surface-muted) 78%,var(--color-surface-solid))}.task-pinned-group .task-group-header{background:color-mix(in srgb,var(--vi-gold) 9%,var(--color-surface-solid))}.task-group-header h3{min-width:0;margin:0;overflow:hidden;color:var(--color-text);font-size:14px;font-weight:700;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.task-group-header span{flex:0 0 auto;color:var(--color-text-secondary);font-size:12px}.task-list-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;min-height:52px;align-items:center;gap:10px;padding:6px 10px;border-top:1px solid var(--color-border);border-left:3px solid transparent}.task-list-row:first-child{border-top:0}.task-list-row.task-row-critical,.task-list-row.task-row-urgent{border-left-color:var(--color-error-text);background:color-mix(in srgb,var(--color-error-bg) 35%,var(--color-surface-solid))}.task-list-row.task-row-warning,.task-list-row.task-row-delayed{border-left-color:var(--color-warning-text);background:color-mix(in srgb,var(--color-warning-bg) 35%,var(--color-surface-solid))}.task-list-row.task-row-done-today{border-left-color:var(--color-success-text)}.task-row-main{display:grid;min-width:0;gap:2px;border:0;padding:2px 0;background:transparent;color:inherit;text-align:left;cursor:pointer}.task-row-title{display:flex;min-width:0;align-items:center;gap:7px}.task-row-title strong,.task-row-main small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row-title strong{color:var(--color-text);font-size:14px;line-height:1.4}.task-row-title .task-launched-days{flex:0 0 auto;color:var(--color-text-secondary);font-size:11px;font-weight:500;line-height:1.35;white-space:nowrap}.task-row-title em{flex:0 0 auto;border:1px solid var(--color-border);border-radius:4px;padding:1px 5px;color:var(--color-text-secondary);font-size:11px;font-style:normal;line-height:1.35}.task-row-main small{color:var(--color-text-secondary);font-size:12px;line-height:1.4}.task-row-state{display:flex;align-items:center;gap:7px;white-space:nowrap}.task-row-state time,.task-row-state b{color:var(--color-text-secondary);font-size:12px;font-weight:500}.task-row-actions{display:flex;align-items:center;gap:6px}.task-group-toggle{display:none}.task-title-text{display:block;color:var(--vi-ink);font-weight:700}.task-title-text+small{display:block;margin-top:4px;color:var(--vi-muted);line-height:1.45}.task-name-inline{display:flex;min-width:0;align-items:center;gap:8px;white-space:nowrap}.task-name-inline .task-title-text{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-name-inline .task-title-text+small{flex:1 1 auto;min-width:0;margin-top:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table .task-row-urgent td:first-child{border-left:4px solid #b75b55}.el-table .task-row-high td:first-child{border-left:4px solid var(--vi-gold)}.el-table .task-row-delayed td:first-child{border-left:4px solid #aeb8ad}.el-table .task-row-done-today td:first-child{border-left:4px solid var(--vi-green)}.done-list p{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;border-left:3px solid var(--vi-green);padding-left:10px}.done-list strong,.done-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.done-list strong{color:var(--vi-ink);font-size:var(--tx-type-card-title)}.done-list span{color:var(--vi-muted);font-size:var(--tx-type-label)}.report-dashboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.report-module{min-width:0}.report-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;padding:12px}.report-metric-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;min-height:64px;align-content:center;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#ffffff,var(--vi-frost));padding:9px 10px}.report-metric-card span{color:var(--vi-green-hover);font-size:var(--tx-type-label);font-weight:700}.report-metric-card strong{color:var(--vi-ink);font-size:var(--tx-type-data);font-weight:700;line-height:1.25}.report-task-list{display:grid;gap:8px;padding:12px}.report-task-list p{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:0;border-left:3px solid var(--vi-gold);border-radius:0 8px 8px 0;background:var(--vi-frost);padding:9px 10px}.report-task-list strong,.report-task-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-task-list strong{color:var(--vi-ink);font-size:var(--tx-type-card-title)}.report-task-list span{color:var(--vi-muted);font-size:var(--tx-type-label)}.report-risk-list{margin:0;padding:8px 18px 12px;color:var(--vi-ink);line-height:1.7}.permission-editor{display:grid;grid-template-rows:auto minmax(0,1fr);height:min(68vh,660px);gap:10px;overflow:hidden}.permission-matrix-dialog .el-dialog__body{max-height:none;overflow:hidden}.permission-editor-head{display:grid;gap:9px}.permission-section-list{position:relative;display:grid;min-height:0;align-content:start;gap:14px;overflow-y:auto;padding-right:4px;scroll-padding-top:8px}.permission-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:var(--vi-frost);padding:12px}.permission-toolbar .el-select{width:220px}.permission-section{display:grid;gap:10px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#fff;padding:14px}.permission-section h3{margin:0;color:var(--vi-green-hover);font-size:15px;font-weight:700}.permission-section>.el-select{width:100%}.section-actions.compact-actions{display:flex;flex-wrap:wrap;gap:8px}.row-actions{display:inline-flex;flex-wrap:wrap;gap:6px}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:520px;overflow:auto;padding-right:4px}.permission-group{border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#ffffff,var(--vi-frost));padding:12px}.permission-group h3{margin:0 0 10px;color:var(--vi-green-hover);font-size:15px}.permission-group .el-checkbox-group{display:grid;gap:8px}.permission-group .el-checkbox{height:auto;margin-right:0;white-space:normal}.manual-entry{display:grid;gap:14px}.manual-actions{display:flex;align-items:center;gap:12px;color:var(--vi-muted);font-size:13px}.manual-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}.edit-form{display:grid;gap:2px}.section-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end}.summary-item{display:grid;min-height:54px;align-content:center;justify-items:center;padding:8px 10px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#fffffff5,#f7f5eed1);text-align:center;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.summary-item:hover{border-color:var(--vi-gold);box-shadow:0 1px 9px #c8ad7329}.summary-item span,.capacity-block span,.project-card-footer span,.panel-heading span,.detail-fields dt{display:block;color:var(--vi-muted);font-size:13px}.summary-item span{color:var(--vi-green-hover);font-size:14px;font-weight:700}.summary-item strong{display:inline-block;margin-top:3px;color:var(--vi-ink);font-size:16px;font-weight:700;letter-spacing:0}.summary-item em{display:inline-block;margin-left:6px;color:var(--vi-gold-hover);font-size:13px;font-style:normal;font-weight:700}.project-summary-strip .summary-item{display:grid;grid-template-columns:minmax(0,1fr);align-content:center;justify-items:center;gap:4px;text-align:center}.summary-item>.summary-item-label{width:100%;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.summary-item>.summary-item-metrics{display:flex;width:100%;min-width:0;align-items:baseline;justify-content:center;gap:8px;color:inherit;line-height:1.25}.summary-item>.summary-item-metrics strong,.summary-item>.summary-item-metrics em{flex:0 1 auto;min-width:0;margin:0;line-height:inherit}.jump-frame{scroll-margin-top:12px;transition:border-color .24s ease,box-shadow .24s ease,transform .24s ease}.jump-frame-active{border-color:var(--vi-gold)!important;box-shadow:0 0 0 3px #c8ad7324,var(--vi-soft-shadow);transform:translateY(-1px)}.page-alert{margin-bottom:16px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;min-height:280px}.project-card{display:flex;flex-direction:column;justify-content:space-between;min-height:220px;padding:18px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffeb;box-shadow:var(--vi-soft-shadow)}.project-card-main{display:grid;gap:18px}.project-card h2{min-height:58px;margin:0;color:var(--vi-ink);font-size:20px;font-weight:700;line-height:1.45;letter-spacing:0;overflow-wrap:anywhere}.company-name{overflow-wrap:anywhere}.capacity-block{padding:14px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:linear-gradient(180deg,#ffffff,var(--vi-frost))}.capacity-block strong{display:block;margin-top:6px;color:var(--vi-green-hover);font-size:24px;font-weight:700;letter-spacing:0}.project-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--vi-line)}.project-meta{display:grid;gap:4px;min-width:0}.project-card-footer span{overflow-wrap:anywhere}.empty-state{grid-column:1 / -1;min-height:240px;border:1px dashed var(--vi-gold);border-radius:var(--vi-radius);background:#ffffffe0}.login-page{display:grid;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(circle at 50% 10%,rgba(111,159,141,.12),transparent 30%),linear-gradient(180deg,var(--vi-white),#f3efe4)}.login-panel{width:min(420px,100%);padding:28px;border:1px solid var(--vi-line);border-radius:12px;background:#ffffffe6;box-shadow:var(--vi-shadow);animation:panel-soft-in .3s linear both}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:28px}.brand-mark{display:grid;width:44px;height:44px;place-items:center;border:1px solid rgba(200,173,115,.4);border-radius:10px;background:linear-gradient(145deg,var(--vi-green),#88b4a0);color:#fff;box-shadow:0 6px 18px #6f9f8d2e;font-weight:700}.login-form{display:grid;gap:2px}.login-submit{width:100%;margin-top:8px}.login-memory-options{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-2px 0 4px}.login-memory-options .el-checkbox{margin:0}.login-quick-entry{width:100%;margin:8px 0 0!important}.public-login-page{min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at 50% -10%,rgba(212,175,55,.22),transparent 26%),radial-gradient(circle at 12% 18%,rgba(111,159,141,.2),transparent 32%),linear-gradient(180deg,#0b120e,#16261e 48%,#0b120e);color:#eaf0f7;animation:page-soft-in .3s linear both}.public-nav{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:18px clamp(18px,4vw,56px);border-bottom:1px solid rgba(234,240,247,.08);background:#0b120ec2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.public-brand{display:inline-flex;align-items:center;gap:10px;color:#eaf0f7;text-decoration:none}.public-brand span{display:grid;width:38px;height:38px;place-items:center;border:1px solid rgba(212,175,55,.45);border-radius:10px;background:linear-gradient(135deg,#6f9f8df5,#d4af37e6);color:#fff;font-weight:800}.public-brand strong,.public-brand small{display:block;line-height:1.1}.public-brand small{color:#aab8b0;font-size:11px;text-transform:uppercase}.public-nav-actions{display:flex;align-items:center;gap:14px}.public-nav-actions a,.public-nav-actions button{border:0;background:transparent;color:#d4dfd8;cursor:pointer;font-size:14px;text-decoration:none;transition:color .25s ease,border-color .25s ease,background .25s ease,box-shadow .25s ease}.public-nav-actions a:hover,.public-nav-actions button:hover{color:#f2d479}.public-login-link{min-height:36px;padding:0 16px;border:1px solid rgba(212,175,55,.48)!important;border-radius:999px}.public-login-link:hover{background:#d4af371a!important;box-shadow:0 1px 8px #d4af372e}.public-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,460px);gap:clamp(24px,5vw,72px);min-height:100vh;align-items:center;padding:116px clamp(18px,6vw,86px) 72px}.dawn-horizon{position:absolute;top:22%;left:-8%;right:-8%;height:120px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(212,175,55,.18),rgba(242,212,121,.52),rgba(111,159,141,.16),transparent),radial-gradient(ellipse at center,rgba(242,212,121,.3),transparent 62%);filter:blur(10px);opacity:.78;animation:horizon-breathe 6s ease-in-out infinite alternate}.solar-grid{position:absolute;left:8%;right:8%;bottom:38px;display:grid;grid-template-columns:repeat(14,minmax(24px,1fr));gap:8px;perspective:560px;transform:rotateX(64deg);opacity:.34}.solar-grid i{height:52px;border:1px solid rgba(111,159,141,.24);border-radius:3px;background:linear-gradient(145deg,#6f9f8d2e,#eaf0f708)}.public-hero-copy,.public-login-card,.public-stats article,.public-business-grid article,.public-ecosystem{animation:panel-soft-in .55s cubic-bezier(.16,1,.3,1) both}.hero-eyebrow,.public-section-heading span,.public-ecosystem span:first-child{margin:0 0 16px;color:#d4af37;font-size:12px;font-weight:700;letter-spacing:.2em}.public-hero-copy h1{max-width:780px;margin:0;color:#fff;font-size:clamp(42px,7vw,92px);line-height:1.04;font-weight:800}.public-hero-copy h2{max-width:720px;margin:18px 0 0;color:#f2d479;font-size:clamp(21px,2.4vw,34px);line-height:1.25;font-weight:600}.public-hero-copy p:not(.hero-eyebrow){max-width:680px;margin:22px 0 0;color:#bdcac2;font-size:18px;line-height:1.8}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}.hero-actions button,.hero-actions a{display:inline-flex;align-items:center;min-height:46px;border-radius:999px;padding:0 22px;color:#fff;font-weight:700;text-decoration:none;transition:transform .25s ease,box-shadow .25s ease,background .25s ease}.hero-actions button{border:0;background:linear-gradient(135deg,var(--vi-green),#d4af37);cursor:pointer}.hero-actions a{border:1px solid rgba(234,240,247,.18);background:#eaf0f70f}.hero-actions button:hover,.hero-actions a:hover{transform:translateY(-2px);box-shadow:0 8px 24px #6f9f8d33}.public-login-card{position:relative;z-index:2;border:1px solid rgba(234,240,247,.12);border-radius:18px;padding:26px;background:#16261ee0;box-shadow:0 24px 70px #00000057;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.login-card-kicker{color:#d4af37;font-size:13px;font-weight:700}.public-login-card h3{margin:10px 0 8px;color:#fff;font-size:28px}.public-login-card p{margin:0 0 20px;color:#aab8b0}.public-login-card .el-form-item__label{color:#d7e0ee}.public-login-card .el-input__wrapper{background:#eaf0f714;box-shadow:0 0 0 1px #eaf0f724 inset}.public-login-card .el-input__inner{color:#fff}.public-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border-top:1px solid rgba(234,240,247,.08);border-bottom:1px solid rgba(234,240,247,.08);background:#eaf0f714}.public-stats article{min-height:132px;padding:24px clamp(18px,3vw,36px);background:#0b120ecc}.public-stats strong{display:block;color:#f2d479;font-size:clamp(28px,4vw,48px);font-variant-numeric:tabular-nums}.public-stats span{display:block;margin-top:8px;color:#b8c5d8}.public-section{padding:clamp(72px,10vw,118px) clamp(18px,6vw,86px)}.public-section-heading{max-width:760px}.public-section h2{margin:0;color:#fff;font-size:clamp(32px,4vw,56px);line-height:1.12}.public-section p{color:#aab8cc;line-height:1.8}.public-business-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:34px}.public-business-grid article{min-height:190px;border:1px solid rgba(234,240,247,.1);border-radius:16px;padding:22px;background:linear-gradient(180deg,#eaf0f714,#eaf0f708);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.public-business-grid article:hover{transform:translateY(-4px);border-color:#d4af376b;box-shadow:0 14px 34px #00000038}.public-business-grid h3{margin:0 0 12px;color:#f2d479;font-size:22px}.public-ecosystem{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:38px;align-items:center;border-top:1px solid rgba(234,240,247,.08)}.ecosystem-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.ecosystem-list span{display:grid;min-height:76px;place-items:center;border:1px solid rgba(212,175,55,.22);border-radius:14px;background:#eaf0f70f;color:#eaf0f7;font-weight:800}.website-admin-panel{grid-column:1 / -1}.website-admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.92fr);gap:18px}.website-settings-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.website-settings-form .el-form-item:nth-last-child(-n+3){grid-column:1 / -1}.website-admin-tables{display:grid;align-content:start;gap:14px}.mini-table-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:var(--vi-ink)}.mini-table-title span{color:var(--vi-muted);font-size:12px}.public-login-page{background:radial-gradient(circle at 12% 12%,rgba(200,173,115,.16),transparent 28%),radial-gradient(circle at 86% 20%,rgba(111,159,141,.18),transparent 26%),linear-gradient(180deg,#fffdf8,#f6f4ec 52%,#fff);color:var(--vi-ink)}.public-nav{border-bottom:1px solid rgba(230,223,207,.9);background:#ffffffd1;box-shadow:0 8px 24px #6f5f370f}.public-brand,.public-nav-actions a,.public-nav-actions button{color:var(--vi-ink)}.public-brand span{border-color:#c8ad738f;background:linear-gradient(135deg,var(--vi-green),var(--vi-gold))}.public-brand small,.public-login-card p,.public-section p,.public-stats span{color:var(--vi-muted)}.public-nav-actions a:hover,.public-nav-actions button:hover{color:var(--vi-gold-hover)}.public-hero{overflow:hidden}.public-hero-media,.public-hero-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.public-hero-media{object-fit:cover;opacity:.28;filter:saturate(.86) contrast(.98)}.public-hero-overlay{background:linear-gradient(90deg,#fffffff0,#ffffffd1 46%,#ffffffb3),linear-gradient(180deg,#ffffff14,#edf5efb8)}.public-hero-copy,.public-login-card{position:relative;z-index:2}.dawn-horizon{background:linear-gradient(90deg,transparent,rgba(200,173,115,.18),rgba(111,159,141,.22),transparent),radial-gradient(ellipse at center,rgba(200,173,115,.22),transparent 62%)}.solar-grid i{border-color:#6f9f8d42;background:linear-gradient(145deg,#6f9f8d2e,#fff3)}.hero-eyebrow,.public-section-heading span,.public-ecosystem span:first-child,.login-card-kicker{color:var(--vi-gold-hover)}.public-hero-copy h1,.public-section h2,.public-login-card h3{color:var(--vi-ink)}.public-hero-copy h2,.public-business-grid h3{color:var(--vi-green-hover)}.public-hero-copy p:not(.hero-eyebrow){color:#516158}.hero-actions button{background:linear-gradient(135deg,var(--vi-green),var(--vi-gold))}.hero-actions a,.public-login-card,.public-business-grid article,.public-case-card,.public-ecosystem{border-color:var(--vi-line);background:#ffffffd6;box-shadow:var(--vi-soft-shadow)}.hero-actions a{color:var(--vi-green-hover)}.public-login-card{border-radius:14px}.public-login-card .el-form-item__label,.public-login-card .el-input__inner{color:var(--vi-ink)}.public-login-card .el-input__wrapper{background:#ffffffe6;box-shadow:0 0 0 1px var(--vi-line) inset}.public-stats{border-color:var(--vi-line);background:var(--vi-line)}.public-stats article{background:#ffffffe6}.public-stats strong{color:var(--vi-gold-hover);font-size:clamp(22px,2.6vw,34px)}.public-business-grid article:hover,.public-case-card:hover{border-color:var(--vi-gold);box-shadow:0 10px 28px #6f5f371f}.public-visual-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:28px}.public-visual-row img{width:100%;height:220px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);object-fit:cover;box-shadow:var(--vi-soft-shadow)}.public-case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:34px}.public-case-card{overflow:hidden;border:1px solid var(--vi-line);border-radius:var(--vi-radius);transition:transform .25s linear,border-color .25s linear,box-shadow .25s linear}.public-case-card:hover{transform:translateY(-3px)}.public-case-card img,.case-image-placeholder{width:100%;height:190px;object-fit:cover}.case-image-placeholder{display:grid;place-items:center;background:linear-gradient(135deg,#6f9f8d2e,#c8ad732e),repeating-linear-gradient(90deg,transparent 0 18px,rgba(111,159,141,.1) 18px 20px);color:var(--vi-green-hover);font-weight:800;font-size:40px}.public-case-card div:last-child{padding:18px}.public-case-card span,.public-case-card em{color:var(--vi-gold-hover);font-size:12px;font-style:normal;font-weight:700}.public-case-card h3{margin:8px 0;color:var(--vi-ink);font-size:20px}.public-contact{color:var(--vi-green-hover)!important;font-weight:700}.ecosystem-list span{border-color:var(--vi-line);background:var(--vi-green-soft);color:var(--vi-green-hover)}.public-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;padding:18px;border-top:1px solid var(--vi-line);color:var(--vi-muted);background:#ffffffc7;font-size:13px}.reveal-on-scroll{opacity:0;transform:translateY(18px);transition:opacity .45s ease-out,transform .45s ease-out}.reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}.public-hero-video{display:block}.public-hero-mobile-image{display:none}.centered{margin-inline:auto;text-align:center}.cooperation-section{display:grid;gap:30px;border-top:1px solid var(--vi-line);border-bottom:1px solid var(--vi-line);background:linear-gradient(135deg,#fffffff5,#edf5efe0),radial-gradient(circle at 50% 0%,rgba(200,173,115,.18),transparent 32%)}.cooperation-logos{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr);gap:clamp(14px,3vw,34px);align-items:center;width:min(900px,100%);margin:0 auto}.cooperation-logos>strong{color:var(--vi-gold-hover);font-size:clamp(34px,5vw,58px)}.cooperation-logo{display:grid;min-height:130px;place-items:center;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffe0;box-shadow:var(--vi-soft-shadow);color:var(--vi-ink);font-size:clamp(20px,3vw,30px);font-weight:800;text-align:center}.cooperation-logo img{max-width:70%;max-height:76px;object-fit:contain}.cooperation-logo-tw{color:var(--vi-muted);font-size:clamp(16px,2vw,24px)}.cooperation-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.cooperation-values article,.strength-grid article,.service-timeline article,.case-detail-blocks article{border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffe6;box-shadow:var(--vi-soft-shadow);padding:20px}.cooperation-values strong,.service-timeline h3,.case-detail-blocks h3{color:var(--vi-green-hover);font-size:18px}.public-strength{background:#ffffff9e}.strength-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:32px}.strength-grid strong{display:block;color:var(--vi-gold-hover);font-size:clamp(32px,5vw,54px);font-variant-numeric:tabular-nums}.strength-grid span{color:var(--vi-muted)}.solution-grid article{min-height:420px;overflow:hidden}.solution-grid img{width:calc(100% + 44px);height:190px;margin:-22px -22px 18px;object-fit:cover;transition:transform .35s ease,filter .35s ease}.solution-grid article:hover img{transform:scale(1.04);filter:saturate(1.06)}.public-case-card{color:inherit;text-decoration:none}.case-image-placeholder span{color:var(--vi-muted);font-size:20px}.service-timeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:34px;counter-reset:service-step}.service-timeline article{position:relative;overflow:hidden}.service-timeline article:before{position:absolute;inset:0 auto 0 0;width:3px;content:"";background:linear-gradient(180deg,var(--vi-gold),var(--vi-green))}.service-timeline article>span{display:grid;width:38px;height:38px;place-items:center;border-radius:999px;background:var(--vi-green-soft);color:var(--vi-green-hover);font-weight:800}.case-detail-page{min-height:100vh}.case-detail-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(18px,4vw,52px);align-items:center;min-height:82vh;padding:116px clamp(18px,6vw,86px) 64px}.case-detail-hero>img,.case-image-placeholder.large{width:100%;min-height:420px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);object-fit:cover;box-shadow:var(--vi-shadow)}.case-detail-copy>span{color:var(--vi-gold-hover);font-size:13px;font-weight:800;letter-spacing:.08em}.case-detail-copy h1{margin:14px 0;color:var(--vi-ink);font-size:clamp(36px,5vw,64px);line-height:1.08}.case-detail-copy p{color:var(--vi-muted);font-size:17px;line-height:1.8}.case-detail-metrics,.case-detail-blocks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}.case-detail-metrics article{border-top:2px solid var(--vi-gold);background:#ffffffc7;padding:14px 0}.case-detail-metrics strong{display:block;color:var(--vi-green-hover);font-size:18px}.case-detail-metrics span{color:var(--vi-muted);font-size:12px}@keyframes horizon-breathe{0%{opacity:.56;transform:translateY(0)}to{opacity:.86;transform:translateY(8px)}}.detail-shell{background:transparent}.detail-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:16px;margin-top:20px}.timeline-panel,.detail-panel{display:flex;flex-direction:column;min-height:520px;padding:18px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffe6;box-shadow:var(--vi-soft-shadow);animation:panel-soft-in .3s linear both}.detail-panel>*{order:4}.detail-panel>.project-archive-overview{order:1}.detail-panel>.phase-detail-workbench{order:2}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--vi-line)}.panel-heading strong{color:var(--vi-ink);font-size:14px;font-weight:600;text-align:right;overflow-wrap:anywhere}.timeline-list{display:grid;gap:12px;margin:18px 0 0;padding:0;list-style:none}.timeline-list li{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;min-height:42px;color:var(--vi-muted)}.timeline-list li span{display:grid;width:28px;height:28px;place-items:center;border:1px solid var(--vi-line);border-radius:50%;background:#fff;font-size:13px}.timeline-list li.active{color:var(--vi-green-hover);font-weight:700}.timeline-list li.active span{border-color:var(--vi-green);background:var(--vi-green-soft)}.timeline-list p{margin:0}.timeline-list small{display:block;margin-top:4px;color:var(--vi-muted);font-size:12px}.detail-fields{display:grid;gap:14px;margin:18px 0 0}.detail-fields div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;min-height:44px;align-items:center;padding:10px 0;border-bottom:1px solid var(--vi-line)}.detail-fields dd{margin:0;color:var(--vi-ink);overflow-wrap:anywhere}.inline-title{margin-top:20px;padding-left:0;padding-right:0}.grid-2-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:16px}.log-box{display:grid;max-height:260px;overflow:auto;gap:8px;padding:10px;border:1px solid var(--vi-line);border-radius:var(--vi-radius);background:#ffffffc7}.log-box p{margin:0;color:var(--vi-muted);font-size:13px;line-height:1.6}.page-flow-enter-active,.page-flow-leave-active{transition:opacity .3s linear,transform .3s linear}.page-flow-enter-from,.page-flow-leave-to{opacity:0;transform:translateY(8px)}.el-button{border-radius:var(--vi-radius);transition:background-color .2s linear,border-color .2s linear,color .2s linear,box-shadow .2s linear}.el-button:hover,.el-button:focus{box-shadow:0 1px 8px #c8ad7324}.el-button--primary{--el-button-bg-color: var(--vi-green);--el-button-border-color: var(--vi-green);--el-button-hover-bg-color: var(--vi-green-hover);--el-button-hover-border-color: var(--vi-green-hover);--el-button-active-bg-color: var(--vi-green-hover);--el-button-active-border-color: var(--vi-green-hover)}.el-button--primary.is-plain{--el-button-bg-color: #ffffff;--el-button-border-color: var(--vi-gold);--el-button-text-color: var(--vi-gold-hover);--el-button-hover-bg-color: var(--vi-gold-soft);--el-button-hover-border-color: var(--vi-gold);--el-button-hover-text-color: var(--vi-ink)}.el-button--danger,.el-button--success{--el-button-bg-color: #ffffff;--el-button-border-color: var(--vi-line);--el-button-text-color: var(--vi-ink)}.el-input__wrapper,.el-textarea__inner,.el-select__wrapper{border-radius:var(--vi-radius);box-shadow:0 0 0 1px var(--vi-line) inset;transition:box-shadow .2s linear,background-color .2s linear}.el-input__wrapper:hover,.el-textarea__inner:hover,.el-select__wrapper:hover{box-shadow:0 0 0 1px var(--vi-gold) inset}.el-input__wrapper.is-focus,.el-textarea__inner:focus,.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--vi-green) inset,0 1px 8px #6f9f8d1f}.el-table{--el-table-border-color: var(--vi-line);--el-table-header-bg-color: var(--vi-frost);--el-table-row-hover-bg-color: var(--vi-green-soft);--el-table-text-color: var(--vi-ink);--el-table-header-text-color: var(--vi-ink);color:var(--vi-ink)}.el-table th.el-table__cell{font-weight:700}.el-table__column-filter-trigger{color:var(--vi-gold-hover)}.el-overlay-dialog{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;overflow:auto;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}.el-dialog{--el-dialog-bg-color: var(--color-surface-solid, #ffffff);display:flex;flex-direction:column;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0 auto!important;background:var(--color-surface-solid, #ffffff)!important;color:var(--vi-ink);opacity:1!important;border-radius:12px;border:1px solid var(--vi-line);box-shadow:var(--vi-shadow);animation:panel-soft-in .3s linear both}.el-dialog__header,.el-dialog__body,.el-dialog__footer{background:inherit}.el-dialog__body{min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.el-dialog__header{border-bottom:1px solid var(--vi-line);margin-right:0;padding-bottom:14px}.el-dialog__title{color:var(--vi-ink);font-weight:700}.el-popper,.el-select-dropdown,.el-dropdown__popper{border-color:var(--vi-line)!important;box-shadow:var(--vi-soft-shadow)!important;animation:menu-soft-in .2s linear both}.el-select-dropdown__item.is-selected,.el-dropdown-menu__item:not(.is-disabled):focus{color:var(--vi-green-hover);background:var(--vi-green-soft)}.el-tag{border-radius:999px}.el-tag--success{--el-tag-bg-color: var(--vi-green-soft);--el-tag-border-color: var(--vi-line-green);--el-tag-text-color: var(--vi-green-hover)}.el-tag--warning{--el-tag-bg-color: var(--vi-gold-soft);--el-tag-border-color: var(--vi-gold);--el-tag-text-color: var(--vi-gold-hover)}.el-link,.el-button.is-link{color:var(--vi-green-hover)}.el-link:hover,.el-button.is-link:hover{color:var(--vi-gold-hover)}@keyframes page-soft-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-soft-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes menu-soft-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes chart-line-in{0%{stroke-dashoffset:220}to{stroke-dashoffset:0}}@media(max-width:768px){.app-shell{padding:10px}.top-bar,.project-card-footer{align-items:stretch;flex-direction:column}.top-bar{padding:0 0 12px}.top-actions{position:static;justify-content:center}.top-bar h1,.login-brand h1{font-size:24px}.summary-strip,.dashboard-layout,.module-grid,.admin-card-grid,.development-dashboard,.report-dashboard,.manual-form,.grid-2-detail,.detail-layout{grid-template-columns:1fr}.summary-strip{grid-auto-flow:column;grid-auto-columns:minmax(132px,1fr);overflow-x:auto;padding-bottom:4px;scroll-snap-type:x proximity}.summary-item{scroll-snap-align:start}.module-tabs{grid-auto-flow:column;grid-auto-columns:minmax(118px,1fr);grid-template-columns:none;overflow-x:auto;padding-bottom:4px}.development-tool-grid{grid-template-columns:1fr}.project-list-title,.adjust-mode-line{flex-direction:column}.project-tools{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.project-tools .el-input{width:100%;grid-column:1 / -1}.panel-table{overflow-x:auto}.table-pagination{align-items:stretch;flex-direction:column}.table-pagination .el-pagination{justify-content:center;overflow-x:auto}.task-tools{grid-template-columns:1fr;width:100%}.permission-grid,.station-kpi-grid,.station-chart-grid{grid-template-columns:1fr}.station-focus{align-items:stretch;flex-direction:column}.station-analysis-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.station-analysis-toolbar label,.station-analysis-toolbar .el-select,.station-analysis-toolbar .el-input-number{width:100%;min-width:0}.station-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.station-focus .el-select{width:100%}.project-grid{grid-template-columns:1fr}.detail-fields div{grid-template-columns:1fr;gap:6px}.public-nav{position:sticky;flex-wrap:wrap;gap:12px;padding:12px 16px}.public-nav-actions{width:100%;justify-content:space-between;overflow-x:auto}.public-hero{grid-template-columns:1fr;min-height:auto;padding:48px 16px 56px}.public-login-card{width:100%}.login-memory-options{align-items:flex-start;flex-direction:column;gap:4px}.solar-grid{grid-template-columns:repeat(7,minmax(20px,1fr));opacity:.22}.public-stats,.public-business-grid,.public-case-grid,.public-visual-row,.cooperation-logos,.cooperation-values,.strength-grid,.service-timeline,.case-detail-hero,.case-detail-metrics,.case-detail-blocks,.public-ecosystem,.website-admin-grid,.website-settings-form,.ecosystem-list{grid-template-columns:1fr}.public-hero-video{display:none}.public-hero-mobile-image{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;object-fit:cover;opacity:.28}.cooperation-logos>strong{text-align:center}.case-detail-hero{min-height:auto}.public-section{padding:58px 16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.time-edit-button{border:1px solid rgba(188,160,106,.32);background:#ffffffd1;color:#7b6539;border-radius:999px;padding:4px 9px;cursor:pointer;font-size:12px}.time-edit-button:hover{border-color:#bca06ab8;box-shadow:0 4px 12px #bca06a24}.compact-pop-form{display:grid;gap:8px}.compact-pop-form span{font-size:12px;color:var(--muted)}.archive-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:8px 0 12px}.archive-card{border:1px solid rgba(188,160,106,.2);border-radius:10px;padding:10px;background:#ffffffe6;box-shadow:0 10px 24px #1f3d340f}.archive-card-wide{grid-column:1 / -1}.archive-card>span{display:block;margin-bottom:8px;color:#8a6f3d;font-weight:700}.archive-card p{display:flex;gap:10px;margin:6px 0;color:#31433b;line-height:1.55}.archive-card b{min-width:72px;color:var(--muted);font-weight:600}.el-select-dropdown__wrap,.el-cascader-menu,.filter-scroll,.station-list,.log-box,.progress-feed{max-height:280px;overflow-y:auto}@media(max-width:768px){.archive-card-grid{grid-template-columns:1fr}}.detail-layout{grid-template-columns:280px minmax(0,1fr);align-items:start}.timeline-panel{position:sticky;top:18px;max-height:calc(100vh - 36px);overflow:auto}.phase-chain li{display:block;position:relative;min-height:0;cursor:pointer;border:1px solid rgba(150,157,151,.28);border-radius:10px;margin-bottom:0;padding:8px 10px;transition:border-color .24s ease,box-shadow .24s ease,background .24s ease}.timeline-list.phase-chain{gap:8px;margin-top:12px}.phase-chain-row{display:grid;grid-template-columns:minmax(0,1fr) auto;min-width:0;align-items:center;gap:4px 8px}.phase-chain-row strong{min-width:0}.phase-chain-row small{display:inline;margin-top:0}.phase-chain-row .phase-owner{grid-column:1 / -1;min-width:0;white-space:normal;overflow-wrap:anywhere}.phase-chain li:after{content:"";position:absolute;left:12px;bottom:-9px;width:1px;height:8px;background:#bca06a47}.phase-chain li:last-child:after{display:none}.phase-chain li.active,.phase-chain li:hover{box-shadow:0 8px 18px #1f3d3414;background:#fffffff5}.phase-status-completed{border-color:#5d9f7abf!important}.phase-status-in_progress{border-color:#5284beb8!important;animation:phasePulse 2s ease-in-out infinite}.phase-status-blocked{border-color:#bc8440cc!important}.phase-status-delayed{border-color:#b84848cc!important}.phase-status-skipped{border-color:#969d9773!important;color:#8a918b;text-decoration:none}.phase-status-skipped_pending{border-color:#b91c1cb3!important;background:#fef2f2f0!important;color:#b91c1c;text-decoration:none}.phase-parallel-mark{display:inline-flex;align-items:center;width:fit-content;min-height:20px;margin-left:6px;padding:0 6px;border:1px solid var(--vi-gold);border-radius:4px;color:var(--vi-gold-hover);font-size:11px;font-weight:700}@keyframes phasePulse{0%,to{box-shadow:0 0 #5284be00}50%{box-shadow:0 0 0 4px #5284be14}}.phase-detail-workbench{border:1px solid rgba(188,160,106,.2);border-radius:12px;padding:16px;margin-bottom:18px;background:#fffffff5;box-shadow:0 12px 28px #1f3d340f}.phase-detail-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}.phase-detail-head span,.phase-detail-head small{color:var(--muted)}.phase-detail-head h2{margin:4px 0;color:#2f5544}.phase-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.detail-head-actions{display:flex;gap:8px;align-items:center}.phase-section-title{display:flex;align-items:baseline;gap:10px;margin:14px 0 10px;padding-top:12px;border-top:1px solid rgba(188,160,106,.18)}.phase-section-title strong{color:#2f5544}.phase-section-title span{color:var(--muted);font-size:12px}.phase-save-actions{display:flex;gap:8px;margin-top:14px}.detail-single-section{margin-top:16px}.phase-form-grid,.phase-field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.phase-field-item{display:grid;gap:6px}.phase-field-item span{font-size:12px;color:#7b6539;font-weight:700}.phase-field-item em{margin-left:3px;color:#b84848;font-style:normal}.phase-scroll-list{max-height:300px;overflow:auto;display:grid;gap:8px}.phase-scroll-list p{margin:0;padding:10px 12px;border:1px solid rgba(188,160,106,.16);border-radius:8px;background:#faf9f6b8;color:#34463d}.phase-note-editor{display:grid;gap:10px;margin-top:12px}.phase-progress-panel,.task-current-progress{display:grid;gap:7px;margin:8px 0 10px;padding:10px;border:1px solid var(--vi-line-green);border-radius:var(--vi-radius);background:var(--vi-green-soft)}.phase-progress-current,.task-current-progress p{margin:0;color:var(--vi-ink);font-size:14px;line-height:1.7;white-space:pre-wrap}.phase-progress-history,.task-progress-history{display:grid;gap:5px;padding-top:7px;border-top:1px solid rgba(45,106,75,.16)}.task-progress-history-title{display:flex;align-items:center;gap:6px}.task-progress-history-title span,.task-progress-empty{color:var(--vi-muted);font-size:12px}.phase-progress-history>p,.task-progress-history>p{display:grid;grid-template-columns:112px 90px minmax(0,1fr);gap:8px;align-items:start;margin:0;padding:7px 0;border-bottom:1px solid rgba(45,106,75,.1);color:var(--vi-muted);font-size:13px}.phase-progress-history>p b,.task-progress-history>p b{color:var(--vi-ink);font-weight:500;white-space:pre-wrap}.task-current-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;color:var(--vi-muted);font-size:13px}.task-current-progress>div:first-child strong{color:var(--vi-ink);font-size:15px}.task-expand-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:12px 8px;background:#faf9f6ad}.task-compact-table .el-table__row{cursor:pointer}.task-detail-dialog-body{display:grid;gap:14px}.task-summary-card,.task-edit-card,.task-phase-card{border:1px solid rgba(188,160,106,.22);border-radius:10px;background:#fffffff5;padding:12px}.task-summary-card{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.task-summary-card h2{margin:0 0 8px;color:#111;font-size:18px}.task-summary-card p{margin:4px 0;color:#34463d;line-height:1.6}.task-summary-card p span{margin-left:16px}.task-summary-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.task-edit-card{display:grid;gap:8px}.task-edit-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.task-edit-card-head h3{margin:0;color:var(--color-text);font-size:15px}.task-edit-card-head span{color:var(--color-text-secondary);font-size:12px}.task-detail-edit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 10px}.task-detail-edit-grid .task-edit-description{grid-column:1 / -1;margin-bottom:6px}.task-detail-edit-grid .el-select,.task-detail-edit-grid .el-date-editor{width:100%}.task-phase-card{display:grid;gap:10px}.task-complete-choice{display:grid;gap:12px}.task-complete-choice>p{margin:0 0 2px;color:var(--vi-muted);font-size:14px}.task-complete-option{display:grid;gap:5px;width:100%;min-height:76px;padding:14px 16px;border:1px solid var(--vi-line-green);border-radius:10px;background:#fff;color:var(--vi-ink);text-align:left;cursor:pointer}.task-complete-option:hover,.task-complete-option:focus-visible{border-color:var(--vi-green);background:var(--vi-green-soft)}.task-complete-option strong{font-size:15px}.task-complete-option span{color:var(--vi-muted);font-size:13px;line-height:1.5}.task-complete-option-primary{border-color:var(--vi-green);background:var(--vi-green);color:#fff}.task-complete-option-primary span{color:#ffffffd1}.task-complete-option-primary:hover,.task-complete-option-primary:focus-visible{background:var(--vi-green-hover)}.task-complete-option:disabled{cursor:wait;opacity:.68}.region-cascade-filter{display:grid;gap:10px}.region-cascade-filter>.region-filter-field{display:grid;gap:5px;color:var(--vi-muted);font-size:12px}.region-cascade-filter .el-select{width:100%}.manager-metrics .metric-card,.workbench-page .metric-grid article{min-height:76px;padding:10px 12px}.manager-metrics .metric-card strong,.workbench-page .metric-grid article strong{font-size:20px}.task-phase-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.task-phase-card-head h3{margin:0 0 4px;color:#111;font-size:16px}.task-phase-card-head span,.task-phase-subtitle{color:var(--vi-muted);font-size:14px}.task-phase-subtitle{font-weight:700}.task-phase-field-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:10px}.task-phase-field,.task-material-item{display:grid;gap:8px;border:1px solid rgba(215,228,220,.9);border-radius:8px;padding:10px;background:#fafcfadb}.task-phase-field.missing,.task-material-item.missing{border-color:#b848489e;background:#b848480a}.task-phase-field span,.task-material-item strong{color:#24342c;font-size:14px;font-weight:700}.task-phase-field em,.task-material-item span{margin-left:6px;color:#b84848;font-size:12px;font-style:normal;font-weight:600}.task-phase-field .el-input,.task-phase-field .el-textarea{width:100%}.task-phase-field.task-field-textarea{grid-column:span 2}.task-material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.task-note-editor{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.task-note-list{display:grid;max-height:160px;overflow:auto;gap:6px}.task-note-list p{margin:0;padding:8px 10px;border-radius:7px;background:#edf5efb8;color:#34463d}.task-expand-card{border:1px solid rgba(188,160,106,.18);border-radius:10px;padding:12px;background:#fff;min-height:130px}.task-expand-card h3{margin:0 0 8px;font-size:14px;color:#2f5544}.task-expand-card p{margin:6px 0;color:#34463d;line-height:1.5}.task-expand-card b{display:inline-block;min-width:70px;color:var(--muted)}.task-step-list,.task-audit-list{max-height:180px;overflow:auto;display:grid;gap:6px}.task-step-list span,.task-audit-list p{margin:0;padding:7px 9px;border-radius:7px;background:#5d9f7a14;color:#34463d}.task-audit-list em{color:#7b6539;font-style:normal}.el-table .task-row-critical>td{box-shadow:inset 3px 0 #b84848e6;background:#b848480f!important;animation:criticalTaskPulse 1.6s ease-in-out infinite}.el-table .task-row-warning>td{box-shadow:inset 3px 0 #bc8440e6;background:#bc84400f!important}.mobile-task-list,.mobile-task-tabs{display:none}.mobile-camera-input{min-height:44px;width:100%;border:1px dashed rgba(188,160,106,.42);border-radius:8px;padding:9px;background:#ffffffdb}.notice-dropdown{max-width:340px}.notice-dropdown-item{display:grid;gap:4px;max-width:300px;white-space:normal}.notice-dropdown-item strong{color:var(--vi-ink)}.notice-dropdown-item span{color:var(--vi-muted);font-size:12px;line-height:1.4}@keyframes criticalTaskPulse{0%,to{background:#b848480a}50%{background:#b848481a}}@media(max-width:768px){.detail-layout{grid-template-columns:1fr}.timeline-panel{position:relative;top:auto;max-height:360px}.phase-form-grid,.phase-field-grid,.task-expand-panel{grid-template-columns:1fr}.task-tools{grid-template-columns:1fr 1fr}.task-compact-table{display:none}.mobile-task-list{display:grid;gap:10px;padding-bottom:72px}.mobile-task-card{display:grid;gap:6px;min-height:92px;width:100%;border:1px solid rgba(215,228,220,.95);border-left:4px solid var(--vi-green);border-radius:10px;padding:12px;background:#fffffff5;color:var(--vi-ink);text-align:left}.mobile-task-card.task-row-urgent,.mobile-task-card.task-row-critical{border-left-color:#b84848;animation:criticalTaskPulse 1.6s ease-in-out infinite}.mobile-task-card.task-row-warning,.mobile-task-card.task-row-delayed{border-left-color:#bc8440}.mobile-task-card strong{font-size:15px}.mobile-task-card span,.mobile-task-card em{color:var(--vi-muted);font-size:13px;font-style:normal}.mobile-task-card em{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mobile-task-tabs{position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(188,160,106,.24);background:#fffffff5;box-shadow:0 -8px 20px #22322a14}.mobile-task-tabs button{min-height:52px;border:0;background:transparent;color:var(--vi-muted);font-weight:700}.mobile-task-tabs button.active{color:var(--vi-green);background:#5d9f7a14}.task-summary-card,.task-summary-actions,.task-note-editor{grid-template-columns:1fr;display:grid}.task-phase-dialog .el-dialog{width:100%!important;max-width:none;height:100%;margin:0!important;border-radius:0}.task-phase-dialog .el-dialog__body{max-height:calc(100vh - 112px);overflow:auto}.task-phase-field-list,.task-material-grid{grid-template-columns:1fr}.phase-progress-history>p,.task-progress-history>p{grid-template-columns:1fr auto}.phase-progress-history>p b,.task-progress-history>p b{grid-column:1 / -1}.el-button,.el-input__wrapper,.el-select__wrapper{min-height:44px}}.detail-layout{position:relative;display:flex;width:100%;max-width:1600px;margin:20px auto 0;align-items:flex-start;gap:20px}.detail-layout .timeline-panel{width:30%;min-width:280px;max-width:360px;flex:0 0 30%;position:sticky;top:18px;max-height:calc(100vh - 36px);overflow:auto}.detail-layout .detail-panel{width:70%;min-width:0;flex:1 1 70%;padding-left:20px}.timeline-toggle{display:none}.phase-save-actions{position:fixed;right:32px;bottom:28px;z-index:80;display:flex;justify-content:flex-end;padding:8px;border:1px solid rgba(188,160,106,.22);border-radius:999px;background:#fffffff0;box-shadow:0 12px 26px #1f3d341f}@media(max-width:1440px){.detail-layout .timeline-panel{min-width:260px}}@media(max-width:768px){.detail-layout{display:block}.timeline-toggle{position:fixed;left:12px;top:92px;z-index:110;display:inline-flex;width:48px;min-width:48px;height:48px;padding:0;justify-content:center}.detail-layout .timeline-panel{position:fixed;left:12px;top:148px;z-index:105;width:min(360px,calc(100vw - 24px));min-width:0;max-width:none;max-height:calc(100vh - 168px);transform:translate(0);transition:opacity .3s linear,transform .3s linear,visibility .3s linear}.detail-layout .timeline-panel.is-collapsed{visibility:hidden;opacity:0;transform:translate(-18px);pointer-events:none}.detail-layout .detail-panel{width:100%;padding-left:0}}.app-shell,.detail-layout .detail-panel{animation-fill-mode:none}@media(max-width:1024px){.app-shell{width:100%;padding-right:16px;padding-left:16px}.detail-layout{gap:14px}.detail-layout .timeline-panel{min-width:240px}}@media(max-width:768px){.app-shell{width:100%;max-width:100%;padding:12px;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.top-bar{flex-direction:column;align-items:stretch;gap:10px;min-height:0;padding:2px 24px 14px}.brand-center{width:100%;min-width:0}.top-actions{position:static;width:100%;max-width:none;justify-content:center}button,.el-button,.el-button.is-link,.el-input__wrapper,.el-select__wrapper{min-height:44px!important}.module-tabs{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:110px;justify-content:start;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;padding:0 0 6px;-webkit-overflow-scrolling:touch}.module-tab{min-width:110px;padding:9px 12px;scroll-snap-align:start;white-space:nowrap}.detail-layout{display:block;width:100%;max-width:100%;margin-top:12px}.timeline-toggle{display:none!important}.detail-layout .timeline-panel,.detail-layout .timeline-panel.is-collapsed{position:relative;inset:auto;z-index:auto;display:block;visibility:visible;width:100%;min-width:0;max-width:none;max-height:42vh;margin-bottom:14px;overflow-y:auto;opacity:1;transform:none;pointer-events:auto;-webkit-overflow-scrolling:touch}.detail-layout .detail-panel{width:100%;min-width:0;padding-left:0}.phase-save-actions{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));justify-content:center;border-radius:var(--vi-radius)}.phase-save-actions .el-button{width:min(320px,100%)}.dashboard-grid,.manager-grid,.admin-card-grid,.module-grid,.development-dashboard,.report-dashboard,.archive-card-grid,.phase-form-grid,.phase-field-grid,.manual-form,.grid-2-detail,.task-expand-panel{grid-template-columns:minmax(0,1fr)}.metric-grid,.manager-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.panel,.detail-panel,.panel-table,.table-scroll,.project-table-wrap{min-width:0;max-width:100%}.panel-table,.table-scroll,.project-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.el-overlay-dialog{align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top)) 0 max(12px,env(safe-area-inset-bottom));overflow:auto}.el-dialog,.task-phase-dialog .el-dialog{width:95%!important;max-width:95vw;height:auto;max-height:calc(100vh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0 auto!important;border-radius:var(--vi-radius)}.el-dialog__body,.task-phase-dialog .el-dialog__body{max-height:65vh;overflow-y:auto;-webkit-overflow-scrolling:touch}}@media(max-width:480px){.app-shell{padding:10px;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.top-bar{padding:2px 12px 12px}.top-bar h1,.login-brand h1{font-size:22px}.metric-grid,.manager-metrics{grid-template-columns:minmax(0,1fr)}.top-actions .el-button{flex:1 1 calc(50% - 6px);margin-left:0}}@media(min-width:768px){body>.el-overlay{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;overflow:hidden;background-color:#18231e80!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}body>.el-overlay>.el-overlay-dialog{display:flex!important;position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;width:100vw;height:100dvh;align-items:center!important;justify-content:center!important;box-sizing:border-box;overflow:auto;padding:24px}body>.el-overlay>.el-overlay-dialog>.el-dialog{width:var(--el-dialog-width, auto);max-width:calc(100vw - 48px)!important;max-height:calc(100dvh - 48px)!important;margin:auto!important;overflow:hidden;background:#fff!important;opacity:1!important;animation:none!important;isolation:isolate}body>.el-overlay .el-dialog__header{flex:0 0 auto;min-height:24px;margin:0;padding:18px 52px 14px 20px}body>.el-overlay .el-dialog__headerbtn{top:10px;right:10px;width:40px;height:40px}body>.el-overlay .el-dialog__body{flex:1 1 auto;min-height:0;max-height:none;overflow:auto;padding:18px 20px}body>.el-overlay .el-dialog__footer{flex:0 0 auto;border-top:1px solid var(--vi-line);padding:14px 20px 18px;background:#fff}}.detail-layout>.timeline-toggle{display:inline-flex;width:48px;min-width:48px;flex:0 0 48px;align-self:flex-start;justify-content:center;margin:0}.detail-layout .timeline-panel{width:228px;min-width:228px;max-width:228px;flex:0 0 228px;padding:14px}.detail-layout .timeline-panel.is-collapsed{display:none}.detail-layout .detail-panel{width:auto;padding-left:0}@media(max-width:1024px){.detail-layout .timeline-panel{width:220px;min-width:220px;max-width:220px;flex-basis:220px}}.mobile-module-dock,.mobile-workbench-task-list,.detail-anchor-nav{display:none}@media(max-width:768px){:root{--mobile-page-gap: 8px;--mobile-card-radius: 8px;--mobile-card-shadow: 0 4px 16px rgba(25, 55, 45, .06);--mobile-dock-height: 60px;--mobile-control-height: 40px}body{background:#f4f7f4}body .el-button:not(.is-circle){min-height:44px!important;margin-left:0;padding-right:8px!important;padding-left:8px!important}.app-shell,.tx-page{padding-right:var(--mobile-page-gap)!important;padding-left:var(--mobile-page-gap)!important;padding-bottom:calc(var(--mobile-dock-height) + 18px + env(safe-area-inset-bottom))!important;background:#f4f7f4}.top-bar{min-height:56px!important;border-bottom-color:#c1a26047!important}.module-tabs{display:none!important;grid-template-columns:none!important;grid-auto-flow:column!important;grid-auto-columns:minmax(82px,max-content)!important;gap:0!important;overflow-x:auto!important;border:0;border-bottom:1px solid rgba(193,162,96,.24);border-radius:0;padding:0 4px!important;background:#fff!important;box-shadow:none;scrollbar-width:none}.module-tab{min-width:0!important;min-height:44px!important;border:0!important;border-bottom:2px solid transparent!important;border-radius:0!important;padding:0 10px!important;background:transparent!important;color:#52605b!important;font-size:13px!important;font-weight:600;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.module-tab.active{border-bottom-color:#6b9f8b!important;background:#f2f7f4!important;color:#4f8873!important;box-shadow:none}.summary-strip{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-flow:row!important;grid-auto-columns:auto!important;gap:8px!important;padding:10px 0!important;overflow:visible!important}body .app-shell .summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-flow:row!important;width:100%!important;padding:10px 0!important}.summary-item{min-width:0!important;min-height:58px!important;border:1px solid rgba(193,162,96,.24)!important;border-radius:var(--mobile-card-radius)!important;padding:7px 9px!important;background:#fff!important;box-shadow:var(--mobile-card-shadow);text-align:center!important}body .app-shell .summary-item{width:100%!important;min-width:0!important;min-height:58px!important;padding:7px 9px!important;text-align:center!important}.summary-item span{color:#5e8174!important;font-size:12px!important;font-weight:600}.summary-item strong{margin-top:4px;color:#172721!important;font-size:18px!important;line-height:1.1}.summary-item em{margin-top:4px;color:#b38d44!important;font-size:10px!important}.project-summary-strip .summary-item strong,.project-summary-strip .summary-item em{align-self:baseline;margin-top:0;font-size:12px!important;line-height:1.25}.panel,.side-panel,.panel-table,.tx-card,.tx-page-head{border-radius:var(--mobile-card-radius)!important;box-shadow:var(--mobile-card-shadow)!important}.kpi-note{margin:-2px 2px 10px!important;color:#7c8782!important;font-size:11px!important;line-height:1.55;text-align:left!important}.page-alert{margin:8px 0!important;border-radius:var(--mobile-card-radius)}.module-grid,.report-dashboard,.admin-shell,.development-dashboard{width:100%;min-width:0;gap:8px!important;margin-top:0!important}.panel-title,.panel-title.compact{min-width:0;align-items:center!important;gap:6px!important;padding:8px!important}.panel-title h2{font-size:16px!important;line-height:1.3}.panel-title span{display:-webkit-box;min-width:0;overflow:hidden;line-height:1.45;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.section-actions,.row-actions,.solution-actions{display:flex;flex-wrap:wrap;gap:5px}.panel-table{width:100%!important;max-width:100%!important;margin:0!important;overflow:hidden!important;background:transparent!important;box-shadow:none!important}.project-list-title{border:1px solid rgba(193,162,96,.24);border-radius:var(--mobile-card-radius);background:#fff;box-shadow:var(--mobile-card-shadow)}.project-list-title>h2{margin-bottom:2px}.project-tools{display:grid!important;grid-template-columns:max-content max-content minmax(72px,1fr) max-content max-content!important;align-items:center;gap:4px!important;width:100%;margin-top:5px;overflow:visible;border-radius:6px;background:#f3f7f5;box-shadow:inset 0 0 0 1px #d2ddd8}.project-tools .el-input{grid-column:auto;width:100%!important;min-width:0}.project-tools .el-input__inner{font-size:12px!important;line-height:1.2}.project-tools .el-button,.project-tools .el-upload,.project-tools .el-upload .el-button{width:auto!important;margin:0!important;padding-right:5px!important;padding-left:5px!important;font-size:11px;color:#33443d!important;font-weight:600;white-space:nowrap}.batch-action-bar{flex-wrap:wrap;margin:8px 0;border-radius:var(--mobile-card-radius);padding:10px;font-size:12px}.search-result-note{margin:8px 0;border:0;border-radius:8px;padding:9px 10px;background:#eef5f1;font-size:12px}.mobile-project-list{display:grid!important;gap:5px!important;padding:5px 0 0!important;background:transparent!important}.mobile-project-item{position:relative;gap:4px!important;border:1px solid rgba(193,162,96,.22)!important;border-radius:var(--mobile-card-radius)!important;padding:8px 70px 8px 10px!important;background:#fff!important;box-shadow:var(--mobile-card-shadow)}.mobile-project-item:active{border-color:#6197826b!important;background:#f2f7f4!important}.mobile-project-head strong{font-size:14px!important;line-height:1.3}.mobile-project-head>span{border:1px solid rgba(97,151,130,.18);border-radius:6px!important;background:#eaf4ee!important;padding:2px 6px!important;font-size:10px!important}.mobile-project-meta{display:flex!important;grid-template-columns:none!important;gap:10px!important;overflow-x:auto;border-top:1px solid #edf1ee;border-bottom:1px solid #edf1ee;padding:4px 0;font-size:11px!important;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}body .mobile-project-footer .el-button:not(.is-circle){position:absolute;right:8px;bottom:8px;min-width:48px;min-height:40px!important;height:40px;padding:0 7px!important;font-size:11px!important;font-weight:600}body .mobile-project-footer .el-button:not(.is-circle):after{content:"";position:absolute;top:-6px;right:0;bottom:-6px;left:0}.table-pagination{display:grid!important;justify-items:center;gap:5px!important;margin-top:5px;border:1px solid rgba(193,162,96,.2);border-radius:var(--mobile-card-radius);padding:7px!important;background:#fff}.table-pagination .el-pagination{max-width:100%;overflow-x:auto}.el-pagination button{min-width:40px!important}.el-input-number__decrease,.el-input-number__increase{width:40px!important}.development-main{border:0!important;background:transparent!important;box-shadow:none!important}.development-main>.panel-title{margin-bottom:6px;border:1px solid rgba(193,162,96,.24);border-radius:var(--mobile-card-radius);background:#fff;box-shadow:var(--mobile-card-shadow)}.development-tool-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;padding:0!important}.development-tool-card{min-height:108px!important;gap:4px!important;border-width:1px!important;border-radius:var(--mobile-card-radius)!important;padding:6px!important;box-shadow:var(--mobile-card-shadow)!important}.development-tool-top>div{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:1px}.development-tool-top{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:4px!important;min-width:0}.development-tool-card-green,.development-tool-card-gold{border-top-width:2px!important}.development-tool-top h3{min-width:0;max-width:100%;overflow:hidden;margin-top:2px!important;font-size:var(--tx-type-card-title)!important;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.development-tool-top strong{grid-column:2;grid-row:1;align-self:start;min-width:34px!important;min-height:26px!important;font-size:var(--tx-type-tag)!important}.development-tool-card p{display:none!important}.development-tool-footer{display:flex!important;align-items:center;gap:4px!important;min-height:44px;overflow:hidden}.development-tool-footer .el-tag{flex:1 1 auto;min-width:0;justify-self:start;max-width:100%;overflow:hidden;font-size:var(--tx-type-tag)!important}.development-tool-top span{min-width:0;max-width:100%;overflow:hidden;font-size:var(--tx-type-tag)!important;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.development-main>.panel-title span{overflow:hidden;font-size:11px!important;text-overflow:ellipsis;white-space:nowrap}.development-side .panel-title.compact{min-height:34px;padding:6px 8px!important}.development-side .panel-title h2{font-size:var(--tx-type-card-title)!important}.development-side .panel-title span{font-size:var(--tx-type-tag)!important}.development-side .mini-list{gap:0!important;padding:4px 8px!important;font-size:var(--tx-type-caption);line-height:1.35}.development-side .mini-list p{margin:0!important;border-radius:0!important;padding:5px 0!important}.development-tool-footer .el-button{width:auto!important;min-width:52px;min-height:44px!important;flex:0 0 auto;margin:0!important;padding:0 8px!important}.solution-workspace{margin:10px 0 0!important;border-radius:var(--mobile-card-radius)!important;padding:12px!important}.solution-workspace .panel-title{display:grid;grid-template-columns:minmax(0,1fr);padding:0 0 12px!important}.solution-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.solution-actions .el-button{width:100%;margin:0!important}.solution-project-row,.solution-form,.solution-upload-grid{grid-template-columns:minmax(0,1fr)!important}.solution-project-row{gap:7px!important}.linked-solution-assets{align-items:stretch;flex-direction:column}.linked-solution-assets .el-button{width:100%;margin-left:0}.solution-upload-box,.solution-validation{border-radius:8px!important;padding:12px!important}.solution-history{overflow-x:auto;-webkit-overflow-scrolling:touch}.station-dashboard{grid-template-columns:minmax(0,1fr)!important}.station-visual-panel,.station-dashboard>.side-stack,.station-dashboard>.side-panel{width:100%;min-width:0}.station-kpi-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:8px 10px!important}.station-kpi{min-height:58px!important;border-radius:8px!important;padding:7px 8px!important}.station-kpi strong{font-size:var(--tx-type-data)!important;font-weight:700;line-height:1.25;overflow-wrap:anywhere}.station-focus{display:grid!important;grid-template-columns:minmax(0,1fr);margin:0 10px 8px!important;border-radius:8px!important}.station-focus .el-select{width:100%!important}.station-chart-grid{grid-template-columns:minmax(0,1fr)!important;gap:8px!important;padding:0 10px 10px!important}.station-chart-card{min-height:210px!important;border-radius:8px!important;padding:10px!important}.chart-head{align-items:flex-start!important;flex-direction:column}.chart-head .el-segmented{width:100%;overflow-x:auto}.station-list{max-height:48vh!important;padding:8px!important}.station-row{min-height:58px;grid-template-columns:minmax(0,1fr) auto!important;border-radius:8px!important;padding:10px!important}.task-panel-head{display:block!important}.task-tools{display:grid!important;grid-template-columns:minmax(0,1fr) 64px 92px 44px!important;align-items:center;gap:4px!important;width:100%;margin-top:5px;overflow:visible}.task-tools .el-input{grid-column:auto;width:100%;min-width:0}.task-tools .el-select{width:100%;min-width:0}.task-tools .el-button{width:100%;margin:0;padding-right:5px!important;padding-left:5px!important;font-size:var(--tx-type-tag);white-space:nowrap}.task-grouped-list{gap:6px!important;padding:6px!important;padding-bottom:calc(58px + var(--mobile-dock-height) + env(safe-area-inset-bottom))!important}.task-project-group{border-radius:6px!important}.task-group-header{min-height:34px;padding:6px 8px!important}.task-group-header h3{display:-webkit-box;overflow:hidden;font-size:var(--tx-type-card-title)!important;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.task-group-header span{font-size:var(--tx-type-tag)!important}.task-list-row{grid-template-columns:minmax(0,1fr) auto auto;min-height:66px;gap:4px 6px!important;padding:7px 8px!important}.task-row-main{grid-column:1 / -1}.task-row-title strong{display:-webkit-box;overflow:hidden;font-size:var(--tx-type-card-title)!important;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.task-row-title em,.task-row-main small,.task-row-state time,.task-row-state b,.task-row-actions .el-button{font-size:var(--tx-type-tag)!important}.task-row-state{min-width:0;gap:4px;overflow:hidden}.task-row-state .el-tag{display:none}.task-row-actions .el-button{min-height:40px!important;padding:5px 9px!important}.task-detail-edit-grid{grid-template-columns:1fr!important}.task-edit-card-head{align-items:flex-start}.task-project-group:not(.is-expanded) .task-row-extra{display:none}.task-group-toggle{display:block;width:100%;min-height:32px;border:0;border-top:1px solid var(--color-border);background:var(--color-surface-muted);color:var(--color-brand-700);font-size:var(--tx-type-label)}.mobile-task-list{gap:5px!important;padding:6px!important;padding-bottom:calc(62px + var(--mobile-dock-height) + env(safe-area-inset-bottom))!important}.mobile-task-card{grid-template-columns:minmax(0,1fr) auto!important;gap:3px 8px!important;min-height:74px!important;border-radius:var(--mobile-card-radius)!important;padding:8px 9px!important;box-shadow:0 3px 12px #19372d0d}.mobile-task-card strong{grid-column:1 / -1;display:-webkit-box;overflow:hidden;line-height:1.3;white-space:normal;font-size:var(--tx-type-card-title)!important;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.mobile-task-card>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-secondary)!important;font-size:var(--tx-type-label)!important}.mobile-task-card em{flex-wrap:nowrap!important;gap:4px!important;white-space:nowrap}.mobile-task-tabs{grid-template-columns:repeat(4,minmax(0,1fr))!important;bottom:calc(var(--mobile-dock-height) + env(safe-area-inset-bottom))!important;z-index:850!important}.done-list,.mini-list,.report-task-list{padding:8px 10px!important}.report-dashboard{grid-template-columns:minmax(0,1fr)!important}.report-module{overflow:hidden}.report-module .panel-title{align-items:center!important}.report-card-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:10px!important}.report-metric-card{grid-template-columns:minmax(0,1fr) auto!important;min-height:50px!important;border-radius:8px!important;padding:8px 9px!important;box-shadow:none!important}.report-metric-card strong{font-size:var(--tx-type-data)!important;font-weight:700;line-height:1.25}.report-task-list p,.mini-list p{margin:0 0 7px!important;border-radius:8px!important;padding:10px!important}.report-risk-list{padding:0 12px 12px 28px!important}.admin-card-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(154px,1fr))!important;gap:8px!important;padding:0!important}.admin-module-card{grid-template-columns:36px minmax(0,1fr);grid-template-rows:auto minmax(34px,auto) auto;align-items:center;gap:5px 7px!important;min-height:112px!important;border-radius:var(--mobile-card-radius)!important;padding:9px!important;text-align:left}.admin-module-card strong{grid-column:2;grid-row:1;min-width:0;overflow:hidden;font-size:var(--tx-type-card-title)!important;text-overflow:ellipsis;white-space:nowrap}.admin-module-card p{display:-webkit-box;grid-column:1 / -1;grid-row:2;overflow:hidden;margin:0!important;font-size:var(--tx-type-caption)!important;line-height:1.3;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.admin-module-card em{grid-column:1 / -1;grid-row:3;align-self:end;white-space:nowrap}.admin-module-icon{width:36px!important;height:36px!important;border-radius:8px!important}.admin-detail-head{position:sticky;top:58px;z-index:20;display:flex;align-items:center;gap:8px;margin-bottom:8px;border:1px solid rgba(193,162,96,.24);border-radius:var(--mobile-card-radius);padding:8px;background:#fffffff5}.admin-shell .el-table,.admin-config-panel .el-table,.wide-panel>.el-table{width:100%;min-width:680px}.admin-shell .side-panel{overflow-x:auto;-webkit-overflow-scrolling:touch}.website-admin-grid,.permission-grid,.permission-editor{grid-template-columns:minmax(0,1fr)!important}body .permission-matrix-dialog .el-dialog__body{max-height:none;overflow:hidden}.permission-editor{height:min(62vh,560px)}.permission-toolbar{flex-wrap:nowrap;gap:5px;overflow-x:auto;padding:7px}.permission-toolbar .el-select{width:132px;flex:0 0 132px}.permission-toolbar .el-button{flex:0 0 auto;min-height:36px!important;padding:5px 8px!important;font-size:11px}.manual-form,.edit-form{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 8px!important}.el-form-item{margin-bottom:10px}.manual-form>:has(textarea),.edit-form>:has(textarea),.manual-form>.el-upload,.edit-form>.el-upload{grid-column:1 / -1}.el-collapse-item__header{min-height:48px;padding:0 12px;font-size:13px;line-height:1.4}.el-collapse-item__content{padding:0 12px 12px}.el-popper{max-width:calc(100vw - 20px)!important}.detail-shell{padding-bottom:calc(56px + env(safe-area-inset-bottom))!important}.detail-shell .top-bar{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center!important;gap:8px!important;padding:6px 8px!important}.detail-shell .top-bar>div:first-child{min-width:0}.detail-shell .top-bar h1{display:-webkit-box;overflow:hidden;margin:2px 0 0;font-size:16px!important;line-height:1.3;-webkit-box-orient:vertical;-webkit-line-clamp:2}.detail-head-actions{display:grid!important;grid-template-columns:repeat(2,auto);gap:6px!important}.detail-head-actions .el-button{min-height:36px!important;margin:0!important;padding:0 10px!important}.detail-shell .detail-layout{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:6px!important;margin-top:6px!important}.detail-anchor-nav{position:sticky;top:0;z-index:90;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(60px,1fr);gap:3px;margin:5px 0 0;overflow-x:auto;border:1px solid rgba(193,162,96,.22);border-radius:8px;padding:3px;background:#fffffffa;box-shadow:0 5px 14px #19372d14;scrollbar-width:none;-webkit-overflow-scrolling:touch}.detail-anchor-nav button{min-width:60px;min-height:40px!important;height:40px;border:0;border-radius:6px;padding:0 6px;background:#eef5f1;color:#356b58;font-size:11px;font-weight:600;white-space:nowrap}.detail-anchor-target,#phase-workbench,#project-timeline{scroll-margin-top:62px}.detail-shell .timeline-toggle{display:none!important}.detail-shell .timeline-panel,.detail-shell .timeline-panel.is-collapsed{position:relative!important;inset:auto!important;visibility:visible!important;width:100%!important;min-width:0!important;max-width:100%!important;max-height:none!important;min-height:0!important;height:auto!important;margin:0!important;overflow:hidden!important;opacity:1!important;transform:none!important;pointer-events:auto!important}.detail-shell .detail-panel{order:1}.detail-shell .timeline-panel{order:2}.detail-shell .timeline-panel .panel-heading{padding:11px 12px!important}.detail-shell .timeline-list{display:grid!important;grid-auto-flow:column!important;grid-auto-columns:minmax(250px,82vw);gap:8px!important;max-height:none!important;margin:0!important;overflow-x:auto!important;overflow-y:hidden!important;padding:10px!important;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.detail-shell .timeline-list li{min-height:46px;border:1px solid rgba(193,162,96,.2)!important;border-radius:9px!important;padding:10px!important;background:#fff;scroll-snap-align:start}.detail-shell .timeline-list li.active{border-color:#6197827a!important;background:#edf5f1!important}.detail-shell .detail-panel{width:100%!important;min-width:0!important;min-height:0!important;padding:0!important}.detail-panel>.project-archive-overview{order:1!important;margin-top:0}.detail-panel>.phase-detail-workbench{order:2!important;margin-top:6px}.phase-detail-workbench,.detail-single-section{border-radius:var(--mobile-card-radius)!important;background:#fff;box-shadow:var(--mobile-card-shadow)}.phase-detail-workbench{margin-bottom:6px!important;padding:0!important;overflow:hidden}.phase-detail-head{display:grid!important;grid-template-columns:minmax(0,1fr);gap:6px!important;margin-bottom:0!important;padding:8px!important}.phase-detail-head h2{margin:0!important;font-size:16px!important;line-height:1.3}.phase-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px!important}.phase-actions .el-button{width:100%;min-height:42px!important;margin:0!important;padding:0 3px!important;font-size:12px!important;white-space:normal}.phase-tabs .el-tabs__header{margin:0 8px 5px}.phase-tabs .el-tabs__nav-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.phase-tabs .el-tabs__nav-wrap:after{display:none}.phase-tabs .el-tabs__nav-scroll{overflow:visible}.phase-tabs .el-tabs__nav{float:none;width:max-content}.phase-tabs .el-tabs__content{padding:0 8px 8px}.phase-form-grid,.decision-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:4px 7px!important}.phase-field-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:7px!important}.phase-form-grid .el-form-item,.phase-field-item{min-width:0;margin-bottom:4px!important}.phase-form-grid .el-form-item__label,.phase-field-item>span{min-height:0!important;padding:0 0 3px!important;font-size:11px!important;line-height:1.25!important;overflow-wrap:anywhere}.phase-form-grid .el-input__wrapper,.phase-form-grid .el-select__wrapper,.phase-form-grid .el-input-number,.phase-field-grid .el-input__wrapper,.phase-field-grid .el-select__wrapper{width:100%!important;min-height:34px!important;padding-top:0!important;padding-bottom:0!important}.phase-form-grid .el-input__inner,.phase-form-grid .el-select__selected-item,.phase-field-grid .el-input__inner{min-width:0;font-size:13px!important}.phase-field-item:has(textarea){grid-column:1 / -1}.phase-field-grid textarea,.phase-note-editor textarea{min-height:50px!important;padding:6px 8px!important;font-size:13px!important;line-height:1.4!important}.phase-progress-panel{gap:6px!important;margin:4px 8px 7px!important;padding:8px!important}.phase-progress-panel .phase-section-title{margin:0!important;padding-top:0!important;border-top:0!important}.phase-progress-current{font-size:13px!important;line-height:1.45!important}.phase-note-editor{grid-template-columns:minmax(0,1fr) auto!important;gap:5px!important;margin-top:3px!important}.phase-note-editor .el-button{min-height:40px!important;padding:0 7px!important;font-size:12px!important}.phase-section-title{gap:6px!important;margin:7px 0 5px!important;padding-top:6px!important}.phase-progress-history>p{gap:3px 6px!important;padding:4px 0!important;font-size:12px!important;line-height:1.35}.archive-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important;margin:5px 0 7px!important}.archive-card,.archive-card-wide{min-width:0;border-radius:8px!important;padding:7px!important;box-shadow:none!important}.archive-card-wide{grid-column:1 / -1}.archive-card>span{margin-bottom:4px!important;font-size:12px!important}.archive-card p{display:grid!important;grid-template-columns:minmax(42px,auto) minmax(0,1fr);gap:4px!important;margin:3px 0!important;font-size:12px!important;line-height:1.35!important;overflow-wrap:anywhere}.archive-card p b{min-width:0!important;font-size:11px!important}.archive-card-wide>p{display:block!important}.archive-progress-history{gap:3px!important;margin-top:5px!important;padding-top:5px!important}.archive-progress-history small{font-size:11px!important;line-height:1.35!important}.detail-panel>.el-table,.phase-tabs .el-table{width:100%!important;min-width:0!important;max-width:100%!important}.detail-panel .el-table__body-wrapper,.phase-tabs .el-table__body-wrapper{overflow-x:auto!important}.detail-single-section{margin-top:6px!important;padding:0 7px 7px}.phase-save-actions{right:10px!important;bottom:calc(10px + env(safe-area-inset-bottom))!important;left:10px!important;border-radius:10px!important;padding:4px!important}.phase-save-actions .el-button{width:100%!important;min-height:44px!important}.workbench-page,.approval-page,.compare-page,body .manager-page{width:100%!important;max-width:100%!important;padding:10px 10px calc(18px + env(safe-area-inset-bottom))!important;background:#f4f7f4!important}.workbench-page .page-head,.approval-page .page-head,.compare-page .page-head,.manager-page .tx-page-head{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:12px!important;border-radius:var(--mobile-card-radius)!important;padding:15px!important;box-shadow:var(--mobile-card-shadow)!important}.workbench-page .page-head h1,.approval-page .page-head h1,.compare-page .page-head h1,.manager-page .tx-page-head h1{overflow-wrap:anywhere;font-size:20px!important;line-height:1.35}.workbench-page .head-actions,.approval-page .head-actions,.compare-page .head-actions,.manager-page .head-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px!important;width:100%;margin-top:0!important}.workbench-page .head-actions .el-button,.approval-page .head-actions .el-button,.compare-page .head-actions .el-button,.manager-page .head-actions .el-button{width:100%;margin:0!important}.workbench-page .metric-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;margin:10px 0!important}.workbench-page .metric-grid article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:58px;border-radius:var(--mobile-card-radius)!important;padding:10px!important;box-shadow:var(--mobile-card-shadow)!important}.workbench-page .metric-grid strong{margin-top:0!important;font-size:20px!important}.workbench-page .dashboard-grid,.manager-page .manager-grid{grid-template-columns:minmax(0,1fr)!important;gap:10px!important}.workbench-page .panel,.manager-page .panel{border-radius:var(--mobile-card-radius)!important;padding:12px!important}.workbench-page .panel-title,.manager-page .panel-title{margin-bottom:10px!important;padding:0 0 10px!important}.workbench-page .panel .el-table{min-width:680px}.workbench-page .panel .el-table__body-wrapper{overflow-x:auto!important}.workbench-page .panel-wide>.el-table{display:none!important}.mobile-workbench-task-list{display:grid;gap:8px}.mobile-workbench-task-card{overflow:hidden;border:1px solid rgba(193,162,96,.22);border-radius:9px;background:#fff}.mobile-workbench-task-main{display:grid;gap:6px;width:100%;min-height:92px!important;border:0;padding:11px 12px;background:transparent;color:#26352f;text-align:left}.mobile-workbench-task-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mobile-workbench-task-head strong{min-width:0;font-size:14px;line-height:1.4}.mobile-workbench-task-main>span:not(.mobile-workbench-task-head),.mobile-workbench-task-main small{color:#748079;font-size:12px}.mobile-workbench-task-card footer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border-top:1px solid #edf1ee;padding:8px}.mobile-workbench-task-card footer .el-button{width:100%;min-height:40px!important;margin:0}.manager-metrics{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;margin:10px 0!important}.manager-metrics .metric-card{min-height:66px;border-radius:var(--mobile-card-radius)!important;padding:8px 9px!important;box-shadow:var(--mobile-card-shadow)!important}.manager-metrics .metric-card:last-child:nth-child(odd){grid-column:1 / -1}.manager-metrics .metric-card strong{font-size:18px!important}.manager-page .health-board{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;max-height:54vh}.manager-page .health-card,.manager-page .load-list button,.manager-page .stuck-list button{min-width:0;border-radius:8px!important;padding:10px!important}.approval-page .filter-bar{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:8px!important;margin:10px 0!important;border-radius:var(--mobile-card-radius)!important;padding:12px!important;box-shadow:var(--mobile-card-shadow)!important}.approval-page .filter-bar .el-radio-group{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;overflow-x:auto}.approval-page .filter-bar .el-radio-button__inner{width:100%;padding:10px 5px}.approval-page .approval-list{display:grid;gap:8px!important}.approval-page .approval-list>.el-empty{min-height:300px;border:1px solid rgba(193,162,96,.2);border-radius:var(--mobile-card-radius);background:#fff;box-shadow:var(--mobile-card-shadow)}.approval-page .approval-card{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;border-radius:var(--mobile-card-radius)!important;padding:13px!important;box-shadow:var(--mobile-card-shadow)!important}.approval-page .approval-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.approval-page .approval-actions .el-button{width:100%;margin:0!important}.compare-page .selector-panel,.compare-page .analysis-panel,.compare-table{margin-top:10px!important;border-radius:var(--mobile-card-radius)!important;padding:12px!important;box-shadow:var(--mobile-card-shadow)!important}.compare-page .selector-panel .el-select{width:100%!important}.compare-table{max-width:100%;overflow-x:auto!important;-webkit-overflow-scrolling:touch}.compare-table table{min-width:720px}.compare-page .analysis-panel h2{font-size:17px!important}.mobile-module-dock{position:fixed;right:0;bottom:0;left:0;z-index:900;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));min-height:var(--mobile-dock-height);border-top:1px solid rgba(193,162,96,.24);padding:4px 4px 3px;padding-bottom:max(4px,env(safe-area-inset-bottom));background:#fffffff5;box-shadow:0 -6px 18px #19372d14;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.mobile-module-dock__item{display:grid;place-items:center;align-content:center;gap:2px;min-width:0;min-height:48px!important;border:0;border-radius:8px;padding:3px 1px;background:transparent;color:#7a8580}.mobile-module-dock__item span{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#eef3ef;color:#6f827a;font-size:12px;font-weight:700}.mobile-module-dock__item em{overflow:hidden;max-width:100%;font-size:11px;font-style:normal;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.mobile-module-dock__item.active{color:#4f8873}.mobile-module-dock__item.active span{background:#e3f0ea;color:#4f8873;box-shadow:inset 0 0 0 1px #61978242}.el-overlay-dialog{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;overflow:auto}.el-dialog,.task-phase-dialog .el-dialog{width:95%!important;max-width:95vw!important;max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;margin:0 auto!important;border-radius:14px!important}.el-dialog__header{margin-right:0;border-bottom:1px solid rgba(193,162,96,.24);padding:16px 44px 12px 16px}.el-dialog__body,.task-phase-dialog .el-dialog__body{max-height:66dvh!important;overflow-y:auto!important;padding:14px 16px!important;-webkit-overflow-scrolling:touch}.el-dialog__footer{border-top:1px solid rgba(193,162,96,.2);padding:10px 16px calc(10px + env(safe-area-inset-bottom))}body .el-dialog.task-phase-dialog{display:flex;flex-direction:column;width:calc(100% - 12px)!important;max-width:calc(100vw - 12px)!important;height:calc(100dvh - 12px);max-height:calc(100dvh - 12px)!important;border-radius:10px!important}body .el-dialog.task-phase-dialog .el-dialog__header{flex:0 0 auto;min-height:38px;padding:8px 38px 7px 10px!important}body .el-dialog.task-phase-dialog .el-dialog__title{font-size:15px;line-height:1.35}body .el-dialog.task-phase-dialog .el-dialog__headerbtn{width:44px;height:44px}body .el-dialog.task-phase-dialog .el-dialog__body{flex:1 1 auto;min-height:0;max-height:none!important;padding:6px 8px 8px!important}.task-detail-dialog-body{gap:6px!important}.task-summary-card,.task-edit-card,.task-phase-card{min-width:0;gap:6px!important;border-radius:8px!important;padding:7px!important}.task-summary-card{display:grid!important;grid-template-columns:minmax(0,1fr)}.task-summary-card h2{margin:0 0 3px!important;font-size:15px!important;line-height:1.3;overflow-wrap:anywhere}.task-summary-card p{display:flex;flex-wrap:wrap;gap:2px 8px;margin:2px 0!important;font-size:11px;line-height:1.35!important}.task-summary-card p span{margin-left:0!important}.task-summary-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}body .task-phase-dialog .el-button:not(.is-circle){min-width:0;min-height:40px!important;height:40px;padding:0 7px!important;font-size:11px}.task-edit-card-head{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:6px!important}.task-edit-card-head h3,.task-phase-card-head h3{margin:0!important;font-size:13px!important;line-height:1.3}.task-edit-card-head span,.task-phase-card-head span,.task-phase-subtitle{font-size:10px!important;line-height:1.3}.task-detail-edit-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))!important;gap:0 6px!important}.task-detail-edit-grid .el-form-item{min-width:0;margin-bottom:4px!important}.task-detail-edit-grid .el-form-item__label{min-height:0;padding-bottom:2px!important;font-size:11px;line-height:1.25}.task-phase-dialog .el-input__wrapper,.task-phase-dialog .el-select__wrapper,.task-phase-dialog .el-date-editor{min-height:40px!important;height:40px!important}.task-phase-dialog .el-input__inner,.task-phase-dialog .el-select__selected-item{min-width:0;font-size:12px!important}.task-phase-dialog .el-textarea__inner{min-height:50px!important;padding:5px 7px;font-size:12px;line-height:1.35}.task-phase-card-head{align-items:center!important;gap:6px!important}.task-current-progress{gap:4px!important;margin:2px 0 4px!important;border-radius:7px!important;padding:6px!important}.task-current-progress>div:first-child{gap:6px!important;font-size:10px!important}.task-current-progress>div:first-child strong{font-size:12px!important}.task-current-progress>p{font-size:12px!important;line-height:1.35!important}.task-note-editor{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:5px!important}.task-progress-history,.task-note-list{gap:2px!important;padding-top:4px!important}.task-progress-history>p{gap:2px 6px!important;padding:3px 0!important;font-size:10px!important;line-height:1.3}.task-phase-field-list{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:5px!important}.task-phase-field.task-field-textarea{grid-column:1 / -1}.task-phase-field,.task-material-item{min-width:0;gap:4px!important;border-radius:7px!important;padding:6px!important}.task-phase-field span,.task-material-item strong{font-size:11px!important;line-height:1.3;overflow-wrap:anywhere}.task-phase-field em,.task-material-item span{margin-left:3px!important;font-size:10px!important}.task-phase-field em.optional,.task-material-item span.optional{color:var(--vi-muted)}.task-material-grid{grid-template-columns:minmax(0,1fr)!important;gap:5px!important}.task-material-item{grid-template-columns:repeat(2,minmax(0,1fr))}.task-material-item>div,.task-material-item>.mobile-camera-input{grid-column:1 / -1}.task-phase-dialog .mobile-camera-input{min-height:34px;padding:4px;font-size:10px}.task-phase-subtitle{margin-top:1px}.task-note-list{max-height:110px}.task-note-list p{margin:0;padding:4px 6px;font-size:11px;line-height:1.35;overflow-wrap:anywhere}}@media(max-width:480px){.detail-shell .archive-card-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important}body .app-shell .project-summary-strip{grid-template-columns:repeat(auto-fit,minmax(104px,1fr))!important;gap:6px!important;padding:7px 0!important}body .app-shell .project-summary-strip .summary-item{grid-template-columns:minmax(0,1fr);gap:3px;min-height:48px!important;overflow:hidden;padding:4px 5px!important}body .app-shell .project-summary-strip .summary-item span{overflow:hidden;font-size:10px!important;text-overflow:ellipsis;white-space:nowrap}body .app-shell .project-summary-strip .summary-item strong{align-self:baseline;margin-top:0;font-size:12px!important;line-height:1.25}body .app-shell .project-summary-strip .summary-item em{display:inline-block;align-self:baseline;overflow:hidden;margin:0;font-size:12px!important;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}body .app-shell .summary-strip-admin .summary-item{grid-template-columns:minmax(0,1fr)!important;justify-items:center}body .app-shell .summary-strip-admin .summary-item strong{grid-column:1 / -1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .app-shell .summary-strip-admin .summary-item em{display:none!important}}@media(max-width:768px){body .app-shell .summary-strip-tasks{grid-template-columns:repeat(2,minmax(0,1fr))!important}body .app-shell .summary-strip-tasks .summary-item{display:grid;grid-template-columns:minmax(0,1fr);min-height:54px!important;align-content:center;justify-items:center;gap:4px;padding:8px 10px!important}body .app-shell .summary-strip-tasks .summary-item span,body .app-shell .summary-strip-tasks .summary-item strong{font-size:12px!important}.task-row-title .task-launched-days{font-size:10px!important}}@media(max-width:480px){body .app-shell .summary-strip-tasks,body .app-shell .summary-strip-stations,body .app-shell .summary-strip-reports{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(max-width:480px){.module-tab{font-size:12px!important}.summary-item strong{font-size:17px!important}}@media(max-width:768px){body .app-shell .project-summary-strip .summary-item{display:grid!important;grid-template-columns:minmax(0,1fr)!important;align-content:center;justify-items:center;text-align:center!important}body .app-shell .summary-item>.summary-item-label{width:100%;text-align:center}body .app-shell .summary-item>.summary-item-metrics{display:flex!important;width:100%;min-width:0;align-items:baseline;justify-content:center;gap:6px;overflow:hidden;white-space:nowrap}body .app-shell .summary-item>.summary-item-metrics strong,body .app-shell .summary-item>.summary-item-metrics em{min-width:0;margin:0}body .app-shell .summary-strip-admin .summary-item em{display:none!important}body .app-shell input,body .app-shell textarea,body .app-shell .el-input__inner,body .app-shell .el-textarea__inner{font-size:16px!important}}@media(max-width:480px){body .app-shell .summary-item>.summary-item-metrics{gap:5px}}@media(max-width:768px)and (orientation:landscape){:root{--mobile-dock-height: 52px}body .app-shell .project-summary-strip{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}body .app-shell .summary-strip-development,body .app-shell .summary-strip-tasks,body .app-shell .summary-strip-reports{grid-template-columns:repeat(4,minmax(0,1fr))!important}body .app-shell .summary-strip-stations,body .app-shell .summary-strip-admin{grid-template-columns:repeat(3,minmax(0,1fr))!important}body .app-shell .summary-item{min-height:46px!important}.mobile-module-dock{padding:2px 6px;padding-bottom:max(2px,env(safe-area-inset-bottom))}.mobile-module-dock__item{display:flex;min-height:44px!important;align-items:center;justify-content:center;gap:5px}.mobile-module-dock__item span{width:22px;height:22px}}.task-phase-status-label{display:inline-flex;align-items:center;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-2);background:var(--color-info-bg);color:var(--color-info-text);font-size:var(--text-xs);font-weight:700}.task-phase-status-label i{color:var(--color-brand-500);font-size:8px;font-style:normal}.task-completion-stepper{display:grid;gap:var(--space-2);border-radius:var(--radius-md);padding:var(--space-2);background:var(--color-surface-muted)}.task-completion-stepper ol{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(24px,1fr));align-items:center;gap:var(--space-1);margin:0;padding:0;list-style:none}.task-completion-stepper ol:before{content:"";position:absolute;top:50%;right:12px;left:12px;height:2px;background:var(--color-border);transform:translateY(-50%)}.task-completion-stepper li{position:relative;display:grid;height:24px;place-items:center}.task-completion-stepper li span{position:relative;z-index:1;width:12px;height:12px;border:2px solid var(--color-border);border-radius:50%;background:var(--color-surface-solid)}.task-completion-stepper li.is-completed span{border-color:var(--color-brand-500);background:var(--color-brand-500)}.task-completion-stepper li.is-current span{border-color:var(--color-brand-500);box-shadow:0 0 0 3px #41997729}.task-completion-stepper p{margin:0;color:var(--color-text-secondary);font-size:var(--text-xs);text-align:center}.task-dialog-footer-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.task-dialog-secondary-actions,.task-dialog-primary-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.task-dialog-footer-actions .el-button{margin:0}.task-grouped-list,.task-group-rows{margin:0;list-style:none}.task-group-rows{padding:0}@media(max-width:768px){:root{--mobile-space-1: 4px;--mobile-space-2: 8px;--mobile-space-3: 12px;--mobile-space-4: 16px;--mobile-radius-sm: 8px;--mobile-radius-md: 12px;--mobile-radius-lg: 16px;--mobile-font-page: 24px;--mobile-font-section: 20px;--mobile-font-body: 16px;--mobile-font-label: 14px;--mobile-font-caption: 12px;--task-detail-font-title: 18px;--task-detail-font-heading: 16px;--task-detail-font-body: 14px;--task-detail-font-caption: 12px;--task-detail-font-control: 16px;--mobile-brand: oklch(.54 .11 165);--mobile-brand-strong: oklch(.42 .09 165);--mobile-brand-soft: oklch(.94 .03 165);--mobile-bg: oklch(.97 .01 165);--mobile-surface: oklch(.995 .005 165);--mobile-surface-muted: oklch(.95 .012 165);--mobile-text: oklch(.25 .012 165);--mobile-text-secondary: oklch(.44 .012 165);--mobile-text-tertiary: oklch(.58 .01 165);--mobile-border: oklch(.56 .018 165 / .28);--mobile-border-strong: oklch(.48 .05 165 / .44);--mobile-danger: oklch(.52 .16 25);--mobile-danger-soft: oklch(.96 .025 25);--mobile-shadow: 0 4px 16px oklch(.28 .02 165 / .08);--vi-white: var(--mobile-surface);--vi-surface: var(--mobile-surface);--vi-frost: var(--mobile-surface-muted);--vi-green: var(--mobile-brand);--vi-green-soft: var(--mobile-brand-soft);--vi-green-hover: var(--mobile-brand-strong);--vi-ink: var(--mobile-text);--vi-muted: var(--mobile-text-secondary);--vi-line: var(--mobile-border);--vi-line-green: var(--mobile-border-strong);--el-color-primary: var(--mobile-brand);--el-color-primary-dark-2: var(--mobile-brand-strong);--el-color-primary-light-9: var(--mobile-brand-soft);--el-border-radius-base: var(--mobile-radius-sm)}body,.app-shell,.tx-page{background:var(--mobile-bg)!important;color:var(--mobile-text)}body .el-button--primary{--el-button-bg-color: var(--mobile-brand) !important;--el-button-border-color: var(--mobile-brand) !important;--el-button-hover-bg-color: var(--mobile-brand-strong) !important;--el-button-hover-border-color: var(--mobile-brand-strong) !important;--el-button-active-bg-color: var(--mobile-brand-strong) !important;--el-button-active-border-color: var(--mobile-brand-strong) !important;--el-button-disabled-bg-color: oklch(.84 .045 165) !important;--el-button-disabled-border-color: oklch(.84 .045 165) !important;--el-button-disabled-text-color: oklch(.995 .005 165) !important}body .el-button--primary.is-plain{--el-button-bg-color: var(--mobile-surface) !important;--el-button-border-color: var(--mobile-brand) !important;--el-button-text-color: var(--mobile-brand-strong) !important}body .app-shell .project-summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:var(--mobile-space-2)!important;padding:var(--mobile-space-2)!important}body .app-shell .project-summary-strip .summary-item{position:relative;min-height:64px!important;overflow:hidden;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:var(--mobile-space-2) 28px var(--mobile-space-2) var(--mobile-space-2)!important;background:var(--mobile-surface)!important;box-shadow:var(--mobile-shadow)!important;color:var(--mobile-text)!important;transition:transform .12s ease,border-color .12s ease,background .12s ease}body .app-shell .project-summary-strip .summary-item:after{content:"";position:absolute;inset:50% auto auto 50%;width:0;height:0;border-radius:50%;background:#0f825e1f;transform:translate(-50%,-50%);transition:width .18s ease,height .18s ease}body .app-shell .project-summary-strip .summary-item:active{border-color:var(--mobile-brand)!important;background:var(--mobile-brand-soft)!important;transform:scale(.98)}body .app-shell .project-summary-strip .summary-item:active:after{width:180px;height:180px}body .app-shell .summary-item>.summary-item-label{color:var(--mobile-brand-strong)!important;font-size:var(--mobile-font-caption)!important;font-weight:700;line-height:1.25}body .app-shell .summary-item>.summary-item-metrics{gap:var(--mobile-space-1)!important;color:var(--mobile-text)}body .app-shell .summary-item>.summary-item-metrics strong,body .app-shell .summary-item>.summary-item-metrics em{color:var(--mobile-text)!important;font-size:var(--mobile-font-label)!important;font-style:normal;line-height:1.25}body .app-shell .summary-item>.summary-item-metrics em{color:#937636!important}.summary-item-cue{position:absolute;right:var(--mobile-space-2);top:50%;color:var(--mobile-brand)!important;font-size:var(--mobile-font-section)!important;line-height:1;transform:translateY(-50%)}.project-list-title{border-color:var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:var(--mobile-space-3)!important;background:var(--mobile-surface)!important;box-shadow:var(--mobile-shadow)!important}.project-list-title>h2{color:var(--mobile-text)!important;font-size:var(--mobile-font-section)!important;line-height:1.25}.project-tools{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:var(--mobile-space-2)!important;margin-top:var(--mobile-space-2)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface-muted)!important;box-shadow:inset 0 0 0 1px var(--mobile-border)!important}.project-tools .el-input{grid-column:1 / -1!important;grid-row:2;justify-self:center;width:min(100%,280px)!important}.project-tools .el-upload,.project-tools .el-button,.project-tools .el-upload .el-button{min-height:40px!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-2)!important;font-size:var(--mobile-font-label)!important}.project-tools .project-search-button,.project-tools .project-delete-button{display:none!important}.project-tools .el-input__wrapper{min-height:40px;border-radius:var(--mobile-radius-sm)!important;background:var(--mobile-surface)!important;box-shadow:inset 0 0 0 1px var(--mobile-border-strong)!important}.project-tools .el-input__inner,.project-tools .el-input__inner::placeholder{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-label)!important}.project-search-icon{display:inline-grid;width:32px;height:32px;place-items:center;border:0;border-radius:var(--mobile-radius-sm);padding:0;background:transparent;color:var(--mobile-brand-strong);cursor:pointer}.project-search-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:2}.batch-action-bar{gap:var(--mobile-space-2)!important;margin:var(--mobile-space-2) 0!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface)!important;color:var(--mobile-text-secondary)!important}.mobile-batch-delete{margin-left:auto!important;border-color:var(--mobile-danger)!important;background:var(--mobile-danger-soft)!important;color:var(--mobile-danger)!important}.mobile-project-list{gap:var(--mobile-space-2)!important;padding:var(--mobile-space-2) 0 0!important}.mobile-project-item{border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:var(--mobile-space-3) 72px var(--mobile-space-3) var(--mobile-space-3)!important;background:var(--mobile-surface)!important;box-shadow:var(--mobile-shadow)!important}.mobile-project-head strong{color:var(--mobile-text)!important;font-size:var(--mobile-font-body)!important}.mobile-project-identity small,.mobile-project-meta,.mobile-project-footer>span,.kpi-note{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important}body .mobile-project-footer .el-button:not(.is-circle){padding:0 var(--mobile-space-2)!important;font-size:var(--mobile-font-caption)!important}.mobile-project-footer .el-dropdown{position:absolute;right:var(--mobile-space-2);bottom:var(--mobile-space-2)}.mobile-project-meta{gap:var(--mobile-space-2)!important;overflow:visible!important;border-color:var(--mobile-border)!important;white-space:normal!important;flex-wrap:wrap}.mobile-project-head>span{border-color:var(--mobile-border-strong)!important;background:var(--mobile-brand-soft)!important;color:var(--mobile-brand-strong)!important;font-size:var(--mobile-font-caption)!important}.search-result-note{border-radius:var(--mobile-radius-sm)!important;background:var(--mobile-brand-soft)!important;color:var(--mobile-brand-strong)!important;font-size:var(--mobile-font-caption)!important}body .el-dialog.task-phase-dialog{width:calc(100% - var(--mobile-space-2))!important;max-width:calc(100vw - var(--mobile-space-2))!important;height:calc(100dvh - var(--mobile-space-2))!important;max-height:calc(100dvh - var(--mobile-space-2))!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;background:var(--mobile-surface)!important;box-shadow:0 16px 40px #19251f33!important}body .el-dialog.task-phase-dialog .el-dialog__header{min-height:48px;border-bottom:1px solid var(--mobile-border)!important;padding:var(--mobile-space-3) 48px var(--mobile-space-2) var(--mobile-space-3)!important;background:var(--mobile-surface)!important}body .el-dialog.task-phase-dialog .el-dialog__title{color:var(--mobile-text)!important;font-size:var(--task-detail-font-title)!important;font-weight:700;line-height:1.4}body .el-dialog.task-phase-dialog .el-dialog__body{padding:var(--mobile-space-2)!important;background:var(--mobile-bg)!important}body .el-dialog.task-phase-dialog .el-dialog__footer{flex:0 0 auto;border-top:1px solid var(--mobile-border)!important;padding:var(--mobile-space-2)!important;padding-bottom:max(var(--mobile-space-2),env(safe-area-inset-bottom))!important;background:var(--mobile-surface)!important;box-shadow:0 -4px 16px #202c2614}.task-detail-dialog-body{gap:var(--mobile-space-2)!important}.task-summary-card,.task-edit-card,.task-phase-card{gap:var(--mobile-space-2)!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:var(--mobile-space-3)!important;background:var(--mobile-surface)!important}.task-summary-card h2,.task-edit-card-head h3,.task-phase-card-head h3{color:var(--mobile-text)!important}.task-summary-card h2{margin:0 0 var(--mobile-space-1)!important;font-size:var(--task-detail-font-heading)!important;line-height:1.4!important}.task-edit-card-head h3,.task-phase-card-head h3{margin:0!important;font-size:var(--task-detail-font-heading)!important;line-height:1.4!important}.task-summary-card p,.task-detail-edit-grid .el-form-item__label{color:var(--mobile-text-secondary)!important;font-size:var(--task-detail-font-body)!important;line-height:1.4!important}.task-summary-card p{margin:var(--mobile-space-1) 0!important}.task-current-progress>div:first-child,.task-progress-history>p,.task-progress-history-title span,.task-progress-empty{color:var(--mobile-text-secondary)!important;font-size:var(--task-detail-font-caption)!important;line-height:1.4!important}.task-detail-edit-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 var(--mobile-space-2)!important}.task-detail-edit-grid .el-form-item{margin-bottom:var(--mobile-space-2)!important}.task-detail-edit-grid .el-input__wrapper,.task-detail-edit-grid .el-select__wrapper,.task-detail-edit-grid .el-date-editor,.task-detail-edit-grid .el-textarea__inner{border-radius:var(--mobile-radius-sm)!important;background:var(--mobile-surface)!important;box-shadow:inset 0 0 0 1px var(--mobile-border)!important}.task-phase-dialog .el-input__inner,.task-phase-dialog .el-select__selected-item,.task-phase-dialog .el-textarea__inner{font-size:var(--task-detail-font-control)!important;line-height:1.4!important}.task-phase-card-head .task-phase-status-label{display:inline-flex;flex:0 0 auto;align-items:center;gap:var(--mobile-space-1);border:1px solid var(--mobile-border-strong);border-radius:999px;padding:var(--mobile-space-1) var(--mobile-space-2);background:var(--mobile-brand-soft);color:var(--mobile-brand-strong)!important;font-size:var(--task-detail-font-caption)!important;font-weight:700}.task-phase-status-label i{color:var(--mobile-brand);font-size:8px;font-style:normal}.task-completion-stepper{display:grid;gap:var(--mobile-space-2);border-radius:var(--mobile-radius-sm);padding:var(--mobile-space-2);background:var(--mobile-surface-muted)}.task-completion-stepper ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(20px,1fr));align-items:center;gap:var(--mobile-space-1);margin:0;padding:0;list-style:none}.task-completion-stepper ol:before{right:var(--mobile-space-2);left:var(--mobile-space-2);background:var(--mobile-border)}.task-completion-stepper li{position:relative;display:grid;min-width:20px;height:20px;place-items:center}.task-completion-stepper li span{position:relative;z-index:1;width:12px;height:12px;border:2px solid var(--mobile-border-strong);border-radius:50%;background:var(--mobile-surface)}.task-completion-stepper li.is-completed span{border-color:var(--mobile-brand);background:var(--mobile-brand)}.task-completion-stepper li.is-current span{border-color:var(--mobile-brand);box-shadow:0 0 0 3px #0f825e29}.task-completion-stepper p{margin:0;color:var(--mobile-text-secondary);font-size:var(--task-detail-font-caption);line-height:1.4;text-align:center}.task-current-progress{gap:var(--mobile-space-2)!important;margin:0!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-brand-soft)!important}.task-current-progress>div:first-child strong,.task-progress-history-title strong,.task-phase-subtitle{color:var(--mobile-text)!important;font-size:var(--task-detail-font-heading)!important;line-height:1.4!important}.task-current-progress>p,.task-progress-history>p b,.task-note-list p{color:var(--mobile-text)!important;font-size:var(--task-detail-font-body)!important;line-height:1.5!important}.task-note-editor{gap:var(--mobile-space-2)!important}.task-phase-field-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:var(--mobile-space-2)!important}.task-phase-field,.task-material-item{border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface-muted)!important}.task-phase-field span,.task-material-item strong{color:var(--mobile-text)!important;font-size:var(--task-detail-font-body)!important;line-height:1.4!important}.task-phase-field em,.task-material-item span{color:var(--mobile-danger)!important;font-size:var(--task-detail-font-caption)!important;line-height:1.4!important}body .task-phase-dialog .el-button:not(.is-circle),.task-material-item .mobile-camera-input,.task-phase-card .el-alert__title{font-size:var(--task-detail-font-body)!important;line-height:1.4!important}.task-dialog-footer-actions,.task-dialog-secondary-actions,.task-dialog-primary-actions{display:grid;gap:var(--mobile-space-2)}.task-dialog-footer-actions{grid-template-columns:minmax(0,1fr)}.task-dialog-secondary-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.task-dialog-primary-actions{grid-template-columns:repeat(2,minmax(0,1fr))}body .task-phase-dialog .task-dialog-footer-actions .el-button{width:100%;min-width:0;min-height:40px!important;margin:0!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-1)!important;font-size:var(--task-detail-font-body)!important}.detail-shell{background:var(--mobile-bg)!important}.detail-shell .top-bar{gap:var(--mobile-space-2)!important;border-bottom:1px solid var(--mobile-border)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface)!important}.detail-shell .top-bar h1{color:var(--mobile-text)!important;font-size:var(--mobile-font-section)!important;line-height:1.25!important}.detail-shell .top-bar p,.detail-shell .top-bar span{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important}.detail-head-actions{gap:var(--mobile-space-1)!important}.detail-head-actions .el-button{min-height:40px!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-2)!important;font-size:var(--mobile-font-caption)!important}.detail-anchor-nav{grid-template-columns:repeat(6,minmax(0,1fr))!important;grid-auto-flow:row!important;grid-auto-columns:auto!important;gap:var(--mobile-space-1)!important;margin:var(--mobile-space-1) 0 0!important;overflow:hidden!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;padding:0!important;background:var(--mobile-surface)!important;box-shadow:var(--mobile-shadow)!important}.detail-anchor-nav button{min-width:0!important;min-height:40px!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-1)!important;background:var(--mobile-brand-soft)!important;color:var(--mobile-brand-strong)!important;font-size:var(--mobile-font-caption)!important}.detail-shell .detail-layout{gap:var(--mobile-space-2)!important;margin-top:var(--mobile-space-2)!important}.project-archive-overview,.phase-detail-workbench,.detail-single-section,.timeline-panel{border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-md)!important;background:var(--mobile-surface)!important;box-shadow:var(--mobile-shadow)!important}.project-archive-header{gap:var(--mobile-space-2)!important;border-bottom:1px solid var(--mobile-border)!important;padding:var(--mobile-space-3)!important}.project-archive-header span{color:var(--mobile-brand-strong)!important;font-size:var(--mobile-font-caption)!important}.project-archive-header h2{margin-top:var(--mobile-space-1)!important;color:var(--mobile-text)!important;font-size:var(--mobile-font-section)!important;line-height:1.3!important}.project-archive-header .el-button{flex:0 0 auto;min-height:40px!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-2)!important;font-size:var(--mobile-font-caption)!important}.project-archive-overview .archive-card-grid{gap:var(--mobile-space-2)!important;margin:0!important;padding:var(--mobile-space-2)!important}.project-archive-overview .archive-card{border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface-muted)!important}.project-archive-overview .archive-card:last-child{grid-column:1 / -1}.project-archive-overview .archive-card>span{color:#937636!important;font-size:var(--mobile-font-label)!important}.project-archive-overview .archive-card p{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important}.project-archive-overview .archive-card p b{color:var(--mobile-text)!important;font-size:var(--mobile-font-caption)!important}.phase-detail-head{gap:var(--mobile-space-2)!important;padding:var(--mobile-space-3)!important}.phase-detail-head h2{color:var(--mobile-text)!important;font-size:var(--mobile-font-section)!important}.phase-detail-head small{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important}.phase-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:var(--mobile-space-2)!important}.phase-actions:has(>:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))!important}.phase-actions .el-button{min-height:40px!important;border-radius:var(--mobile-radius-sm)!important;padding:0 var(--mobile-space-2)!important;font-size:var(--mobile-font-label)!important;white-space:nowrap!important}.phase-actions .el-button--success{--el-button-bg-color: var(--mobile-brand) !important;--el-button-border-color: var(--mobile-brand) !important;--el-button-text-color: oklch(.995 .005 165) !important}.phase-actions .el-button--warning{--el-button-bg-color: oklch(.72 .13 78) !important;--el-button-border-color: oklch(.72 .13 78) !important;--el-button-text-color: oklch(.25 .025 78) !important}.phase-progress-panel{gap:var(--mobile-space-2)!important;margin:0 var(--mobile-space-3) var(--mobile-space-2)!important;border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-brand-soft)!important}.phase-tabs .el-tabs__header{margin:0 var(--mobile-space-3) var(--mobile-space-2)!important}.phase-tabs .el-tabs__nav-wrap,.phase-tabs .el-tabs__nav-scroll{overflow:hidden!important}.phase-tabs .el-tabs__nav{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));width:100%!important}.phase-tabs .el-tabs__item{min-width:0;height:40px;padding:0 var(--mobile-space-1)!important;color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important;white-space:nowrap}.phase-tabs .el-tabs__item.is-active{color:var(--mobile-brand-strong)!important}.phase-tabs .el-tabs__content{padding:0 var(--mobile-space-3) var(--mobile-space-3)!important}.phase-form-grid,.phase-field-grid,.decision-grid{gap:var(--mobile-space-2)!important}.phase-form-grid .el-form-item__label,.phase-field-item>span{color:var(--mobile-text-secondary)!important;font-size:var(--mobile-font-caption)!important}.phase-save-actions{position:static!important;inset:auto!important;margin:var(--mobile-space-2) var(--mobile-space-3) var(--mobile-space-3)!important;border:0!important;border-radius:var(--mobile-radius-sm)!important;padding:0!important;background:transparent!important;box-shadow:none!important}.phase-save-actions .el-button{min-height:40px!important;border-radius:var(--mobile-radius-sm)!important}.detail-shell .timeline-panel .panel-heading{border-bottom:1px solid var(--mobile-border)!important;padding:var(--mobile-space-3)!important;color:var(--mobile-text)!important}.detail-shell .timeline-list{gap:var(--mobile-space-2)!important;padding:var(--mobile-space-2)!important}.detail-shell .timeline-list li{border:1px solid var(--mobile-border)!important;border-radius:var(--mobile-radius-sm)!important;padding:var(--mobile-space-2)!important;background:var(--mobile-surface-muted)!important}.detail-shell .timeline-list li.active{border-color:var(--mobile-brand)!important;background:var(--mobile-brand-soft)!important}}@media(max-width:480px){body .app-shell .project-summary-strip{gap:var(--mobile-space-1)!important;padding-right:var(--mobile-space-1)!important;padding-left:var(--mobile-space-1)!important}.project-list-title{padding:var(--mobile-space-2)!important}}
