/* 知园 · a quiet, card-led workspace. */
@font-face{font-family:Manrope;src:url("assets/manrope-latin.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
:root{--bg:#f5f5f7;--surface:#fff;--surface-muted:#f5f5f7;--text:#1d1d1f;--text-secondary:#6e6e73;--text-muted:#6e6e73;--border:#e8e8ed;--border-strong:#d2d2d7;--brand:#0071e3;--brand-hover:#0062c5;--brand-light:#edf5ff;--brand-wash:#f4f8fe;--heading:#1d1d1f;--green:#277b55;--success:#277b55;--success-bg:#eef7f1;--amber:#996620;--amber-bg:#fff6e7;--red:#b54747;--blue:#0071e3;--blue-bg:#edf5ff;--purple:#6c69a6;--purple-bg:#f3f1fa;--radius:16px;--sidebar-width:208px;--ease:cubic-bezier(.22,1,.36,1);font-family:Manrope,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-synthesis:none;color-scheme:light;font-size:14px}
*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;color:var(--text);background:var(--bg);font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.45}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent;transition:color 300ms var(--ease),background-color 300ms var(--ease),border-color 300ms var(--ease),opacity 300ms var(--ease),transform 500ms var(--ease)}button:active:not(:disabled),.btn:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:3px solid #6caff3;outline-offset:3px}a{color:var(--brand);text-decoration:none}a:hover{color:var(--brand-hover)}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3,h4{text-wrap:balance;font-weight:600}p{text-wrap:pretty}h1{font-size:30px;line-height:36px;letter-spacing:-1px}h2{font-size:18px;line-height:28px;letter-spacing:-.3px}h3{font-size:16px;line-height:24px;letter-spacing:-.15px}h4{font-size:14px;line-height:20px}strong{font-weight:600}small,.small,.text-small{font-size:12px;line-height:20px}ul,ol{margin:0;padding:0}img,svg{display:block}img{max-width:100%}svg{flex-shrink:0}[hidden]{display:none!important}::selection{background:#d7eaff;color:#154e87}
.icon{width:20px;height:20px;flex:0 0 20px;vertical-align:middle}img.icon{opacity:.62}.icon.sm{width:16px;height:16px;flex-basis:16px}.icon.lg{width:24px;height:24px;flex-basis:24px}.btn-primary img.icon{filter:brightness(0) invert(1);opacity:1}.muted,.text-muted{color:var(--text-secondary)}.eyebrow{color:var(--text-muted);font-size:12px;line-height:16px;font-weight:500;letter-spacing:.4px}.nowrap{white-space:nowrap}.num,.stat-number,.stat-value,.chart-total,.chart-value,.progress-cell,.nav-count{font-variant-numeric:tabular-nums}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:200;top:8px;left:8px;padding:12px 16px;border-radius:8px;color:white;background:var(--brand);transform:translateY(-150%)}.skip-link:focus{transform:none;color:white}.flex{display:flex;align-items:center}.gap-8{gap:8px}.gap-12{gap:12px}.space-between{justify-content:space-between}

