:root{color-scheme:light;--bg:#f8f9fa;--surface:rgba(255,255,255,0.9);--surface-solid:#ffffff;--text:#24343b;--muted:#6e7f86;--border:rgba(80,109,122,0.16);--accent:#506d7a;--accent-strong:#3d5661;--success:#059669;--warning:#d97706;--danger:#dc2626;--sidebar:linear-gradient(180deg,#506d7a,#435d68);--shadow:0 24px 60px rgba(80,109,122,0.12)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:radial-gradient(circle at top left,rgba(80,109,122,.14),transparent 25%),radial-gradient(circle at top right,rgba(80,109,122,.08),transparent 22%),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body,html{min-height:100vh;min-height:100dvh}a{color:inherit;text-decoration:none}.layout{display:grid;grid-template-columns:290px 1fr;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh}.sidebar-wrap{position:relative}.sidebar{display:flex;flex-direction:column;justify-content:space-between;gap:24px;min-height:100%;position:-webkit-sticky;position:sticky;top:0;height:100vh;height:100dvh;overflow-y:auto;border-right:1px solid rgba(255,255,255,.06);background:var(--sidebar);color:#e5eefb;padding:26px 22px}.sidebar-top{display:flex;gap:14px;align-items:flex-start}.brand-mark{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#6f8791,#506d7a);color:white;font-weight:800;box-shadow:0 14px 34px rgba(80,109,122,.24)}.sidebar-title{margin:6px 0 4px;font-size:1.45rem}.sidebar-copy{margin:0;color:rgba(226,232,240,.72);line-height:1.5}.sidebar-nav{display:grid;grid-gap:10px;gap:10px;margin-top:12px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;color:#dbe7fb;background:transparent;border:1px solid transparent;font:inherit;cursor:pointer;width:100%;text-align:left;transition:background .18s ease,transform .18s ease,border-color .18s ease}.nav-link:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.08);transform:translateX(2px)}.nav-link--active{background:rgba(248,249,250,.16);border-color:rgba(248,249,250,.18);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}.nav-link--active .nav-icon{background:rgba(248,249,250,.18)}.nav-icon{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.08);font-size:13px}.sidebar-footer{display:grid;grid-gap:14px;gap:14px}.admin-card{display:flex;gap:12px;align-items:center;padding:14px;border-radius:18px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)}.admin-avatar{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#7c959f,#506d7a);color:white}.admin-avatar,.admin-name{font-weight:700}.admin-meta{color:rgba(226,232,240,.7);font-size:.88rem}.logout-btn,.primary-btn{width:100%;border:0;cursor:pointer;border-radius:14px;padding:12px 16px;font-weight:700}.logout-btn{background:rgba(255,255,255,.08);color:#e2e8f0;border:1px solid rgba(255,255,255,.08)}.main{min-height:100%;padding:34px;overflow-x:hidden;overflow-y:auto}.status-banner{margin:0 0 18px;padding:14px 16px;border-radius:16px;border:1px solid transparent;font-weight:600;line-height:1.5}.status-banner--warning{background:rgba(217,119,6,.1);border-color:rgba(217,119,6,.22);color:#9a6700}.mobile-topbar{display:none;align-items:center;gap:14px;position:-webkit-sticky;position:sticky;top:0;z-index:25;margin:-6px 0 18px;padding:12px 0 10px;background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid rgba(80,109,122,.08);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-topbar-title{font-weight:700;color:var(--text)}.mobile-menu-btn{width:44px;height:44px;border-radius:14px;border:1px solid var(--border);background:rgba(255,255,255,.78);font-size:18px;cursor:pointer}.mobile-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.44);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:29}.mobile-backdrop--open{opacity:1;pointer-events:auto}.page-shell{display:grid;grid-gap:24px;gap:24px}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.card{background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:24px;padding:20px;box-shadow:var(--shadow)}.stat-card{position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;inset:auto -30px -30px auto;width:110px;height:110px;border-radius:999px;background:rgba(255,255,255,.5)}.stat-card--warning{background:linear-gradient(135deg,rgba(255,247,237,.95),rgba(255,255,255,.92))}.stat-card--accent{background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(255,255,255,.92))}.stat-card--danger{background:linear-gradient(135deg,rgba(254,242,242,.95),rgba(255,255,255,.92))}.stat-card--success{background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(255,255,255,.92))}.stat-card--clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}.stat-card--clickable:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(80,109,122,.15)}.kicker{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.metric{font-size:32px;font-weight:700;margin:8px 0}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.sticky-page-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;padding:14px 0 18px;margin-top:-10px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.page-title{margin:6px 0 8px;font-size:clamp(2rem,3vw,3rem);line-height:1.05}.page-description{margin:0;color:var(--muted);max-width:800px;font-size:1.02rem;line-height:1.6}.page-actions{display:flex;align-items:center}.page-back-link{display:inline-flex;align-items:center;gap:6px;color:var(--accent-strong);font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:none;transition:opacity .16s ease,transform .16s ease}.page-back-link:hover{opacity:.78}.hero-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:rgba(80,109,122,.08);border:1px solid rgba(80,109,122,.14);color:var(--accent-strong);font-weight:700}.dashboard-grid,.hero-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.85fr);grid-gap:18px;gap:18px}.hero-card,.panel{background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:28px;padding:24px;box-shadow:var(--shadow)}.hero-card--primary{background:linear-gradient(135deg,rgba(80,109,122,.98),rgba(61,86,97,.94));color:white}.hero-card--primary .kicker,.hero-card--primary p{color:rgba(226,232,240,.78)}.hero-card--primary h3,.hero-card--secondary h3,.panel h3{margin:8px 0 10px;font-size:1.5rem}.hero-stats{display:flex;gap:24px;margin-top:24px}.hero-stats strong{display:block;font-size:1.9rem}.health-list span,.hero-stats span,.task-item p{color:inherit;opacity:.78}.health-list{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-gap:14px;gap:14px}.health-list li,.stack-label{display:flex;justify-content:space-between;gap:16px}.panel-header{margin-bottom:14px}.task-list{display:grid;grid-gap:16px;gap:16px}.task-item{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--border)}.task-item:first-child{border-top:0;padding-top:0}.task-dot{width:10px;height:10px;border-radius:999px;margin-top:8px}.task-dot--warning{background:var(--warning)}.task-dot--accent{background:var(--accent)}.task-dot--danger{background:var(--danger)}.review-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.review-summary-card{display:grid;grid-gap:8px;gap:8px;padding:18px 20px;border-radius:22px;background:rgba(255,255,255,.82);border:1px solid var(--border);box-shadow:var(--shadow)}.review-summary-card strong{font-size:1.9rem}.review-summary-card span{color:var(--muted);line-height:1.5}.review-summary-card--warning{background:linear-gradient(135deg,rgba(255,247,237,.96),rgba(255,255,255,.9))}.stack-bars{display:grid;grid-gap:16px;gap:16px}.stack-track{width:100%;height:10px;border-radius:999px;background:rgba(148,163,184,.16);overflow:hidden;margin-top:8px}.stack-fill{height:100%;border-radius:999px}.stack-fill--success{background:linear-gradient(90deg,#10b981,#34d399)}.stack-fill--accent{background:linear-gradient(90deg,#6f8791,#506d7a)}.stack-fill--danger{background:linear-gradient(90deg,#fb7185,#ef4444)}.table{width:100%;border-collapse:collapse;background:var(--surface-solid);border:1px solid var(--border);border-radius:24px;overflow:hidden}.table--elevated{box-shadow:var(--shadow)}.table td,.table th{padding:14px 16px;border-bottom:1px solid var(--border);text-align:left}.table th{font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:rgba(248,250,252,.8)}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:rgba(80,109,122,.12);color:var(--accent);font-size:12px;font-weight:600}.badge--APPROVED{background:rgba(22,163,74,.12);color:#16a34a}.badge--PENDING_REVIEW{background:rgba(234,88,12,.12);color:#ea580c}.badge--CHANGES_REQUESTED{background:rgba(202,138,4,.12);color:#ca8a04}.badge--REJECTED{background:rgba(220,38,38,.12);color:#dc2626}.badge--SUSPENDED{background:rgba(100,116,139,.12);color:#64748b}.badge--DRAFT{background:rgba(100,116,139,.08);color:#94a3b8}.badge--CONFIRMED{background:rgba(22,163,74,.12);color:#16a34a}.badge--PROPOSED{background:rgba(37,99,235,.12);color:#2563eb}.badge--DISPUTED{background:rgba(234,88,12,.12);color:#ea580c}.action-row{display:flex;gap:6px;flex-wrap:wrap}.action-btn{padding:7px 11px;border-radius:10px;border:1px solid var(--border);background:var(--surface);font-size:12px;font-weight:500;cursor:pointer;transition:opacity .1s}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn--approve{background:rgba(22,163,74,.1);border-color:rgba(22,163,74,.3);color:#16a34a}.action-btn--reject{background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.3);color:#dc2626}.action-btn--warn{background:rgba(202,138,4,.1);border-color:rgba(202,138,4,.3);color:#ca8a04}.table td{vertical-align:middle}.toolbar{display:grid;grid-template-columns:minmax(0,1fr) 180px 180px 160px;grid-gap:12px;gap:12px;align-items:center}.toolbar--compact{grid-template-columns:minmax(0,1fr) 220px 160px}.field input,.toolbar-input,.toolbar-select{width:100%;border:1px solid var(--border);border-radius:14px;padding:12px 14px;background:rgba(255,255,255,.85);font:inherit;color:var(--text);outline:none}.toolbar-input--sm{min-width:0}.field input:focus,.toolbar-input:focus,.toolbar-select:focus{border-color:rgba(80,109,122,.35);box-shadow:0 0 0 4px rgba(80,109,122,.12)}.primary-btn{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:white;box-shadow:0 12px 24px rgba(80,109,122,.2)}.catalog-create-form{display:grid;grid-template-columns:minmax(0,1fr) 180px;grid-gap:12px;gap:12px;align-items:center}.catalog-inline-form{display:grid;grid-template-columns:minmax(180px,1fr) auto;grid-gap:10px;gap:10px;align-items:center}.entity-cell{display:flex;gap:12px;align-items:center}.entity-avatar{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#9ab0b8,#506d7a);color:white;font-weight:700}.entity-avatar--soft{background:linear-gradient(135deg,#d8e0e4,#6f8791)}.entity-meta{color:var(--muted);font-size:.88rem;margin-top:2px}.priority-stack{display:grid;grid-gap:6px;gap:6px}.tag-list{display:flex;gap:8px;flex-wrap:wrap}.tag{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:rgba(80,109,122,.08);color:var(--accent-strong);font-size:12px;font-weight:600}.empty-state{min-height:360px;display:grid;place-items:center;text-align:center;grid-gap:12px;gap:12px;padding:48px 24px;background:var(--surface);border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow)}.empty-state--compact{min-height:0}.empty-illustration{width:78px;height:78px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(135deg,#eef2f4,#d8e0e4);font-size:2rem}.login-shell{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:40px 24px}.login-card{width:100%;max-width:480px;padding:32px;border-radius:32px;background:rgba(255,255,255,.92);border:1px solid var(--border);box-shadow:var(--shadow)}.login-brand{display:inline-flex;padding:8px 12px;border-radius:999px;background:rgba(80,109,122,.08);color:var(--accent-strong);font-weight:700}.login-title{margin:16px 0 10px;font-size:2.2rem}.login-copy{margin:0 0 24px;color:var(--muted);line-height:1.6}.login-form{display:grid;grid-gap:16px;gap:16px}.field{display:grid;grid-gap:8px;gap:8px;font-weight:600}.login-hint{margin-top:18px;color:var(--muted);font-size:.92rem}@media (max-width:1080px){.catalog-create-form,.catalog-inline-form,.dashboard-grid,.hero-grid,.layout,.toolbar{grid-template-columns:1fr}.layout{position:relative}.sidebar-wrap{position:fixed;top:0;left:0;bottom:0;z-index:30;transform:translateX(-100%);transition:transform .22s ease}.sidebar-wrap--open{transform:translateX(0)}.sidebar{width:min(86vw,320px)}.main{padding:22px}.page-header{flex-direction:column;align-items:stretch}.page-actions{width:100%;justify-content:flex-start}.page-back-link{font-size:14px}.mobile-topbar{display:flex}.sticky-page-header{top:58px}.table,.table tbody,.table td,.table thead,.table tr{display:block;width:100%}.table{border:0;background:transparent;box-shadow:none}.table thead{display:none}.table tbody{display:grid;grid-gap:14px;gap:14px}.table tr{background:var(--surface-solid);border:1px solid var(--border);border-radius:20px;padding:10px 0;box-shadow:var(--shadow)}.table td{border-bottom:0;padding:10px 14px}.table td:before{content:attr(data-label);display:block;margin-bottom:6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.entity-cell{align-items:flex-start}.tag-list{gap:6px}}.notice-box{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-radius:10px;font-size:.875rem;line-height:1.5;margin-bottom:20px;border:1px solid transparent}.notice-box--warning{background:color-mix(in srgb,var(--warning,#f59e0b) 12%,transparent);border-color:color-mix(in srgb,var(--warning,#f59e0b) 35%,transparent);color:var(--text)}.notice-box--warning strong{color:color-mix(in srgb,var(--warning,#f59e0b) 80%,var(--text))}.notice-box--danger{background:color-mix(in srgb,var(--danger,#ef4444) 10%,transparent);border-color:color-mix(in srgb,var(--danger,#ef4444) 30%,transparent);color:var(--text)}.notice-box--danger strong{color:color-mix(in srgb,var(--danger,#ef4444) 80%,var(--text))}.notice-box__icon{font-size:1.1rem;flex-shrink:0;margin-top:2px}.row--warning{background:color-mix(in srgb,var(--warning,#f59e0b) 8%,transparent)}.deadline-timer{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--success);background:color-mix(in srgb,var(--success) 10%,transparent);border:1px solid color-mix(in srgb,var(--success) 25%,transparent);border-radius:6px;padding:3px 8px;white-space:nowrap}.deadline-timer--urgent{color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,transparent);border-color:color-mix(in srgb,var(--warning) 30%,transparent);animation:timerPulse 1.5s ease-in-out infinite}.deadline-timer--expired{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);border-color:color-mix(in srgb,var(--danger) 25%,transparent);animation:none}.deadline-timer--done{color:var(--muted);background:transparent;border-color:transparent;font-weight:500}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.65}}.milestone-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;animation:fadeIn .25s ease}.milestone-modal{position:relative;background:var(--surface-solid);border-radius:20px;padding:48px 40px 40px;max-width:440px;width:calc(100% - 32px);text-align:center;box-shadow:0 40px 100px rgba(0,0,0,.25);animation:popIn .35s cubic-bezier(.175,.885,.32,1.275);overflow:hidden}.milestone-emoji{font-size:4rem;line-height:1;margin-bottom:16px;display:block}.milestone-title{font-size:2rem;font-weight:800;margin:0 0 12px;color:var(--text);letter-spacing:-.03em}.milestone-body{font-size:1rem;color:var(--muted);line-height:1.6;margin:0 0 28px}.milestone-btn{display:inline-block;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:13px 28px;font-size:1rem;font-weight:700;cursor:pointer;transition:background .15s,transform .1s}.milestone-btn:hover{background:var(--accent-strong);transform:translateY(-1px)}.confetti-container{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-2rem;animation:confettiFall linear forwards;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}@keyframes confettiFall{0%{transform:translateY(0) rotate(0deg);opacity:1}80%{opacity:1}to{transform:translateY(110vh) rotate(2turn);opacity:0}}@keyframes popIn{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}