:root { --blue:#143f8f; --navy:#102f53; --teal:#0e6268; --ink:#203b45; --muted:#697d87; --line:#d6dfe2; --paper:#f4f3ef; --orange:#da632d; font-family:"Bahnschrift","Trebuchet MS",sans-serif; color:var(--ink); background:var(--paper); font-size:15px; }
* { box-sizing:border-box; }
body { margin:0; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
button:disabled { opacity:.5;cursor:not-allowed; }
button,a { touch-action:manipulation; }
button:focus-visible,a:focus-visible { outline:3px solid #69a4ed;outline-offset:3px; }
[hidden] { display:none !important; }
a { color:var(--blue); }
h1,h2,h3,p { margin-top:0; }
h1 { font-size:clamp(28px,3vw,40px);letter-spacing:-.025em;margin-bottom:10px; }
h2 { font-size:23px; }
h3 { font-size:17px; }
.muted,small { color:var(--muted); }
.loading { padding:60px; }
.eyebrow { color:var(--orange);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:bold; }
.shell { display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh; }
.sidebar { padding:30px 20px; background:linear-gradient(155deg,#123962,#11294a);color:white;display:flex;flex-direction:column;position:sticky;top:0;height:100vh; }
.brand { font-weight:900;font-size:30px;letter-spacing:.045em;color:var(--blue); }
.sidebar .brand { color:white; }
.brand-sub { font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:#b8d0e3;margin:5px 0 35px; }
.nav { display:grid;gap:7px; }
.nav button { display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;text-align:left;padding:13px 12px;background:transparent;border:0;border-radius:7px;color:#d5e1ee; }
.nav button.active { background:#fff;color:var(--navy);font-weight:bold; }
.nav button:hover:not(.active) { background:#ffffff12; }
.sidebar-foot { margin-top:auto;padding-top:24px; }
.sidebar-foot p { color:#aec6d6;font-size:12px;line-height:1.6; }
.user { display:grid;gap:4px;border-top:1px solid #ffffff26;padding-top:18px; }
.user small { color:#aec6d6; }
.user button { margin-top:10px; }
.main { min-width:0;padding:0 36px 35px; }
.topbar { display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:76px;border-bottom:1px solid var(--line);margin-bottom:32px;font-size:12px;color:var(--muted); }
.pilot { display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid #d9cdad;border-radius:5px;color:#896721;background:#fcf7e9;font-size:11px; }
.page-head { display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:24px; }
.page-head p { color:var(--muted);line-height:1.5;margin-bottom:0;max-width:750px; }
.actions { display:flex;gap:8px;flex-wrap:wrap;align-items:center; }
.button { display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;padding:11px 16px;min-height:42px;border:1px solid #bfcdd3;border-radius:6px;background:#fff;color:var(--ink);font-size:13px;font-weight:700; }
.button.primary { color:#fff;background:var(--blue);border-color:var(--blue); }
.button.teal { color:#fff;background:var(--teal);border-color:var(--teal); }
.button.quiet { background:transparent;color:inherit; }
.button.small { min-height:32px;padding:7px 10px;font-size:12px; }
.button.danger { color:#ac3838;border-color:#dfb8b8; }
.stats { display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:25px 0; }
.stat { padding:20px 22px;border:1px solid var(--line);background:linear-gradient(145deg,#fff,#f8faf9);border-radius:8px;border-top:3px solid var(--blue); }
.stat strong { display:block;font-size:30px;margin-bottom:6px; }
.stat span { font-size:12px;color:var(--muted); }
.panel { border:1px solid var(--line);background:#fff;border-radius:9px;min-width:0;overflow:hidden; }
.panel-head { padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px; }
.panel-head h2,.panel-head h3 { margin:0; }
.panel-body { padding:22px; }
.filters { display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap; }
.filters input { flex:1;min-width:180px; }
input,select,textarea { border:1px solid #bdcdd2;border-radius:6px;background:#fff;padding:11px 12px;color:var(--ink);min-width:0;max-width:100%; }
input:focus,select:focus,textarea:focus { outline:2px solid #c7daf6;border-color:#3474c7; }
input:disabled,select:disabled,textarea:disabled { color:#607078;background:#f4f6f6;opacity:1; }
input[type=checkbox] { width:18px;height:18px;accent-color:var(--blue); }
label { display:grid;gap:7px;font-size:12px;color:var(--muted);line-height:1.4; }
label input,label select,label textarea { width:100%;font-size:15px; }
.check { display:flex;align-items:center;gap:9px; }
.check input { width:18px; }
.form-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px; }
.form-grid .wide { grid-column:1/-1; }
.table-wrap { overflow:auto; }
table { border-collapse:collapse;width:100%;text-align:left; }
th { background:#eaf0f4;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#506778;font-weight:700; }
th,td { padding:16px 18px;border-bottom:1px solid #e4e9eb; }
td { font-size:14px;line-height:1.45; }
td strong { display:block; }
td small { display:block;margin-top:4px; }
tr:last-child td { border-bottom:0; }
.projects tr:hover td { background:#f6f9fb; }
.project-open { border:0;background:none;text-align:left;padding:0;color:var(--blue);font-weight:700;max-width:100%;overflow-wrap:anywhere; }
.badge { display:inline-block;padding:5px 9px;font-size:11px;border-radius:5px;white-space:nowrap;background:#edf1f4;color:#526776; }
.badge.review { background:#fff2de;color:#91640a; }
.badge.approved { background:#e2f1eb;color:#26714e; }
.badge.archived { background:#e9e9e9;color:#666; }
.empty { padding:50px 25px;text-align:center; }
.empty p { color:var(--muted);line-height:1.6; }
.detail-grid { display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;align-items:start; }
.position-tree { max-height:650px;overflow:auto; }
.tree-item { padding:15px;border-bottom:1px solid #e7ecee; }
.tree-title { color:var(--ink);font-size:13px;line-height:1.45;overflow-wrap:anywhere;margin-bottom:10px; }
.solution-link { width:100%;text-align:left;border:1px solid #d5dfe4;border-radius:6px;background:#f8fafb;color:var(--ink);padding:10px;margin:3px 0;font-size:13px; }
.solution-link.active { color:var(--blue);background:#edf3fd;border-color:#7299d0; }
.solution-link small { display:block;margin-top:5px; }
.point-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:12px;margin:20px 0; }
.point-card { padding:14px;border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:6px;background:#fafcfd; }
.point-card h3 { font-size:14px; }
.point-card label { margin-top:10px; }
.section-stack { display:grid;gap:20px; }
.inline-note { padding:13px 16px;border-left:3px solid var(--teal);background:#edf5f4;color:#45656b;font-size:13px;line-height:1.55;margin-bottom:20px; }
.conflict { border-color:#dc7e40;background:#fff0e2;color:#8b481f; }
.tabs { display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--line); }
.tabs button { border:0;background:none;padding:13px 16px;color:var(--muted);font-weight:bold; }
.tabs button.active { color:var(--blue);box-shadow:inset 0 -3px var(--blue); }
.savebar { display:flex;justify-content:space-between;align-items:center;gap:12px;background:#f0f5fa;padding:16px 20px;border-top:1px solid var(--line);position:sticky;bottom:0; }
.savebar span { font-size:12px;color:var(--muted); }
.login { display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh; }
.login-story { padding:clamp(40px,6vw,100px);color:white;background:radial-gradient(circle at 0 100%,#22636d 0,transparent 55%),linear-gradient(140deg,#133e7d,#112a48);display:flex;flex-direction:column;justify-content:center; }
.login-story .brand { color:white;margin-bottom:70px; }
.login-story h1 { font-size:clamp(34px,4vw,58px);max-width:620px;line-height:1.1; }
.login-story p { max-width:510px;color:#b6ccdf;line-height:1.8;font-size:17px; }
.login-story .eyebrow { color:#f6a174; }
.login-card { align-self:center;padding:60px;max-width:600px;width:100%; }
.login-card p { line-height:1.6;color:var(--muted); }
.login-users { display:grid;gap:12px;margin-top:25px; }
.login-users button { justify-content:space-between;padding:18px;text-align:left; }
.login-users small { display:block;margin-top:6px;font-weight:400; }
.new-project { max-width:800px; }
#notice { position:fixed;right:24px;bottom:24px;max-width:500px;padding:16px 22px;background:var(--navy);color:white;border-radius:8px;box-shadow:0 10px 35px #0a253533;z-index:50;line-height:1.5; }
#notice.error { background:#8f342e; }
.modules { display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px; }
.module { padding:25px; }
.module p { font-size:14px;line-height:1.6;color:var(--muted); }
.module .badge { margin-bottom:20px; }
.count { color:var(--teal);font-weight:bold; }
.task-toolbar { display:flex;align-items:start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px; }
.task-toolbar .filters { align-items:center;margin:0; }
.task-list { display:grid;gap:14px; }
.task-card { padding:22px;display:flex;justify-content:space-between;align-items:start;gap:20px; }
.task-card>div:first-child { min-width:0;flex:1; }
.task-card h3 { margin:12px 0;overflow-wrap:anywhere; }
.task-badges,.task-meta { display:flex;flex-wrap:wrap;gap:10px; }
.task-meta { font-size:13px;color:var(--muted); }
.task-description { white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6; }
.task-overdue { border-left:4px solid #b75330; }
.task-late { color:#94381e;background:#fff0e8; }
.report-controls { margin-bottom:20px; }
.list-pager { display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px;border-bottom:1px solid var(--line); }
.list-pager label { display:flex;align-items:center;gap:10px; }
.list-pager select { width:auto; }
.list-pager .actions { align-items:center;flex-wrap:wrap; }
.completion-note { display:block;margin-top:10px;color:#94381e;white-space:normal;overflow-wrap:anywhere; }
.report-toggles { display:flex;gap:20px;flex-wrap:wrap; }
.engineering-table { max-height:70vh;overflow:auto; }
.engineering-table table { min-width:1850px; }
.engineering-table th { position:sticky;top:0;z-index:1; }
.engineering-table td { vertical-align:top;min-width:120px; }
.engineering-table td:first-child { min-width:250px;max-width:330px; }
.report-project-name { white-space:normal;overflow-wrap:anywhere;margin-top:8px;line-height:1.45; }
.report-text { white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;min-width:170px;max-width:420px; }
.report-weekly,.report-history,.report-source,.account-form { margin-top:22px;margin-bottom:22px; }
.report-current { display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:18px 0; }
.report-history-entry { padding:15px 0;border-bottom:1px solid var(--line); }
.report-history-entry summary { cursor:pointer;line-height:1.6;font-weight:bold; }
.source-fields { display:grid;grid-template-columns:minmax(130px,1fr) minmax(0,3fr);gap:14px; }
.source-fields dt { color:var(--muted); }
.source-fields dd { margin:0;white-space:pre-wrap;overflow-wrap:anywhere; }
@media(max-width:650px) { .report-current,.source-fields { grid-template-columns:1fr; } .report-text { min-width:0;max-width:none; } }
.task-form,.task-history { margin-bottom:24px; }
.task-history { margin-top:24px; }
.task-history-row { padding:14px 0;border-bottom:1px solid var(--line); }
.task-history-row p { margin:8px 0;color:var(--muted); }
@media(max-width:800px) { .task-card { flex-direction:column; } .tabs { flex-wrap:wrap; } }
@media(min-width:900px) { .page { animation:appear .22s ease-out; } }
@keyframes appear { from { opacity:0;transform:translateY(5px); } to { opacity:1;transform:translateY(0); } }
@media(prefers-reduced-motion:reduce) { .page { animation:none; } }
@media(max-width:1100px) { .shell { grid-template-columns:200px minmax(0,1fr); } .main { padding:0 22px 25px; } .detail-grid { grid-template-columns:220px minmax(0,1fr); } }
@media(max-width:800px) { .shell { display:block; } .sidebar { position:static;height:auto;padding:18px; } .sidebar .brand { font-size:24px; } .brand-sub,.sidebar-foot p { display:none; } .nav { display:flex;flex-wrap:wrap;margin-top:16px; } .nav button { width:auto;padding:9px; } .sidebar-foot { padding:10px 0 0; } .user { display:flex;align-items:center;gap:10px;padding-top:10px; } .user button { margin:0 0 0 auto; } .main { padding:0 15px 25px; } .topbar { margin-bottom:24px;min-height:60px; } .page-head { flex-direction:column; } .detail-grid { grid-template-columns:1fr; } .position-tree { max-height:230px; } .login { grid-template-columns:1fr; } .login-story { padding:30px; } .login-story .brand { margin-bottom:20px; } .login-story h1 { font-size:34px; } .login-card { padding:30px; } }
@media(max-width:480px) { .stats { gap:8px; } .stat { padding:14px 10px; } .stat strong { font-size:24px; } .form-grid { grid-template-columns:1fr; } .topbar { flex-wrap:wrap;padding:12px 0; } .panel-body { padding:15px; } .savebar { flex-wrap:wrap; } }
/* CRM catalogs and column filters keep the LEETS palette and readable controls. */
.catalog-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.catalog-add{display:grid;grid-template-columns:2fr 2fr auto;gap:16px;align-items:end}.product-group-picker{border:1px solid #c9d1d8;border-radius:8px;padding:16px;max-height:300px;overflow:auto}.product-group-picker .check{margin:8px 0}.column-filters input{width:100%;min-width:150px;font-size:14px;background:#fff;color:#152e37}.engineering-table{max-height:65vh}.engineering-table thead{position:sticky;top:0;z-index:2;background:#e8eef2}.engineering-table td{min-width:150px;max-width:320px;white-space:normal;overflow-wrap:anywhere}.nomenclature-group th{background:#e8eef2;color:#152e37}.catalog-add label{display:grid;gap:6px}@media(max-width:800px){.catalog-add{grid-template-columns:1fr}.engineering-table{max-height:70vh}}
.budget-lines { max-height: 60vh; overflow: auto; }
.budget-lines input:not([type=checkbox]) { min-width: 110px; }
#budget-form .actions { flex-wrap: wrap; margin-top: 18px; }
#budget-form + p { margin-top: 12px; }
.main:has(.report-compact) .topbar { min-height:48px;margin-bottom:16px; }
.report-compact .page-head { margin:0 0 12px;align-items:center; }
.report-compact h1 { font-size:28px;margin:0; }
.report-toolbar { display:flex;align-items:center;flex-wrap:wrap;gap:10px; }
.report-toolbar>input { width:240px; }
.report-toolbar>select { width:210px; }
.report-toolbar input,.report-toolbar select { padding:8px; }
.report-toolbar .check { margin:0;font-size:13px; }
.report-hint { margin:10px 0;font-size:13px; }
.report-summary { display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:4px 12px;gap:8px; }
.report-summary h3 { font-size:14px;margin:0; }
.report-summary .list-pager { padding:6px;border:0; }
.report-compact .engineering-table td:first-child { min-width:160px; }
.report-compact .engineering-table th { padding:0; }
.report-compact .engineering-table th button { padding:12px;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;width:100%;min-width:130px; }
.report-compact .engineering-table th button.filtered { background:#fff0b3; }
.column-menu { position:fixed;inset:auto;margin:0;padding:18px;width:350px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 40px #0003; }
.column-menu::backdrop { background:#0001; }
.column-menu h3 { margin:0 0 12px; }
.column-menu label { display:grid;gap:6px;margin:12px 0; }
.column-menu .actions { flex-wrap:wrap;gap:6px; }
/* Project supply and cost editors stay independent of BLOWER styling. */
.manual-editor{width:min(900px,94vw);max-height:90vh;border:1px solid var(--line,#ccd6d8);border-radius:12px;padding:24px;overflow:auto}
.manual-editor::backdrop{background:#142f3b66}
.manual-editor h2{margin:0}.manual-editor fieldset{border:1px solid #d4dcdf;border-radius:8px;margin:16px 0;padding:16px}
.manual-editor .savebar{position:sticky;bottom:-24px;background:#fff;padding:16px 0;margin-top:16px}
.manual-editor input,.manual-editor select{width:100%;min-height:40px}.manual-editor label{display:grid;gap:6px}
.budget-defaults{border:1px solid #d4dcdf;border-radius:8px;padding:16px;margin:16px 0}
.budget-defaults summary,.line-rules summary{cursor:pointer;font-weight:600}
.budget-defaults>.form-grid{margin-top:16px}
.budget-rules{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin:12px 0;gap:12px}
.budget-rules [hidden],.line-rules [hidden]{display:none!important}
.budget-lines td:first-child{min-width:300px;max-width:480px;white-space:normal}
.budget-lines input{min-width:95px;max-width:160px}
.budget-lines .line-rules input{max-width:none}
.line-rules{margin-top:10px;font-size:13px}
.line-rules[open]{min-width:350px;padding:12px;background:#f3f6f7}
.line-rules .check{margin:12px 0}
.budget-line-editor .line-rules[open]{min-width:0;padding:16px;border-radius:8px}
.budget-line-editor input:not([type="checkbox"]),.budget-line-editor select{width:100%;max-width:none}
.budget-lines .check input[type="checkbox"],.budget-line-editor input[type="checkbox"]{width:18px;min-width:18px;max-width:18px;height:18px}
.budget-line-editor .line-rules summary[hidden]{display:none}
.budget-line-editor .budget-rules{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.manual-editor label.check{display:flex;align-items:center;gap:8px}
.budget-line-editor>button{position:sticky;bottom:0;margin-top:12px}