/* Shell */
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;width:var(--sidebar-width);display:flex;flex-direction:column;padding:24px 16px 16px;background:#f5f5f7;border-right:1px solid #e3e3e8;overflow-y:auto}.brand{display:flex;align-items:center;gap:12px;padding:0 8px;margin-bottom:32px;color:var(--text)}.brand:hover{color:var(--text)}.brand>img{width:32px;height:32px;border-radius:8px}.brand>span,.brand-name{font-size:24px;line-height:28px;font-weight:650;letter-spacing:1px}.brand-en,.brand-subtitle{display:block;color:var(--text-muted);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0;margin-top:4px}
.workspace-switch{display:flex;align-items:center;gap:8px;width:100%;padding:12px 8px;margin-bottom:24px;background:transparent;border:1px solid #e1e1e7;border-radius:8px;text-align:left}.workspace-switch:hover{background:#ebebf0}.workspace-switch>span:nth-child(2){flex:1;font-size:12px;line-height:20px;font-weight:600;white-space:nowrap}.workspace-sub{display:block;font-size:12px;line-height:16px;color:var(--text-muted);font-weight:400}.workspace-symbol{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0}.workspace-symbol .icon{width:16px;height:16px;flex-basis:16px}.workspace-switch>.icon:last-child{width:12px;height:12px;flex-basis:12px;opacity:.4}
.nav-group-label{padding:0 12px;margin-bottom:8px;color:var(--text-muted);font-size:12px;line-height:16px}.sidebar nav{display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:12px;border:0;border-radius:8px;color:#6e6e73;background:transparent;font-size:14px;line-height:20px;text-align:left;white-space:nowrap}.nav-item:hover{color:var(--text);background:#ebebef}.nav-item.active{color:var(--text);background:#e7e7ec;font-weight:600}.nav-item.active .nav-icon .icon{opacity:.9}.nav-icon{display:flex}.nav-count{margin-left:auto;min-width:20px;padding:0 4px;border-radius:4px;font-size:12px;line-height:20px;color:#6e6e73;background:#e8e8ed;text-align:center}.active .nav-count{color:var(--text);background:#dcdce2}.nav-ai{margin-left:auto;color:#86868b;font-size:12px;line-height:20px;font-weight:500}
.sidebar-bottom{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding-top:32px}.compute-mini{padding:12px;border:1px solid #e1e1e7;border-radius:12px;background:#f9f9fb}.compute-mini-title{display:flex;align-items:center;gap:8px;font-size:12px;line-height:20px;font-weight:500}.compute-mini-title .icon{width:16px;height:16px;flex-basis:16px}.compute-mini-title .status-dot{margin-left:auto;color:#62a37c}.compute-mini-copy{color:var(--text-muted);font-size:12px;line-height:20px;margin-top:4px}.compute-mini .text-button{margin-top:12px}.user-profile{display:flex;align-items:center;gap:12px;width:100%;padding:12px 8px 0;border:0;border-top:1px solid #e1e1e7;background:transparent;text-align:left}.user-profile>span:nth-child(2){flex:1}.user-profile strong{display:block;font-size:12px;line-height:20px;font-weight:500}.user-profile small{display:block;color:var(--text-muted);font-size:12px;line-height:16px;margin-top:2px}.user-profile>.icon{width:16px;height:16px;flex-basis:16px;opacity:.4}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:50%;background:#e9e9ee;color:#6e6e73;font-size:12px;line-height:16px;font-weight:500}.avatar.small{width:28px;height:28px}.avatar.tiny{width:24px;height:24px}.avatar.lg{width:40px;height:40px}.app-main{min-width:0;margin-left:var(--sidebar-width)}.topbar{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 32px;border-bottom:1px solid #e8e8ed;background:#f5f5f7}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:var(--text-muted);font-size:12px;line-height:16px}.breadcrumb strong{font-weight:400;color:var(--text-secondary)}.breadcrumb .icon{width:12px;height:12px;flex-basis:12px;opacity:.3}.topbar-actions{display:flex;align-items:center;gap:12px}.topbar-date{color:var(--text-muted);font-size:12px;line-height:16px}.topbar-divider{width:1px;height:20px;background:#dddde3}
.chip{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;color:var(--text-secondary);background:#ededf1;border-radius:6px;font-size:12px;line-height:16px;white-space:nowrap}.chip.demo{background:#eaeaf0;color:#6e6e73}.chip.demo>i,.live-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:#86868b}.content{max-width:1480px;margin:0 auto;min-height:calc(100vh - 64px);padding:32px 32px 40px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.page-heading>div:first-child{min-width:0}.page-heading .eyebrow{margin-bottom:8px}.page-heading p{margin-top:8px;color:var(--text-secondary);font-size:14px;line-height:20px}.heading-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:12px;flex-shrink:0}.mobile-nav-toggle,.mobile-overlay,.icon-btn.mobile-nav-toggle{display:none}

/* Controls */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 12px;border:1px solid transparent;border-radius:8px;font-size:14px;line-height:20px;font-weight:500;white-space:nowrap}.btn-primary{color:#fff;background:var(--brand);border-color:var(--brand)}.btn-primary:hover{color:#fff;background:var(--brand-hover);border-color:var(--brand-hover)}.btn-secondary{background:#fff;color:var(--text);border-color:#dedee4}.btn-secondary:hover{background:#f9f9fb;border-color:#c8c8cf}.btn-ghost{color:var(--text-secondary);background:transparent}.btn-ghost:hover{color:var(--text);background:#eaeaef}.btn-sm{min-height:32px;padding:4px 12px;font-size:12px;line-height:20px;border-radius:8px}.btn-sm .icon{width:16px;height:16px;flex-basis:16px}.btn-block{width:100%}.btn-danger{color:var(--red);border-color:#e9caca;background:#fff}.icon-btn,.row-action{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;padding:4px;border:0;border-radius:8px;background:transparent;color:var(--text-secondary)}.icon-btn:hover,.row-action:hover{background:#e9e9ee;color:var(--text)}.row-action .icon{width:16px;height:16px;flex-basis:16px}
.text-button,.section-link{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0;border:0;background:transparent;color:var(--brand);font-size:12px;line-height:20px;font-weight:500;text-align:left;white-space:nowrap}.text-button:hover,.section-link:hover{color:var(--brand-hover)}.text-button .icon,.section-link .icon{width:16px;height:16px;flex-basis:16px}.text-button img.icon{filter:invert(32%) sepia(92%) saturate(2215%) hue-rotate(194deg) brightness(92%) contrast(107%);opacity:1}
.card{min-width:0;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:var(--radius);overflow:hidden}.card-header,.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px}.card-header h2,.section-head h2{font-size:16px;line-height:24px;font-weight:600}.card-header p,.section-head p{margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.card-body{padding:0 24px 24px}.card-footer{padding:16px 24px;border-top:1px solid var(--border)}.section-title{font-size:16px;line-height:24px;font-weight:600}
.badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px 8px;border-radius:6px;font-size:12px;line-height:16px;font-weight:400;white-space:nowrap}.badge.green,.chip.green{color:var(--success);background:var(--success-bg)}.badge.amber,.chip.amber{color:var(--amber);background:var(--amber-bg)}.badge.blue,.chip.blue{color:#316da8;background:#edf5ff}.badge.purple,.chip.purple{color:#6f6e8f;background:#f3f2f8}.badge.gray,.chip.gray{color:#6e6e73;background:#f2f2f5}.badge.red{color:var(--red);background:#fcf0f0}.badge .icon{width:12px;height:12px;flex-basis:12px}.status-dot{width:6px;height:6px;background:currentColor;border-radius:50%}
.project-icon,.resource-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 40px;border-radius:12px;background:#f1f4f8;color:var(--brand)}.project-icon.green,.resource-icon.green{background:#edf5f0}.project-icon.blue,.resource-icon.blue{background:#edf3fa}.project-icon.purple,.resource-icon.purple{background:#f2f0f8}.project-icon.amber,.resource-icon.amber{background:#faf4e9}.project-icon.gray{background:#f0f0f4}.project-icon.teal{background:#edf5f4}.project-icon.lg{width:56px;height:56px;flex-basis:56px;border-radius:16px}
.progress{height:5px;overflow:hidden;border-radius:999px;background:#eeeef2}.progress-fill{display:block;height:100%;border-radius:inherit;background:#70a8e8}.progress-fill.amber{background:#d8b270}.progress-fill.purple{background:#aaa4ce}.progress-fill.blue{background:#70a8e8}.progress-cell{display:flex;align-items:center;gap:8px;min-width:96px;font-size:12px;line-height:16px;color:var(--text-secondary)}.progress-cell .progress{flex:1;min-width:40px}.progress-cell>span{min-width:32px;text-align:right}.owner-cell{display:inline-flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:12px;line-height:20px;white-space:nowrap}
.empty-state{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:48px 24px;text-align:center;color:var(--text-secondary)}.empty-state>span:first-child{display:grid;place-items:center;width:56px;height:56px;border-radius:16px;background:#f3f3f6;margin-bottom:8px}.empty-state p{max-width:360px;font-size:14px;line-height:24px}.banner-note{display:flex;align-items:flex-start;gap:8px;padding:12px 16px;border-radius:8px;color:var(--text-secondary);background:#f5f5f7;font-size:12px;line-height:20px}.banner-note .icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}.banner-note.amber{color:var(--amber);background:var(--amber-bg)}

/* Overview */
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.stat-card{position:relative;min-width:0;padding:24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px;overflow:hidden}.stat-action{display:block;width:100%;text-align:left}.stat-action:hover{background:#fdfdff;border-color:#d3e2f3}.stat-label{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text-secondary);font-size:12px;line-height:20px}.stat-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px}.stat-icon .icon{width:16px;height:16px;opacity:.45}.stat-number,.stat-value{display:flex;align-items:baseline;gap:8px;margin-top:12px;font-size:48px;line-height:48px;font-weight:600;letter-spacing:-2px}.stat-number>span,.stat-value>span{font-size:12px;line-height:20px;font-weight:400;color:var(--text-muted);letter-spacing:0}.stat-caption,.stat-note{display:flex;align-items:center;gap:4px;margin-top:12px;color:var(--text-muted);font-size:12px;line-height:20px}.stat-caption .icon,.stat-note .icon{width:12px;height:12px;flex-basis:12px;opacity:.4}.stat-mini{position:absolute;right:24px;bottom:24px;width:72px;height:32px}.stat-mini svg{width:100%;height:100%;overflow:visible}.stat-trend{display:inline-flex;align-items:center;gap:4px;font-size:12px;line-height:16px;color:#2c805c}.stat-trend.amber{color:var(--amber)}.stat-trend.neutral{color:var(--text-muted)}
.analytics-grid{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(280px,1fr);gap:24px;margin-bottom:24px;align-items:stretch}.trend-card,.health-card{min-width:0}.trend-card .card-header,.health-card .card-header{padding-bottom:16px}.segmented{display:inline-flex;align-items:center;padding:2px;border:1px solid #eeeef2;border-radius:8px;background:#f3f3f6}.segmented button{min-height:28px;padding:4px 12px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary);font-size:12px;line-height:20px;white-space:nowrap}.segmented button.active,.segmented button[aria-pressed="true"]{color:var(--text);background:#fff;box-shadow:0 1px 3px #0000000b}.segmented button:hover{color:var(--text)}
.chart-total{display:flex;align-items:baseline;gap:12px;padding:0 24px;margin-bottom:8px}.chart-total strong,.chart-total>span:first-child{font-size:36px;line-height:40px;font-weight:600;letter-spacing:-1px;color:var(--text)}.chart-total span,.chart-total small{font-size:12px;line-height:20px;color:var(--text-muted)}.chart-total .stat-trend{margin-left:auto;color:#2c805c}.chart-svg{width:100%;min-width:0;padding:0 16px 16px}.chart-svg svg,svg.chart-svg{display:block;width:100%;height:auto;overflow:visible}.chart-svg svg text,svg.chart-svg text{font-family:inherit;font-size:12px;fill:#6e6e73}.chart-note{display:flex;align-items:center;gap:8px;padding:0 24px 24px;font-size:12px;line-height:20px;color:var(--text-muted)}.chart-note .icon{width:12px;height:12px;flex-basis:12px;opacity:.4}
.ring-chart{position:relative;width:180px;height:180px;margin:4px auto 24px}.ring-chart svg{width:100%;height:100%}.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.ring-center strong{font-size:36px;line-height:40px;font-weight:600;letter-spacing:-1px}.ring-center span,.ring-center small{margin-top:4px;font-size:12px;line-height:20px;color:var(--text-muted)}.health-legend{display:flex;flex-direction:column;gap:12px;padding:0 24px 24px}.legend-row{display:flex;align-items:center;gap:8px;font-size:12px;line-height:20px;color:var(--text-secondary)}.legend-row>i,.legend-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:#70a8e8}.legend-dot.blue{background:#7aa9e9}.legend-dot.amber{background:#e2b478}.legend-dot.green{background:#8ab9a1}.legend-row>span{flex:1}.legend-row strong{font-weight:500;color:var(--text)}.legend-row .legend-percent{flex:0;min-width:32px;color:var(--text-muted);text-align:right}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(280px,1fr);gap:24px;align-items:start}.dashboard-main,.dashboard-aside{min-width:0;display:flex;flex-direction:column;gap:24px}.focus-section{min-width:0}.focus-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.focus-project{min-width:0;padding:16px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px}.focus-project .project-icon{width:36px;height:36px;flex-basis:36px;border-radius:12px}.focus-project h3{font-size:14px;line-height:20px;margin-top:16px}.focus-project .project-link{font-size:14px;line-height:20px}.focus-project p{font-size:12px;line-height:20px;color:var(--text-muted);margin-top:4px}.focus-project .progress-cell{margin-top:20px}.focus-project-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:16px;font-size:12px;line-height:20px;color:var(--text-muted)}
.attention-list{padding:0 24px 8px}.attention-item{display:flex;align-items:flex-start;gap:12px;width:100%;padding:16px 0;border:0;border-bottom:1px solid #f0f0f3;background:transparent;text-align:left}.attention-item:first-child{padding-top:0}.attention-item:last-child{border-bottom:0}.attention-item:hover strong{color:var(--brand)}.attention-mark,.attention-icon{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:8px;background:#faf4e9}.attention-mark.blue{background:#edf3fa}.attention-mark .icon,.attention-icon .icon{width:16px;height:16px;flex-basis:16px}.attention-item>span:nth-child(2){min-width:0;flex:1}.attention-item strong{display:block;font-size:14px;line-height:20px;font-weight:500}.attention-item small,.attention-item p{display:block;margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.attention-due{display:block;margin-top:8px;color:var(--text-secondary);font-size:12px;line-height:16px}.attention-item>.icon:last-child{width:12px;height:12px;flex-basis:12px;margin-top:8px;opacity:.3}.count-bubble{font-size:12px;line-height:20px;color:var(--text-muted)}.attention-all{display:flex;justify-content:center;padding:16px 24px;border-top:1px solid var(--border);font-size:12px;line-height:20px;color:var(--brand);background:transparent;width:100%;border-right:0;border-left:0;border-bottom:0}
.activity-list{padding:0 24px 24px}.activity-item{display:flex;gap:12px;padding-bottom:24px}.activity-item:last-child{padding-bottom:0}.activity-dot{margin-top:6px;width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#b5c9e0}.activity-copy p{font-size:12px;line-height:20px;color:var(--text-secondary)}.activity-copy>span{display:block;margin-top:4px;font-size:12px;line-height:16px;color:var(--text-muted)}

/* Project catalogue */
.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:16px 24px;border-bottom:1px solid var(--border)}.toolbar.standalone{padding:0;border:0;margin-bottom:24px}.toolbar-right{display:flex;align-items:center;gap:12px;margin-left:auto}.search-box{display:flex;align-items:center;gap:8px;flex:1;min-width:220px;max-width:360px;min-height:40px;padding:8px 12px;background:#fff;border:1px solid #e0e0e6;border-radius:8px}.search-box:focus-within{border-color:var(--brand);outline:3px solid #a3ccf5;outline-offset:2px}.search-box .icon{width:16px;height:16px;flex-basis:16px;opacity:.4}.search-box input{min-width:0;width:100%;padding:0;border:0;background:transparent;outline:none;font-size:12px;line-height:20px}.search-box input:focus-visible{outline:none}.search-box input::placeholder{color:var(--text-muted)}.search-key{color:#b5b5bb}
.filter-group,.resource-filters{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.filter-chip{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:8px 12px;border:0;border-radius:8px;color:var(--text-secondary);background:transparent;font-size:12px;line-height:20px;white-space:nowrap}.filter-chip:hover{background:#eaeaee;color:var(--text)}.filter-chip.active{background:#fff;color:var(--text);font-weight:600;box-shadow:0 1px 3px #00000008}.filter-chip span{color:var(--text-muted);font-size:12px;line-height:16px;font-weight:400}.project-type-filters{margin-bottom:24px}.toolbar select,.context-select select{min-height:40px;max-width:280px;width:100%;padding:8px 32px 8px 12px;border:1px solid #dedee4;border-radius:8px;color:var(--text-secondary);background:#fff;font-size:12px;line-height:20px}
.view-toggle{display:flex;align-items:center;padding:2px;border:1px solid #e5e5ea;border-radius:8px;background:#eeeef2}.view-toggle button{width:32px;height:32px;border-radius:6px}.view-toggle button.active{background:#fff;color:var(--text);box-shadow:0 1px 3px #00000008}.view-toggle .icon{width:16px;height:16px;flex-basis:16px}
.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:24px 0}.project-card{min-width:0;display:flex;flex-direction:column;padding:24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px}.project-card:hover{border-color:#d2dce9}.project-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.project-card h3{margin-bottom:4px}.project-link{display:block;padding:0;border:0;background:transparent;color:var(--text);font-size:14px;line-height:24px;font-weight:600;text-align:left}.project-link:hover{color:var(--brand)}.project-card h3 .project-link{font-size:16px;line-height:24px}.project-card>p,.project-org{font-size:12px;line-height:20px;color:var(--text-secondary)}.project-card-summary{margin-top:12px}.project-card .resource-tags{margin-top:16px}.project-card-progress{margin-top:24px}.project-card-progress>span{display:block;font-size:12px;line-height:16px;color:var(--text-muted);margin-bottom:8px}.project-card .resource-footer{margin-top:24px;padding-top:16px;border-top:1px solid #f0f0f3}
.table-wrap{position:relative;width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;text-align:left}.data-table th{padding:12px 16px;background:#fafafc;border-bottom:1px solid var(--border);color:var(--text-muted);font-size:12px;line-height:16px;font-weight:500;white-space:nowrap}.data-table th:first-child,.data-table td:first-child{padding-left:24px}.data-table th:last-child,.data-table td:last-child{padding-right:24px}.data-table td{padding:16px;border-bottom:1px solid #f0f0f3;font-size:12px;line-height:20px;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fdfdff}.project-cell{display:flex;align-items:center;gap:12px;min-width:210px}.project-cell>div{min-width:0}.project-cell .project-link{white-space:nowrap}.project-meta{margin-top:4px;font-size:12px;line-height:16px;color:var(--text-muted)}.list-footer,.table-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;color:var(--text-muted);border-top:1px solid var(--border);font-size:12px;line-height:20px}

/* A compact project dossier */
.back-link{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;color:var(--text-secondary);font-size:12px;line-height:20px;margin-bottom:24px}.back-link:hover{color:var(--brand)}.back-link .icon{width:16px;height:16px;flex-basis:16px}.detail-topline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.detail-topline .back-link{margin-bottom:0}.detail-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px;margin-bottom:24px}.detail-hero-main{display:flex;align-items:flex-start;gap:16px;min-width:0}.detail-hero-main>.project-icon{width:48px;height:48px;flex-basis:48px;border-radius:16px}.detail-hero-main>div{min-width:0}.detail-hero h1{font-size:24px;line-height:32px;letter-spacing:-.5px}.detail-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}.detail-labels .eyebrow{margin-right:4px}.detail-meta{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:12px;color:var(--text-secondary);font-size:12px;line-height:20px}.detail-meta>span{display:flex;align-items:center;gap:4px}.detail-meta .icon{width:16px;height:16px;flex-basis:16px;opacity:.4}
.tabs{display:flex;align-items:stretch;gap:24px;padding:0;border-bottom:1px solid #e1e1e7;overflow-x:auto;margin-bottom:24px}.tab{display:flex;align-items:center;gap:8px;min-height:48px;padding:12px 0;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-secondary);font-size:14px;line-height:20px;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.tab-count{min-width:20px;padding:0 4px;border-radius:4px;background:#e9e9ee;color:var(--text-secondary);font-size:12px;line-height:20px;text-align:center}
.detail-grid,.detail-overview-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:24px;align-items:start}.detail-main,.detail-aside{min-width:0;display:flex;flex-direction:column;gap:24px}.overview-info{padding:24px}.overview-info>h2,.overview-info>h3{margin-bottom:12px}.overview-info>p,.project-description{color:var(--text-secondary);font-size:14px;line-height:24px}.mini-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border)}.mini-stats>div{min-width:0}.mini-stats>div>span,.mini-stats>div>small{display:block;color:var(--text-muted);font-size:12px;line-height:20px}.mini-stats>div>strong{display:block;font-size:20px;line-height:28px;font-weight:500;margin-top:8px}.mini-stats .progress-cell{margin-top:12px;min-width:0}
.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:24px 0}.info-field{min-width:0}.info-field>span,.info-field>label{display:block;margin-bottom:8px;color:var(--text-muted);font-size:12px;line-height:16px}.info-field strong,.info-field p{font-weight:500;font-size:14px;line-height:24px}.info-field.full{grid-column:1/-1}.detail-aside .info-grid{grid-template-columns:1fr;padding:0 24px 24px}.need-box{display:flex;align-items:flex-start;gap:12px;padding:16px;border-radius:12px;background:#f5f8fc;margin-top:16px}.need-box strong{font-size:12px;line-height:20px;font-weight:500}.need-box p{margin-top:4px;color:var(--text-secondary);font-size:12px;line-height:20px}.need-box>.icon{opacity:.4}
.milestone-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:0 24px 24px}.milestone-stage{position:relative;min-width:0;padding-top:16px;border-top:3px solid #e9e9ef}.milestone-stage.done{border-top-color:#84b7e8}.milestone-stage.current{border-top-color:#0071e3}.milestone-stage strong{display:block;font-size:12px;line-height:20px;font-weight:500}.milestone-stage>span,.milestone-stage small,.milestone-stage time{display:block;font-size:12px;line-height:20px;color:var(--text-muted);margin-top:4px}.milestone-stage-dot{display:flex!important;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#f3f3f7;color:var(--text-secondary);margin:0 0 12px!important}.milestone-stage-dot .icon{width:12px;height:12px;flex-basis:12px}.milestone-stage.done .milestone-stage-dot{background:#edf5fc}.milestone-stage.current .milestone-stage-dot{background:var(--brand);color:#fff}.milestone-stage.current .milestone-stage-dot img.icon{filter:brightness(0) invert(1);opacity:1}
.timeline{list-style:none;padding:0 24px 24px}.timeline-item{position:relative;display:flex;align-items:flex-start;gap:16px;padding-bottom:32px}.timeline-item:last-child{padding-bottom:0}.timeline-item:not(:last-child)::before{position:absolute;content:"";width:1px;top:24px;bottom:0;left:11px;background:#e9e9ee}.timeline-dot{position:relative;z-index:1;display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;border:1px solid #dedee5;border-radius:50%;background:#fff;color:var(--text-muted)}.timeline-dot .icon{width:12px;height:12px;flex-basis:12px}.timeline-item.done .timeline-dot{background:#eef5fc;border-color:#e1ecf7}.timeline-item.current .timeline-dot{background:var(--brand);border-color:var(--brand)}.timeline-dot>i{width:6px;height:6px;border-radius:50%;background:#fff}.timeline-content{min-width:0;flex:1}.timeline-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.timeline-content p{margin-top:8px;color:var(--text-secondary);font-size:12px;line-height:20px}.timeline-date{display:flex;align-items:center;gap:4px;margin-top:12px;color:var(--text-muted);font-size:12px;line-height:16px}.timeline-date .icon{width:12px;height:12px;flex-basis:12px;opacity:.35}.milestone-evidence{margin-top:8px}.milestone-evidence summary{color:var(--text-secondary);font-size:12px;line-height:20px;cursor:pointer}.milestone-evidence p{margin-top:8px;padding:12px;border-radius:8px;background:#f6f6f9}
.large-progress{font-size:48px;line-height:48px;font-weight:600;letter-spacing:-2px;margin-bottom:16px}.large-progress>span{font-size:18px;line-height:28px;font-weight:400;letter-spacing:0;margin-left:4px}.progress-overview .progress-cell>span{display:none}.progress-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:16px 0;font-size:12px;line-height:20px;color:var(--text-muted)}.progress-caption strong{color:var(--text-secondary);font-weight:400}.ai-side-card,.quick-analysis{display:flex;flex-direction:column;gap:12px;padding:24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px}.side-card-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#f2f5fa}.ai-side-card p,.quick-analysis p{color:var(--text-secondary);font-size:12px;line-height:20px}.ai-side-card .btn,.quick-analysis .btn{margin-top:8px}
.material-list{display:flex;flex-direction:column;gap:0;padding:0 24px 24px}.material-item{width:100%;display:flex;align-items:center;gap:12px;padding:16px 0;border:0;border-bottom:1px solid #eeeef2;background:transparent;text-align:left}.material-item:first-child{padding-top:0}.material-item:last-child{border-bottom:0;padding-bottom:0}.material-item:hover strong{color:var(--brand)}.material-icon{display:grid;place-items:center;width:32px;height:40px;flex:0 0 32px;border-radius:8px;background:#f4f4f7}.material-copy{min-width:0;flex:1}.material-copy strong{display:block;font-size:12px;line-height:20px;font-weight:500}.material-copy small{display:block;margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.material-item>.icon:last-child{width:16px;height:16px;flex-basis:16px;opacity:.3}
.service-list{padding:0 24px 24px}.service-record{padding:24px;border:1px solid var(--border);border-radius:12px;background:#fff;margin-bottom:16px}.service-record:last-child{margin-bottom:0}.service-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.service-head .eyebrow{display:block;margin-bottom:8px}.service-head p{margin-top:4px;font-size:12px;line-height:20px;color:var(--text-secondary)}.service-record>p{margin-top:16px;color:var(--text-secondary);font-size:12px;line-height:20px}.service-note{overflow-wrap:anywhere}.service-steps{display:flex;align-items:flex-start;gap:8px;margin-top:24px}.service-step{flex:1;color:var(--text-muted);font-size:12px;line-height:20px}.service-step::before{display:block;content:"";height:3px;border-radius:2px;background:#eeeef2;margin-bottom:8px}.service-step.active::before{background:#0071e3}.service-step.done::before{background:#8cb8e7}.service-step.active{color:var(--text)}.service-step>.icon{display:inline-block;vertical-align:middle;width:12px;height:12px;margin-right:4px}.service-outcome{display:flex;align-items:flex-start;gap:8px;padding:12px;border-radius:8px;margin-top:16px;background:#f3f8f4;color:#557862;font-size:12px;line-height:20px}.service-outcome .icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}.success-label{color:var(--success);font-size:12px;line-height:20px}

/* Analysis: evidence on demand */
.analysis-context{display:flex;align-items:center;gap:16px;padding:16px 24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px;margin-bottom:24px}.analysis-context>div{min-width:0}.analysis-context>div>strong{display:block;font-size:14px;line-height:24px;font-weight:500;margin-top:4px}.context-select{min-width:0;margin-left:auto}.analysis-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:24px;align-items:start}.analysis-main,.analysis-aside{min-width:0;display:flex;flex-direction:column;gap:24px}
.analysis-start,.analysis-ready{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:360px;padding:40px 32px;text-align:center;background:#fff;border-radius:16px}.analysis-ready-icon,.analysis-symbol{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;background:#f3f5f9;margin-bottom:24px}.analysis-ready-icon .icon,.analysis-symbol .icon{width:28px;height:28px;flex-basis:28px;opacity:.65}.analysis-start h2,.analysis-ready h2{font-size:24px;line-height:32px;margin-bottom:12px}.analysis-start p,.analysis-ready p{max-width:400px;font-size:14px;line-height:24px;color:var(--text-secondary)}.analysis-start>small,.analysis-ready>small{display:block;margin-top:16px;color:var(--text-muted);font-size:12px;line-height:20px}.analysis-ready .btn,.analysis-start>.btn{margin-top:24px}.analysis-numbers{display:flex;justify-content:center;gap:40px;margin:24px 0 0}.analysis-numbers>div{min-width:64px}.analysis-numbers strong{display:block;font-size:30px;line-height:36px;font-weight:500;letter-spacing:-.5px}.analysis-numbers span,.analysis-numbers small{display:block;margin-top:4px;font-size:12px;line-height:20px;color:var(--text-muted)}
.analysis-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:360px;padding:40px;text-align:center}.analysis-loading .analysis-symbol{margin-bottom:8px}.analysis-loading p{color:var(--text-secondary);font-size:14px;line-height:24px}.skeleton{width:80%;max-width:360px;height:10px;border-radius:4px;background:#ececf1;animation:breathe 1.8s var(--ease) infinite alternate}.skeleton.wide{width:90%}.skeleton.short{width:56%}@keyframes breathe{from{opacity:.4}to{opacity:1}}
.analysis-summary{padding:24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px}.analysis-summary-title{display:flex;align-items:center;gap:12px}.analysis-summary-title>div{flex:1;min-width:0}.analysis-summary-title h2{font-size:18px;line-height:28px;margin-top:4px}.analysis-summary-icon{width:40px;height:40px;display:grid;place-items:center;flex:0 0 40px;border-radius:12px;background:#f2f5f9}.analysis-summary>p{margin-top:16px;font-size:14px;line-height:24px;color:var(--text-secondary)}.confidence-note{display:flex;align-items:flex-start;gap:8px;color:var(--text-muted);font-size:12px;line-height:20px;margin-top:16px}.confidence-note .icon{width:16px;height:16px;flex-basis:16px;margin-top:2px;opacity:.35}.analysis-section{padding:24px;background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.035)}.analysis-section .section-head{padding:0 0 16px}
.risk-list{display:flex;flex-direction:column;gap:12px}.risk-card{padding:16px;border:1px solid #eeeef2;border-radius:12px;background:#fff}.risk-card summary{display:flex;align-items:center;gap:12px;list-style:none;cursor:pointer}.risk-card summary::-webkit-details-marker{display:none}.risk-card summary>.icon:last-child{margin-left:auto;width:16px;height:16px;flex-basis:16px;opacity:.4}.risk-card[open] summary>.icon:last-child{transform:rotate(180deg)}.risk-card summary:hover strong{color:var(--brand)}.risk-card summary>strong{font-size:14px;line-height:24px;font-weight:500}.risk-number{flex-shrink:0;font-size:14px;line-height:24px;font-weight:500;color:var(--text-muted)}.risk-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.risk-title h3{font-size:14px;line-height:24px;font-weight:500}.risk-card p{margin-top:12px;color:var(--text-secondary);font-size:12px;line-height:20px}.risk-detail{padding-top:4px}.risk-card .evidence-link{margin-top:12px}.evidence-link{display:inline-flex;align-items:flex-start;gap:4px;padding:0;border:0;background:transparent;color:var(--brand);font-size:12px;line-height:20px;text-align:left}.evidence-link:hover{color:var(--brand-hover)}.evidence-link .icon{width:16px;height:16px;flex-basis:16px;margin-top:2px;opacity:.4}
.suggestion-list{display:flex;flex-direction:column;gap:16px;padding:0 24px 24px;list-style:none}.suggestion-item{display:flex;align-items:flex-start;gap:12px}.suggestion-item>span:first-child{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;border-radius:8px;background:#f1f4f8;color:var(--text-secondary);font-size:12px;line-height:16px}.suggestion-item p{font-size:14px;line-height:24px;color:var(--text-secondary)}.analysis-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px 24px;border-top:1px solid var(--border)}
.source-list{padding:0 24px}.source-item{display:flex;align-items:flex-start;gap:12px;width:100%;padding:16px 0;border:0;border-bottom:1px solid #eeeef2;background:transparent;text-align:left}.source-item:first-child{padding-top:0}.source-item:last-child{border-bottom:0}.source-item:hover strong{color:var(--brand)}.source-check{margin-top:2px}.source-check .icon{width:16px;height:16px;flex-basis:16px;opacity:.4}.source-item>span:last-child{min-width:0}.source-item strong{display:block;font-size:12px;line-height:20px;font-weight:500}.source-item small{display:block;margin-top:4px;font-size:12px;line-height:20px;color:var(--text-muted)}.source-footer{display:flex;align-items:center;gap:8px;padding:16px 24px;color:var(--text-muted);font-size:12px;line-height:16px}.source-footer .icon{width:16px;height:16px;flex-basis:16px;opacity:.4}
.analysis-disclosure{padding:16px 24px;border:1px solid var(--border);border-radius:12px;background:#fff}.analysis-disclosure summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;color:var(--text-secondary);font-size:12px;line-height:20px}.analysis-disclosure summary::-webkit-details-marker{display:none}.analysis-disclosure summary::after{content:"+";margin-left:auto;font-size:18px}.analysis-disclosure[open] summary::after{content:"−"}.analysis-disclosure>p{margin-top:12px;color:var(--text-muted);font-size:12px;line-height:20px}.analysis-disclosure .material-list{padding:24px 0 0}.analysis-explainer{padding:24px}.analysis-explainer>h3{font-size:14px;line-height:24px;color:var(--text-secondary);margin-bottom:24px}.vertical-steps{display:flex;flex-direction:column;gap:24px}.vertical-steps>div{display:flex;align-items:flex-start;gap:12px}.vertical-steps>div>span{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;border:1px solid #dedee5;border-radius:50%;font-size:12px;line-height:16px;color:var(--text-muted)}.vertical-steps strong{font-size:12px;line-height:24px;font-weight:500}.vertical-steps p{margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}

/* Resources */
.resource-context{display:flex;align-items:center;gap:24px;padding:16px 24px;background:#fff;border:1px solid rgba(0,0,0,.035);border-radius:16px;margin-bottom:24px}.context-project{display:flex;flex-direction:column;gap:4px;min-width:0}.context-project strong{display:block;font-size:14px;line-height:24px;font-weight:500}.context-project small{color:var(--text-muted);font-size:12px;line-height:20px}.resource-context-head{display:flex;align-items:center;gap:16px}.resource-context-head .eyebrow{margin-bottom:4px}.resource-context>p{margin-top:12px;color:var(--text-secondary);font-size:12px;line-height:20px}.resource-context-note{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px;line-height:20px;margin-top:12px}.resource-context-note .icon{width:16px;height:16px;flex-basis:16px;opacity:.35}.resource-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:24px}
.resources-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.resource-card{min-width:0;display:flex;flex-direction:column;padding:24px;background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.035)}.resource-card:hover{border-color:#d2dce9}.resource-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.resource-card-top>.badge.green{color:#3f729f;background:#edf5ff}.resource-card h3{font-size:16px;line-height:24px;font-weight:600}.resource-card-title p,.resource-org{margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.resource-description{margin-top:16px;color:var(--text-secondary);font-size:12px;line-height:20px}.resource-capacity{margin-top:24px;color:var(--text);font-size:14px;line-height:24px}.resource-capacity span{display:block;margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.resource-tags{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:16px}.resource-tags .badge{color:var(--text-secondary);background:#f5f5f7;font-size:12px;line-height:16px}.resource-spec{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin-top:16px;color:var(--text-secondary);font-size:12px;line-height:20px}.resource-spec>span{display:flex;align-items:center;gap:4px}.resource-spec .icon{width:16px;height:16px;flex-basis:16px;opacity:.35}.resource-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:16px;margin-top:auto}.resource-card .resource-footer{margin-top:24px;border-top:1px solid #f0f0f3}.match-note{display:flex;align-items:flex-start;gap:8px;padding:12px;margin-top:16px;background:#f6f8fb;border-radius:8px;color:var(--text-secondary);font-size:12px;line-height:20px}.match-note .icon{width:16px;height:16px;flex-basis:16px;margin-top:2px;opacity:.4}.resource-detail>.resource-icon{margin-bottom:16px}.resource-detail>h3{margin-bottom:4px}.resource-detail>p{margin-top:12px;color:var(--text-secondary);font-size:14px;line-height:24px}.resource-detail .info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-detail>h4{margin-top:16px}.resource-detail .banner-note{margin-top:24px}

/* Dialogs */
dialog.modal{width:min(560px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:0;margin:auto;border:1px solid #e7e7ec;border-radius:16px;color:var(--text);background:#fff;box-shadow:0 24px 80px #14142126;overflow-x:hidden;overflow-y:auto}dialog.modal-wide{width:min(720px,calc(100% - 32px))}dialog::backdrop{background:rgba(24,24,34,.28);backdrop-filter:blur(4px)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:20px;line-height:28px}.modal-body{padding:24px}.modal-body>p{color:var(--text-secondary);font-size:14px;line-height:24px}.modal-body>p+p{margin-top:16px}.modal-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding:16px 24px;border-top:1px solid var(--border);background:#fcfcfd}.modal-actions .action-note{color:var(--text-muted);font-size:12px;line-height:16px;margin-right:auto}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.form-field{min-width:0;display:flex;flex-direction:column;gap:8px}.form-field.full,.form-field.span-2{grid-column:1/-1}.form-field label{color:var(--text-secondary);font-size:12px;line-height:20px;font-weight:500}.form-field label>span{color:var(--red)}.form-field input,.form-field select,.form-field textarea{width:100%;min-height:40px;padding:8px 12px;border:1px solid #d9d9e0;border-radius:8px;background:#fff;color:var(--text);font-size:14px;line-height:24px}.form-field textarea{resize:vertical;min-height:96px}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--brand)}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--text-muted)}.form-field input[aria-invalid="true"],.form-field textarea[aria-invalid="true"]{border-color:#c87979;background:#fffafa}.form-field .hint{color:var(--text-muted);font-size:12px;line-height:20px}form>.form-field,form>.form-grid{margin-bottom:24px}.field-error{color:var(--red);font-size:12px;line-height:20px}.field-error:empty{display:none}.readonly-value{padding:12px;border:1px solid var(--border);border-radius:8px;background:#f8f8fa;font-size:14px;line-height:24px;color:var(--text-secondary)}
.form-summary{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--border);border-radius:12px;background:#f8f8fa;margin-bottom:24px}.form-summary p{margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.confirm-check,.checkbox-field{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px;color:var(--text-secondary);font-size:12px;line-height:20px}.confirm-check input,.checkbox-field input{margin:4px 0 0;accent-color:var(--brand)}form>.banner-note{margin-top:24px}.document-file-icon{display:grid;place-items:center;width:48px;height:56px;background:#f3f3f7;border-radius:12px;margin-bottom:24px}.document-file-icon .icon{width:28px;height:28px}.document-meta{display:flex;flex-direction:column;gap:8px;padding:24px 0;color:var(--text-muted);font-size:12px;line-height:20px}.document-preview>p{margin-top:12px;color:var(--text-secondary);font-size:14px;line-height:24px}.document-preview .banner-note{margin-top:24px}
.success-state{display:flex;flex-direction:column;align-items:center;gap:16px;padding:24px;text-align:center}.success-state>span:first-child{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:#f0f7f2}.success-state>span:first-child .icon{width:32px;height:32px}.success-state p{max-width:400px;color:var(--text-secondary);font-size:14px;line-height:24px}.success-ticket{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;width:100%;max-width:360px;padding:24px;background:#f7f7fa;border:1px solid var(--border);border-radius:12px;font-size:12px;line-height:20px;text-align:left}.success-ticket>span{color:var(--text-muted)}.success-ticket>strong{text-align:right;font-weight:500}.toast-container{position:fixed;right:32px;bottom:32px;z-index:120;display:flex;flex-direction:column;gap:12px;max-width:min(400px,calc(100% - 32px));pointer-events:none}.toast{display:flex;align-items:flex-start;gap:12px;padding:16px 24px;border:1px solid #e6e6ec;border-radius:16px;color:var(--text-secondary);background:#fff;box-shadow:0 8px 32px #14142112;font-size:14px;line-height:20px;animation:toast-in 400ms var(--ease) both}.toast .icon{width:20px;height:20px}@keyframes toast-in{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
.guide-steps{display:flex;flex-direction:column;gap:8px;margin:24px 0}.guide-step{display:flex;align-items:center;gap:16px;padding:16px;width:100%;border:1px solid var(--border);border-radius:12px;color:var(--text-secondary);background:#fff;text-align:left}.guide-step:hover{background:#f8f8fb;border-color:#d5d5df}.guide-step>span:first-child{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:50%;color:var(--text-secondary);background:#f0f0f5;font-size:12px;line-height:16px}.guide-step>div{flex:1;min-width:0}.guide-step strong{font-size:14px;line-height:20px;color:var(--text);font-weight:500}.guide-step p{margin-top:4px;color:var(--text-muted);font-size:12px;line-height:20px}.guide-step>.icon{width:16px;height:16px;flex-basis:16px;opacity:.35}.about-brand{display:flex;align-items:center;gap:16px;margin-bottom:24px}.about-brand p{margin-top:4px;font-size:12px;line-height:20px}.about-list{display:flex;flex-direction:column;gap:12px;padding-left:16px;margin-top:24px;color:var(--text-secondary);font-size:12px;line-height:20px}.page-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:32px;color:var(--text-muted);font-size:12px;line-height:16px}.page-footer button,.page-footer a{padding:0;border:0;color:var(--text-muted);background:transparent;font-size:12px;line-height:16px}.page-footer button:hover,.page-footer a:hover{color:var(--text-secondary)}

/* Bindings to the compact views. */
.legend-row>.legend-dot{width:8px;height:8px;flex:0 0 8px}.ring-center strong>span{font-size:16px;line-height:24px;font-weight:400;margin-left:2px}.chart-total>.chart-note{padding:0;margin-left:auto;white-space:nowrap}.focus-grid{padding:0 24px 24px}.focus-project .project-card-top{margin-bottom:0}.focus-project .project-card-top+.project-link{margin-top:16px}.focus-project .project-link{background:none;border:0;padding:0;color:var(--text);text-align:left}.focus-project .project-link:hover{color:var(--brand)}
.overview-info,.quick-analysis,.analysis-summary,.analysis-section{padding:0}.quick-analysis{gap:0}.quick-analysis .btn{margin-top:16px}.overview-info .info-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:0}.analysis-summary .card-body>p{margin-top:12px;font-size:14px;line-height:24px;color:var(--text-secondary)}.analysis-section .risk-list{padding:0 24px 24px}.analysis-disclosure{display:flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;font-size:12px;line-height:20px;color:var(--text-secondary)}.analysis-disclosure>.icon{width:16px;height:16px;flex-basis:16px;opacity:.4}.source-item>span:nth-child(2){flex:1;min-width:0}.source-item>.icon:last-child{width:16px;height:16px;flex-basis:16px;margin-top:2px;opacity:.35}.source-list{padding-bottom:24px}.resource-context-head{width:100%}.resource-capacity{display:flex;align-items:center;gap:8px}.resource-capacity>.icon{width:16px;height:16px;flex-basis:16px;opacity:.4}.resource-capacity span{margin-top:0}.mini-stats{border:0;padding-top:0;margin:0 0 24px;gap:16px}.mini-stats>div{padding:24px;border:1px solid rgba(0,0,0,.035);border-radius:16px;background:#fff}.mini-stats>div>strong{font-size:30px;line-height:36px;margin-top:12px;letter-spacing:-.5px}.mini-stats>div>strong>small{font-size:14px;line-height:20px;font-weight:400;letter-spacing:0;margin-left:4px;color:var(--text-secondary)}.mini-stats>div>small,.mini-stats>div>.text-button{margin-top:8px}.need-summary{color:var(--text-secondary);font-size:14px;line-height:24px}

@media(min-width:1640px){.content{padding-top:40px}}
@media(max-width:1279px){
 :root{--sidebar-width:192px}.content{padding:24px}.topbar{padding:16px 24px}.brand{gap:8px}.workspace-switch{padding:12px 8px}.workspace-symbol{display:none}.analytics-grid,.dashboard-grid,.detail-grid,.detail-overview-grid,.analysis-layout{grid-template-columns:minmax(0,1.7fr) minmax(264px,1fr);gap:16px}.dashboard-main,.dashboard-aside,.detail-main,.detail-aside,.analysis-main,.analysis-aside{gap:16px}.stats-grid{gap:12px}.stat-card{padding:24px}.stat-number,.stat-value{font-size:48px;line-height:48px}.stat-mini{width:48px;right:24px;bottom:24px}.focus-grid{gap:12px;padding:0 16px 16px}.focus-project{padding:16px}.focus-project .project-card-top{flex-wrap:wrap}.card-header,.section-head{padding:24px}.health-legend{padding:0 24px 24px}.ring-chart{width:156px;height:156px}.projects-grid,.resources-grid{gap:16px}.project-card,.resource-card{padding:24px}.detail-hero{flex-wrap:wrap}.detail-hero .heading-actions{justify-content:flex-start}.data-table th,.data-table td{padding-left:12px;padding-right:12px}
}
@media(max-width:1099px){
 .dashboard-grid,.detail-grid,.detail-overview-grid,.analysis-layout{grid-template-columns:minmax(0,1fr)}.dashboard-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.dashboard-aside>:only-child{grid-column:1/-1}.detail-aside,.analysis-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.detail-aside>:last-child:nth-child(odd),.analysis-aside>:last-child:nth-child(odd){grid-column:1/-1}.analytics-grid{grid-template-columns:minmax(0,1.5fr) minmax(232px,1fr)}.ring-chart{width:144px;height:144px}.ring-center strong{font-size:30px;line-height:36px}.chart-total strong,.chart-total>span:first-child{font-size:30px;line-height:36px}.focus-grid{padding:0 24px 24px;gap:16px}.focus-project{padding:16px}.focus-project .project-card-top{flex-wrap:nowrap}.projects-grid,.resources-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar-date{display:none}.page-heading h1{font-size:24px;line-height:32px}.stat-mini{display:none}.stat-caption{white-space:normal}.analysis-context{flex-wrap:wrap}.analysis-context .context-select{flex-basis:100%;margin-left:0}.analysis-context .context-select select{max-width:none}.stat-card{padding:16px}.stat-number{font-size:36px;line-height:40px}
}
@media(max-width:899px){
 .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-mini{display:block;width:64px}.page-heading{align-items:flex-start;flex-wrap:wrap;gap:16px}.page-heading .heading-actions{justify-content:flex-start}.analytics-grid{grid-template-columns:minmax(0,1fr)}.health-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center}.health-card .card-header{grid-column:1/-1}.health-card .ring-chart{margin:0 auto 24px}.health-card .health-legend{padding-top:0}.resource-context-head{flex-wrap:wrap}.resource-context-head .context-select{flex-basis:100%;margin-left:0}.resource-context-head .context-select select{max-width:none}.focus-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.milestone-strip{gap:8px}.chart-total>.chart-note{font-size:12px;line-height:16px}.mini-stats>div{padding:16px}.mini-stats>div>strong{font-size:24px;line-height:32px}
}
@media(max-width:899px){
 :root{--sidebar-width:248px}.sidebar{transform:translateX(-100%);transition:transform 500ms var(--ease);z-index:100}body.nav-open .sidebar,.sidebar.open{transform:none}body.nav-open{overflow:hidden}.mobile-overlay{display:none;position:fixed;inset:0;z-index:90;width:100%;padding:0;border:0;background:rgba(24,24,34,.24);backdrop-filter:blur(3px)}body.nav-open .mobile-overlay,.mobile-overlay.open{display:block}.icon-btn.mobile-nav-toggle{display:inline-flex}.app-main{margin-left:0}.workspace-symbol{display:grid}.topbar{min-height:64px;padding:12px 16px;gap:12px}.breadcrumb{gap:8px}.topbar-actions{gap:8px}.topbar-divider,.topbar-actions>.avatar{display:none}.content{padding:24px 16px 32px}.page-heading{gap:16px}.page-heading p{font-size:12px;line-height:20px}.heading-actions{gap:8px}.stats-grid{gap:12px}.stat-card{padding:16px}.stat-number,.stat-value{font-size:36px;line-height:40px}.stat-mini{right:16px;bottom:16px;width:48px}.stat-caption{font-size:12px;line-height:20px}.card-header,.section-head{padding:24px}.card-body{padding:0 24px 24px}.chart-total{padding-left:24px;padding-right:24px}.chart-svg{padding:0 12px 16px}.focus-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:0 24px 24px;gap:12px}.focus-project{padding:12px}.focus-project .project-card-top{flex-wrap:wrap;gap:8px}.focus-project-foot{flex-wrap:wrap;gap:8px}.detail-aside,.analysis-aside{grid-template-columns:minmax(0,1fr)}.detail-aside>*,.analysis-aside>*{grid-column:1/-1}.detail-hero{padding:24px}.detail-hero h1{font-size:20px;line-height:28px}.detail-hero-main{gap:12px}.detail-hero-main>.project-icon{width:40px;height:40px;flex-basis:40px;border-radius:12px}.tabs{gap:24px}.tab{font-size:12px;line-height:20px}.mini-stats{gap:12px}.mini-stats>div>strong{font-size:24px;line-height:32px}.analysis-start,.analysis-ready{min-height:320px;padding:32px 24px}.analysis-start h2,.analysis-ready h2{font-size:20px;line-height:28px}.analysis-context,.resource-context{padding:16px}.analysis-actions{padding:16px 24px}.toolbar{padding:16px;gap:12px}.search-box{min-width:0}.data-table{min-width:620px}.resources-grid,.projects-grid{gap:16px}.resource-card,.project-card{padding:24px}.resource-toolbar{gap:12px}.context-select{width:100%}.context-select select{max-width:none}.modal-head,.modal-body{padding:24px}.modal-actions{padding:16px 24px}.toast-container{right:16px;bottom:16px}.toast{padding:16px}.page-footer{align-items:flex-start;flex-direction:column;gap:12px}
}
@media(max-width:559px){
 .focus-grid{grid-template-columns:minmax(0,1fr)}.focus-project{padding:16px}.focus-project .project-card-top{flex-wrap:nowrap}.focus-project-foot{flex-wrap:nowrap}.projects-grid,.resources-grid{grid-template-columns:minmax(0,1fr)}.project-card,.resource-card{padding:24px}.dashboard-aside{grid-template-columns:minmax(0,1fr)}.dashboard-aside>*{grid-column:1/-1}.stat-mini,.stat-icon{display:none}.stat-caption,.stat-note{white-space:nowrap;font-size:12px;line-height:20px}.stat-number,.stat-value{font-size:36px;line-height:40px}.page-heading h1{font-size:24px;line-height:32px}.page-heading .heading-actions{width:100%}.heading-actions .btn{flex:1}.topbar-actions{gap:4px}.topbar-actions>.icon-btn{display:none}.chip.demo{gap:4px;padding:4px}.breadcrumb{gap:4px}.toolbar .search-box{flex-basis:100%;max-width:none}.toolbar-right{width:100%;justify-content:space-between}.toolbar select{flex:1;min-width:0}.list-footer,.table-footer{align-items:flex-start;flex-direction:column;gap:8px;padding:16px}.detail-topline{align-items:flex-start;flex-wrap:wrap;gap:12px}.detail-hero-main>.project-icon{display:none}.detail-hero .heading-actions{width:100%}.detail-labels,.detail-meta{gap:8px}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.milestone-strip{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 24px 24px;gap:24px 16px}.mini-stats{gap:8px}.mini-stats>div{padding:16px 12px}.mini-stats>div>strong{font-size:20px;line-height:28px}.mini-stats>div>small{font-size:12px;line-height:16px}.mini-stats .progress-cell{min-width:0}.mini-stats .progress-cell .progress{min-width:0}.mini-stats .progress-cell>span{display:none}.mini-stats .text-button{font-size:12px;line-height:16px}.service-record{padding:16px}.service-head{flex-wrap:wrap;gap:12px}.service-step{font-size:12px;line-height:16px}.service-step .icon{display:none}.resource-footer{flex-wrap:wrap}.form-grid,.resource-detail .info-grid{grid-template-columns:minmax(0,1fr)}.form-field.full,.form-field.span-2{grid-column:auto}.form-field input,.form-field select,.form-field textarea{font-size:16px;line-height:24px}.modal-actions .btn{flex:1}.success-ticket{padding:16px;gap:12px}.guide-step{padding:12px;gap:12px}.guide-step>.icon{display:none}.analysis-actions .btn{width:100%}.analysis-numbers{gap:24px}.risk-card summary{flex-wrap:wrap;gap:8px}.risk-card summary>strong{flex:1;min-width:0}.risk-card summary>.badge{order:4;margin-left:24px}.risk-card summary>.icon:last-child{margin-left:0}.chart-total{flex-wrap:wrap;gap:8px}.chart-total>.chart-note{margin-left:auto;font-size:12px;line-height:16px}.health-legend{padding-left:8px;padding-right:24px}.ring-chart{width:144px;height:144px}.segmented button{padding:4px 8px}.card-header h2{white-space:nowrap}
}
/* Keep viewBox text legible as the plot narrows. */
@media(max-width:899px){.chart-svg svg text,svg.chart-svg text{font-size:16px}}
@media(max-width:559px){.chart-svg svg text,svg.chart-svg text{font-size:22px}}
@media(pointer:coarse){.icon-btn,.row-action,.view-toggle button{min-width:44px;min-height:44px}.btn-sm,.filter-chip,.segmented button{min-height:44px}.guide-step{min-height:44px}.search-box input,.toolbar select,.context-select select{font-size:16px;line-height:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}button:active:not(:disabled),.btn:active{transform:none}}
@media print{.sidebar,.topbar,.heading-actions,.toast-container,.page-footer,.back-link,.btn,.icon-btn{display:none!important}.app-main{margin:0}.content{padding:0;max-width:none}body{background:white}.dashboard-grid,.detail-grid,.analysis-layout,.detail-overview-grid{display:block}.card,.analysis-section,.resource-card{break-inside:avoid;margin-bottom:24px}.table-wrap{overflow:visible}.data-table{min-width:0}}
