*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--type-font-family);font-size:var(--type-body);line-height:var(--type-line-normal);color:var(--color-text-primary);background:var(--color-background);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,p{margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea,button{font-family:inherit;font-size:var(--type-body)}:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:1px}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.spread{display:flex;align-items:center;justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);border:1px solid transparent;border-radius:var(--radius-md);padding:10px var(--space-md);font-weight:var(--type-weight-semibold);font-size:var(--type-body);line-height:1;transition:background .12s ease,border-color .12s ease,opacity .12s;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt)}.btn-ghost{background:transparent;color:var(--color-primary)}.btn-ghost:hover:not(:disabled){background:var(--color-primary-muted)}.btn-danger{background:var(--color-danger);color:#fff}.btn-block{width:100%}.btn-lg{padding:14px var(--space-lg);font-size:var(--type-subhead)}.link-button{display:inline;padding:0;margin:0;border:0;background:none;font:inherit;line-height:inherit;color:inherit;cursor:pointer}.link-button:hover:not(:disabled){text-decoration:underline}.disclosure{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);width:100%;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.disclosure-chev{display:inline-block;width:1em;font-size:var(--type-subhead);color:var(--color-text-secondary)}.more-toggle{align-self:flex-start;padding:0;border:0;background:none;font:inherit;font-size:var(--type-label);color:var(--color-text-secondary);cursor:pointer}.more-toggle:hover{color:var(--color-text-primary)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:var(--type-label);font-weight:var(--type-weight-medium);color:var(--color-text-secondary)}.field-help{font-size:var(--type-caption);color:var(--color-text-muted)}.input,.select,.textarea{width:100%;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:10px var(--space-md);background:var(--color-surface);color:var(--color-text-primary)}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px var(--color-focus-ring)}.textarea{min-height:80px;resize:vertical}.input-affix{position:relative;display:flex;align-items:center}.input-affix-prefix{position:absolute;left:var(--space-md);color:var(--color-text-muted);pointer-events:none;font-weight:var(--type-weight-medium)}.input-affix-field{padding-left:calc(var(--space-md) + 12px)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--space-lg)}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-pill);padding:3px 10px;font-size:var(--type-label);font-weight:var(--type-weight-semibold);line-height:1.4}.pill{display:inline-flex;align-items:center;justify-content:center;min-width:44px;border-radius:var(--radius-pill);padding:4px 10px;font-weight:var(--type-weight-bold);font-family:var(--type-font-family-mono);font-size:var(--type-label)}.notification-row{border-left:3px solid transparent}.notification-row.unread{border-left-color:var(--color-primary);background:var(--color-primary-muted)}.notification-dot{flex:0 0 auto;width:8px;height:8px;margin-top:7px;border-radius:var(--radius-pill);background:transparent}.notification-row.unread .notification-dot{background:var(--color-primary)}.banner{border-radius:var(--radius-md);padding:var(--space-md);font-size:var(--type-body)}.banner-error{background:var(--color-danger-muted);color:var(--color-danger);border:1px solid var(--color-danger)}.banner-info{background:var(--color-info-muted);color:var(--color-info);border:1px solid var(--color-info)}.banner-success{background:var(--color-success-muted);color:var(--color-success);border:1px solid var(--color-success)}.banner-warning{background:var(--color-warning-muted);color:var(--color-warning);border:1px solid var(--color-warning)}.auth-viewport{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);background:var(--color-background)}.auth-card{width:100%;max-width:420px}.auth-split{min-height:100%;display:grid;grid-template-columns:minmax(320px,5fr) 7fr;background:var(--color-surface)}.auth-brand{position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:var(--space-xxl) var(--space-xl);color:var(--color-brand-panel-text);background-color:var(--color-brand-panel);background-image:radial-gradient(circle at 20% 15%,var(--color-brand-glow),transparent 55%),linear-gradient(var(--color-brand-grid) 1px,transparent 1px),linear-gradient(90deg,var(--color-brand-grid) 1px,transparent 1px);background-size:100% 100%,var(--space-lg) var(--space-lg),var(--space-lg) var(--space-lg)}.auth-brand-inner{display:flex;flex-direction:column;gap:var(--space-md);max-width:420px}.auth-wordmark{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--type-headline);font-weight:var(--type-weight-bold);letter-spacing:-.01em}.auth-mark{width:var(--space-xl);height:var(--space-xl);fill:var(--color-brand-panel-text)}.auth-mark .auth-mark-accent{fill:var(--color-accent)}.auth-tagline{font-size:var(--type-display);font-weight:var(--type-weight-semibold);line-height:var(--type-line-tight);letter-spacing:-.02em;text-wrap:balance}.auth-company{font-size:var(--type-label);color:var(--color-brand-panel-muted);text-transform:uppercase;letter-spacing:.08em}.auth-main{display:flex;align-items:center;justify-content:center;padding:var(--space-xl) var(--space-lg)}.auth-main .auth-card .title{font-size:var(--type-title)}@media (max-width: 767px){.auth-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}.auth-brand{align-items:center;padding:var(--space-lg)}.auth-brand-inner{gap:var(--space-sm)}.auth-tagline{font-size:var(--type-subhead);font-weight:var(--type-weight-medium)}.auth-company{display:none}.auth-main{align-items:flex-start;padding:var(--space-lg)}}.shell{display:grid;grid-template-columns:var(--layout-sidebar-width) 1fr;min-height:100%}.shell-sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs);position:sticky;top:0;height:100vh}.shell-content{padding:var(--space-xl);max-width:var(--layout-content-max-width);width:100%;margin:0 auto}.nav-item{display:flex;align-items:center;gap:var(--space-sm);padding:10px var(--space-md);border-radius:var(--radius-md);color:var(--color-text-secondary);font-weight:var(--type-weight-medium);cursor:pointer;border:none;background:none;text-align:left;width:100%;font-size:var(--type-body)}.nav-item:hover{background:var(--color-surface-alt);text-decoration:none}.nav-item.active{background:var(--color-primary-muted);color:var(--color-primary);font-weight:var(--type-weight-semibold)}.shell-topnav{display:none}.table{width:100%;border-collapse:collapse;font-size:var(--type-body)}.table th{text-align:left;font-size:var(--type-label);font-weight:var(--type-weight-semibold);color:var(--color-text-secondary);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border)}.table td{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border)}.skeleton{background:linear-gradient(90deg,var(--color-skeleton) 25%,var(--color-surface-alt) 37%,var(--color-skeleton) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-lg);padding:var(--space-xl);text-align:center;color:var(--color-text-secondary);background:var(--color-surface-alt);cursor:pointer;transition:border-color .12s,background .12s}.dropzone.drag{border-color:var(--color-primary);background:var(--color-primary-muted)}.title{font-size:var(--type-title);font-weight:var(--type-weight-bold);line-height:var(--type-line-tight)}.display{font-size:var(--type-display);font-weight:var(--type-weight-bold);line-height:var(--type-line-tight)}.headline{font-size:var(--type-headline);font-weight:var(--type-weight-semibold)}.subhead{font-size:var(--type-subhead);font-weight:var(--type-weight-semibold)}.muted{color:var(--color-text-muted)}.secondary{color:var(--color-text-secondary)}.caption{font-size:var(--type-caption);color:var(--color-text-muted)}.label-sm{font-size:var(--type-label);color:var(--color-text-secondary)}.mono{font-family:var(--type-font-family-mono)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-lg);z-index:50}.modal-card{width:100%;max-width:520px;max-height:90vh;overflow:auto}.chips-input{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.chips-input:focus-within{border-color:var(--color-primary)}.chips-input-field{flex:1;min-width:120px;border:none;outline:none;background:transparent;color:var(--color-text-primary);font:inherit;padding:4px}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 6px 3px 10px;border-radius:var(--radius-pill);background:var(--color-primary-muted);color:var(--color-primary);font-size:var(--type-label);white-space:nowrap}.chip-remove{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:var(--radius-pill);background:transparent;color:inherit;cursor:pointer;line-height:1;font-size:11px}.chip-remove:hover{background:var(--color-primary);color:var(--color-on-primary)}.state-select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between}.state-select-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);max-height:280px;box-shadow:var(--shadow-md, var(--shadow-sm))}.state-select-list{overflow-y:auto;display:flex;flex-direction:column}.state-select-option{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-primary);font:inherit;text-align:left;cursor:pointer}.state-select-option:hover{background:var(--color-surface-alt)}.state-select-option.is-selected{background:var(--color-primary-muted);color:var(--color-primary)}.state-select-empty{padding:8px 10px}.state-multiselect-chips{display:flex;flex-wrap:wrap;gap:var(--space-xs);min-height:28px;margin-bottom:var(--space-sm)}.coverage-map{width:100%;height:360px;border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface-alt)}.coverage-map .leaflet-container{width:100%;height:100%;background:var(--color-surface-alt)}.progress-track{height:6px;background:var(--color-surface-alt);border-radius:var(--radius-pill);overflow:hidden}.progress-fill{height:100%;background:var(--color-primary);transition:width .2s ease}input[type=range]{width:100%;accent-color:var(--color-primary)}.gauge{position:relative;width:140px;height:140px}@media (max-width: 1023px){.shell{grid-template-columns:1fr}.shell-sidebar{display:none}.shell-topnav{display:flex;gap:var(--space-xs);overflow-x:auto;padding:var(--space-sm) var(--space-md);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.shell-topnav .nav-item{width:auto;white-space:nowrap}.shell-content{padding:var(--space-md)}}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}@media (max-width: 640px){.grid-2{grid-template-columns:1fr}}.placeholder-chip{display:inline;font:inherit;color:var(--color-placeholder);background:var(--color-placeholder-muted);border:1px dashed var(--color-placeholder-border);border-radius:var(--radius-sm);padding:0 6px;margin:0 1px;cursor:pointer}.placeholder-chip:disabled{cursor:default}.placeholder-chip:hover:not(:disabled){border-style:solid}.condition-chip{display:inline-block;max-width:var(--layout-document-grid-min-card);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-condition-chip);background:var(--color-condition-chip-muted);border-radius:var(--radius-pill);padding:2px 10px;font-size:var(--type-caption)}.condition-kind{color:var(--color-condition-chip);background:var(--color-condition-chip-muted)}.recommended-badge{color:var(--color-recommended);background:var(--color-recommended-muted)}.draft-text p{margin:0 0 var(--space-sm);line-height:var(--type-line-normal)}.draft-text ul{margin:0 0 var(--space-sm);padding-left:var(--space-lg)}.draft-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--layout-sidebar-width);gap:var(--space-lg);align-items:start}@media (max-width: 1023px){.draft-layout{grid-template-columns:minmax(0,1fr)}}.budget-fill-over{background:var(--color-budget-over)}.draft-letterhead{border-bottom:1px solid var(--color-border);padding-bottom:var(--space-sm)}.draft-table th{background:var(--print-table-header-fill)}.draft-table td{vertical-align:top}.schedule-track{margin-top:var(--space-xs);height:var(--print-schedule-bar-height);border-radius:var(--radius-sm);background:var(--color-surface-alt)}.schedule-bar{height:100%;min-width:2px;border-radius:var(--radius-sm);background:var(--print-schedule-bar-color)}.schedule-row-toggle{cursor:pointer}.schedule-row-open{background:var(--color-surface-alt)}.schedule-start{gap:var(--space-sm);margin-top:var(--space-xs)}.schedule-lag-field{gap:var(--space-xs);font-size:var(--type-caption);color:var(--color-text-secondary)}.schedule-start .select{font-size:var(--type-caption)}.schedule-lag{width:var(--layout-lag-input-width);font-size:var(--type-caption)}.schedule-bar-pending{background:var(--color-schedule-bar-pending)}.sheet{margin:0;display:grid;gap:2px}.sheet-row{display:grid;grid-template-columns:var(--print-sheet-label-width) minmax(0,1fr);gap:var(--space-sm);align-items:baseline}.sheet-row dt{font-size:var(--type-label);color:var(--color-text-secondary)}.sheet-row dd{margin:0}.sheet-missing{color:var(--color-text-muted)}@media (max-width: 640px){.sheet-row{grid-template-columns:minmax(0,1fr);gap:0}}.relevance-line{font-weight:var(--print-relevance-weight)}.stale-badge{color:var(--color-review);background:var(--color-review-muted)}.chip-toggle{font:inherit;font-size:var(--type-label);padding:3px 10px;border-radius:var(--radius-pill);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer}.chip-toggle-on{border-color:var(--color-condition-chip);background:var(--color-condition-chip-muted);color:var(--color-condition-chip)}.example-won{color:var(--color-example-won);background:var(--color-example-won-muted)}.example-lost{color:var(--color-example-lost);background:var(--color-example-lost-muted)}.example-unknown{color:var(--color-example-unknown);background:var(--color-example-unknown-muted)}.lesson-card.lesson-suggested{border-left:3px solid var(--color-lesson-suggested)}.lesson-card.lesson-dismissed{opacity:.7}.lesson-evidence{margin:0;padding:var(--space-xs) var(--space-sm);border-left:2px solid var(--color-lesson-suggested);background:var(--color-lesson-suggested-muted);color:var(--color-text-secondary);font-style:italic;overflow-wrap:anywhere}.lessons-applied{margin:0;padding-left:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs)}
