/* ENEFIS template palette; see design-system/enefis-project-office/MASTER.md. */
:root{color-scheme:light;--brand-purple:#2b0057;--brand-violet:#5956b9;--brand-green:#71e889;--ink:#222136;--ink2:#2b0057;--paper:#f6f7fb;--card:#fff;--line:#dfe2ed;--muted:#616477;--lime:var(--brand-green);--rust:#a5323e;--rustbg:#fff0f0;--blue:#eef1ff;--success:#186235;--success-bg:#edf9f0;--warning:#805313;--warning-bg:#fff6e5;--shadow:0 8px 28px rgb(43 0 87 / 7%);--radius:8px;font-family:"Barlow","Aptos","Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button,[role=button]{cursor:pointer;touch-action:manipulation}button:disabled{opacity:.48;cursor:not-allowed}a{color:var(--brand-purple);text-underline-offset:3px}:focus-visible{outline:3px solid var(--brand-violet);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3,.serif{font-family:inherit;letter-spacing:-.025em;font-weight:700}h1{font-size:clamp(1.75rem,2.6vw,2.5rem);line-height:1.2;margin-bottom:10px;color:var(--brand-purple)}h2{font-size:1.65rem;line-height:1.3;margin-bottom:12px;color:var(--brand-purple)}h3{font-size:1.12rem;line-height:1.4;margin-bottom:12px}small{font-size:.8rem;color:var(--muted)}.icon-svg{width:20px;height:20px;flex:none;vertical-align:middle}.eyebrow{font-size:.75rem;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--brand-violet);margin-bottom:8px}.muted,.subtle{color:var(--muted)}.subtle{font-size:.875rem;line-height:1.6}.mono{font-family:ui-monospace,"SFMono-Regular",Consolas,monospace;font-size:.78rem;letter-spacing:-.01em}.money{font-variant-numeric:tabular-nums}.mini{font-size:.8rem}.lime{color:var(--brand-green)}.pale-text{color:#e0def4}.top-gap{margin-top:16px}.full-height{min-height:100vh}.field[hidden],[hidden]{display:none!important}.skip-link{position:fixed;left:16px;top:-80px;z-index:50;background:white;padding:12px 16px;border:2px solid var(--brand-purple);border-radius:4px}.skip-link:focus{top:12px}
.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--brand-purple);color:white;padding:32px 16px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:0 16px 28px;border-bottom:1px solid #ffffff26}.brand-logo{display:block;width:166px;height:auto;aspect-ratio:768/272;object-fit:contain}.brand-sub{color:#e0def4;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin-top:14px}.nav-caption{color:#cdc7e0;padding:24px 16px 10px;font-size:.7rem;font-weight:700;letter-spacing:.12em}.nav{display:flex;flex-direction:column;gap:8px}.nav button{display:flex;align-items:center;gap:12px;min-height:48px;width:100%;border:1px solid transparent;border-radius:6px;padding:11px 14px;background:transparent;color:#e0def4;text-align:left;font-size:.875rem;font-weight:600;transition:background .18s,color .18s}.nav button:hover{background:#ffffff16;color:white}.nav button.active{background:var(--brand-violet);color:white;border-color:#817dcb;box-shadow:inset 3px 0 var(--brand-green)}.nav button:focus-visible,.menu-toggle:focus-visible{outline-color:var(--brand-green)}.sidebar-spacer{flex:1}.side-foot{border-top:1px solid #ffffff26;padding:20px 12px 0;font-size:.75rem;line-height:1.65;color:#e0def4}.side-foot strong{display:flex;align-items:center;gap:8px;font-weight:600;color:white;margin-bottom:8px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--brand-green);flex:none}.menu-toggle{display:none}.main{min-width:0;padding:0 36px 56px}.topbar{display:flex;min-height:80px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.context{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.8rem}.context strong{color:var(--brand-purple);font-weight:700}.context-divider{height:16px;width:1px;background:var(--line)}.top-actions{display:flex;align-items:center;gap:12px;min-width:0}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:var(--brand-purple);font-size:.85rem;font-weight:700;flex:none}.user-detail{text-align:right}.user-name{display:block;font-size:.85rem;font-weight:700}.user-roles{display:block;font-size:.7rem;color:var(--muted)}.sim-tag{display:inline-flex;align-items:center;gap:6px;color:var(--brand-purple);background:var(--blue);border:1px solid #d4d7f2;padding:5px 9px;border-radius:4px;font-size:.7rem;font-weight:700;letter-spacing:.04em}.page{max-width:1460px;margin:0 auto}.hero{padding:36px 0 28px;display:flex;justify-content:space-between;align-items:center;gap:24px}.hero p{color:var(--muted);max-width:670px;font-size:.9rem;line-height:1.65;margin:0}.hero-actions,.inline-actions{display:flex;gap:8px;flex-wrap:wrap}.hero-actions{flex:none;max-width:360px;justify-content:flex-end}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:1px solid var(--brand-purple);border-radius:5px;padding:10px 16px;background:var(--brand-purple);color:white;font-size:.875rem;font-weight:600;text-decoration:none;line-height:1.3;transition:background .18s,border-color .18s,color .18s}.btn:hover{background:var(--brand-violet);border-color:var(--brand-violet)}.btn:active{filter:brightness(.94)}.btn.alt{color:var(--brand-purple);background:white;border-color:#c8c9db}.btn.alt:hover{background:var(--blue);border-color:var(--brand-violet)}.btn.pale{background:var(--brand-green);color:var(--brand-purple);border-color:#5bc673}.btn.pale:hover{background:#5ed778;border-color:#4bad61}.btn.danger{background:var(--rust);border-color:var(--rust)}.btn.danger:hover{background:#872332}.btn.small{padding:8px 12px;font-size:.8rem}.btn.text{color:var(--brand-purple);border-color:transparent;background:transparent;padding:8px 10px}.btn.text:hover{background:var(--blue)}.grid{display:grid;gap:20px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:24px;background:white;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.kpi{padding:24px;border-right:1px solid var(--line);min-width:0}.kpi:last-child{border-right:0}.kpi-label{font-size:.75rem;letter-spacing:.05em;font-weight:700;color:var(--muted);text-transform:uppercase}.kpi-number{color:var(--brand-purple);font-size:clamp(1.7rem,2.3vw,2.25rem);font-weight:700;letter-spacing:-.04em;line-height:1.15;margin:18px 0 8px;overflow-wrap:anywhere}.kpi-foot{font-size:.8rem;color:var(--muted)}.kpi:nth-child(2) .kpi-number{color:var(--brand-violet)}.card{min-width:0;padding:24px;background:white;border:1px solid var(--line);border-radius:var(--radius)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.card-head h3{margin-bottom:0}.card-head .eyebrow{margin-bottom:4px}.split{grid-template-columns:minmax(0,1.6fr) minmax(320px,1fr)}.workspace-strip{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:var(--blue);border:1px solid #d4d7f2;border-left:3px solid var(--brand-violet);border-radius:5px;margin-bottom:24px}.workspace-stats{display:flex;flex-wrap:wrap;gap:8px 24px;color:var(--muted);font-size:.8rem}.workspace-stats strong{color:var(--brand-purple);font-size:.95rem;margin-right:5px}.project-list{display:grid;gap:12px}.project-row{width:100%;border:1px solid var(--line);border-radius:6px;background:white;padding:18px 16px;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:16px;color:var(--ink);text-align:left;transition:background .18s,border-color .18s}.project-row:hover{border-color:var(--brand-violet);background:#fafaff}.project-icon{width:44px;height:44px;display:grid;place-items:center;background:var(--blue);color:var(--brand-violet);border-radius:5px}.project-title{font-size:.95rem;font-weight:700;line-height:1.4}.project-sub{color:var(--muted);margin-top:6px;font-size:.75rem;overflow-wrap:anywhere}.project-meta{display:flex;flex-wrap:wrap;gap:8px 16px;color:var(--muted);font-size:.75rem;margin-top:10px}.project-right{text-align:right}.project-right strong{font-size:.9rem;color:var(--brand-purple);white-space:nowrap}.project-right small{display:block;margin-top:5px}.pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:4px;background:var(--success-bg);font-size:.75rem;font-weight:600;line-height:1.3;color:var(--success);white-space:nowrap}.pill.pending{background:var(--warning-bg);color:var(--warning)}.pill.draft{color:#51566b;background:#eef0f5}.pill.reject{color:var(--rust);background:var(--rustbg)}.pill.blue{color:#3c398e;background:var(--blue)}
.table-wrap{overflow-x:auto;scrollbar-width:thin}table{width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.5}th{text-align:left;font-size:.75rem;letter-spacing:.045em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:12px;border-bottom:1px solid #cfd2e0;background:#f8f9fc;white-space:nowrap}td{border-bottom:1px solid #e8eaf2;padding:16px 12px;vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr[role=button]:hover{background:var(--blue)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}td.actions{text-align:right}.actions .inline-actions{justify-content:flex-end}td strong{font-weight:600}.empty{padding:32px 20px;text-align:center;color:var(--muted);border-radius:5px;background:#f8f9fc;font-size:.875rem}.activity{display:grid}.activity-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.activity-item:last-child{border-bottom:0;padding-bottom:0}.activity-dot{width:8px;height:8px;margin-top:7px;background:var(--brand-violet);border-radius:50%;flex:none}.activity-body{font-size:.85rem;line-height:1.5;min-width:0;overflow-wrap:anywhere}.activity-body small{display:block;margin-top:5px}.tabs{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:4px 0 24px}.tabs button{background:transparent;border:0;border-bottom:3px solid transparent;min-height:48px;padding:12px 14px;color:var(--muted);font-size:.875rem;font-weight:600}.tabs button:hover{color:var(--brand-purple);background:var(--blue)}.tabs button.active{border-color:var(--brand-violet);color:var(--brand-purple)}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.summary-list{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:12px 24px;font-size:.875rem}.summary-list dt{color:var(--muted)}.summary-list dd{margin:0;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.summary-list .total{padding-top:14px;border-top:1px solid var(--line);color:var(--brand-purple);font-size:1rem}.section-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:28px 0 16px}.section-title h3{margin:0}.banner{display:flex;align-items:center;gap:10px;padding:14px 16px;border-radius:5px;color:var(--success);background:var(--success-bg);border:1px solid #c5e1ce;font-size:.85rem;line-height:1.6;margin:0 0 20px}.banner.warn{background:var(--warning-bg);color:var(--warning);border-color:#ebd5ad}.separator{height:1px;background:var(--line);margin:20px 0}.search-field{display:flex;align-items:center;gap:16px;padding:0 0 20px;font-size:.8rem;color:var(--muted)}.search-field input{min-height:44px;max-width:440px;width:100%;padding:10px 12px;border:1px solid #b9bed0;border-radius:5px;background:white;color:var(--ink);font-size:1rem}
.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:white}.login-left{padding:56px 6vw;background:var(--brand-purple);color:white;display:flex;flex-direction:column;justify-content:space-between;gap:48px;border-right:8px solid var(--brand-green)}.login-left .brand-logo{width:210px}.login-left h1{color:white;font-size:clamp(2.4rem,4vw,4rem);font-weight:650;max-width:680px;line-height:1.15}.login-left p{max-width:460px;color:#e0def4;line-height:1.7}.login-eyebrow{color:var(--brand-green);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:20px}.login-rule{width:64px;height:4px;background:var(--brand-green);margin-bottom:32px}.login-left small{color:#e0def4}.login-right{padding:48px 6vw;display:flex;align-items:center;justify-content:center;background:white}.login-box{width:100%;max-width:440px}.login-box h2{font-size:2rem;margin:12px 0 16px}.login-box p{color:var(--muted);font-size:.95rem;line-height:1.7}.user-option{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;border:1px solid var(--line);background:white;color:var(--ink);padding:12px 16px;text-align:left;border-radius:5px;margin:8px 0;transition:background .18s,border-color .18s}.user-option:hover{border-color:var(--brand-violet);background:var(--blue)}.user-option strong{display:block;font-size:.9rem;font-weight:600}.user-option small{display:block;margin-top:4px}.user-option .icon-svg{color:var(--brand-violet)}.demo-label{margin:24px 0 12px}.login-note{margin-top:24px;border-top:1px solid var(--line);padding-top:20px;color:var(--muted);font-size:.8rem;line-height:1.7}
 dialog{border:1px solid var(--line);border-radius:10px;box-shadow:0 24px 80px rgb(43 0 87 / 20%);padding:0;width:calc(100% - 32px);max-width:640px;max-height:90dvh;color:var(--ink);background:white}dialog.wide{max-width:900px}dialog::backdrop{background:rgb(27 10 46 / 62%)}#modal-body{padding:28px;overflow:auto;max-height:90dvh}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:16px;margin-bottom:20px}.modal-head h2{margin:0;font-size:1.5rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}.field{min-width:0;display:flex;flex-direction:column;gap:8px}.field.full{grid-column:1/-1}.field label{font-weight:600;font-size:.875rem}.field input,.field select,.field textarea,.boq-row input,.boq-row select{width:100%;min-width:0;min-height:44px;border:1px solid #b9bed0;border-radius:5px;background:white;color:var(--ink);padding:10px 12px;font-size:1rem}.field textarea{min-height:96px;resize:vertical}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,.search-field input:focus-visible,.boq-row input:focus-visible,.boq-row select:focus-visible{outline-offset:2px;border-color:var(--brand-violet)}.field input[readonly]{background:var(--blue);border-color:#d4d7f2;color:var(--brand-purple);font-weight:600}.field input[type=file]{font-size:.875rem;padding:8px}input::file-selector-button{border:0;border-radius:3px;padding:7px 10px;background:var(--blue);color:var(--brand-purple);margin-right:10px;font:inherit;cursor:pointer}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}.form-error{color:var(--rust);background:var(--rustbg);border:1px solid #e8c4c9;padding:12px 16px;border-radius:5px;margin:0 0 20px;font-size:.875rem}.item-editor{border-top:1px solid var(--line);padding-top:24px}.item-editor h3{margin-bottom:8px;color:var(--brand-purple)}.boq-row{display:grid;grid-template-columns:2fr 1.4fr .8fr 1.3fr auto;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--line);align-items:end}.boq-row label{display:grid;gap:8px;min-width:0;font-size:.8rem;color:var(--muted)}#boq-total{padding:16px;background:var(--blue);color:var(--brand-purple);font-size:1rem;font-weight:700;border-left:3px solid var(--brand-violet);margin:16px 0 0}#toast{position:fixed;right:20px;bottom:20px;z-index:50;background:var(--brand-purple);color:white;padding:14px 20px;border-radius:6px;max-width:min(430px,calc(100vw - 32px));box-shadow:var(--shadow);font-size:.875rem;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s,transform .2s}#toast.show{opacity:1;transform:translateY(0)}#toast.error{background:var(--rust)}.startup{min-height:100vh;display:grid;align-content:center;justify-items:center;gap:16px;color:var(--brand-purple)}.loading-dot{width:24px;height:24px;border:2px solid var(--line);border-top-color:var(--brand-violet);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1180px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.brand-logo{width:152px}.main{padding-inline:24px}.context span:last-child{display:none}.split{grid-template-columns:1fr}.kpi{padding:20px}}
@media(max-width:950px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi:nth-child(2){border-right:0}.kpi:nth-child(-n+2){border-bottom:1px solid var(--line)}.two-col{grid-template-columns:1fr}.context{display:none}.topbar{justify-content:flex-end}.hero{align-items:start}.hero-actions{max-width:230px}}
@media(max-width:760px){.app-shell{display:block}.sidebar{height:auto;position:static;padding:16px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:0 16px}.brand{padding:0;border:0}.brand-logo{width:128px}.brand-sub,.nav-caption,.sidebar-spacer,.side-foot{display:none}.menu-toggle{display:flex;align-items:center;gap:8px;min-height:44px;border:1px solid #aaa1c7;border-radius:5px;padding:8px 12px;color:white;background:transparent;font-size:.85rem}.nav{display:none;grid-column:1/-1;padding-top:16px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.sidebar.menu-open .nav{display:grid}.nav button{padding:12px;gap:8px;font-size:.85rem}.main{padding:0 16px max(32px,env(safe-area-inset-bottom))}.topbar{min-height:68px;justify-content:space-between}.top-actions{gap:8px;width:100%;justify-content:space-between}.user-name{font-size:.8rem}.user-roles{font-size:.65rem;max-width:135px}.avatar{display:none}.hero{display:block;padding:28px 0 24px}.hero-actions{justify-content:flex-start;max-width:none;margin-top:20px}.hero p{font-size:.875rem}.card{padding:20px 16px}.card-head{gap:8px}.kpi{padding:20px 16px}.kpi-label{font-size:.7rem}.kpi-number{font-size:1.7rem;margin-top:14px}.kpi-foot{font-size:.75rem}.workspace-strip{display:block;padding:16px}.workspace-strip .btn{margin-top:12px}.workspace-stats{gap:8px 16px}.project-row{grid-template-columns:40px minmax(0,1fr);gap:12px;padding:16px 12px}.project-icon{width:40px;height:40px}.project-right{grid-column:2;text-align:left}.project-title{font-size:.9rem}.project-meta{margin-top:8px}.search-field{display:block}.search-field span{display:block;margin-bottom:8px}.tabs{gap:4px}.tabs button{padding:12px;font-size:.8rem}.section-title{align-items:start;flex-wrap:wrap}.summary-list{gap:12px 16px}.summary-list dd{overflow-wrap:anywhere}.login-wrap{display:block}.login-left{padding:32px 24px;border-right:0;border-bottom:6px solid var(--brand-green);gap:32px}.login-left .brand-logo{width:152px}.login-left h1{font-size:2rem}.login-left p{margin-bottom:0;font-size:.875rem}.login-left>small{display:none}.login-rule{margin-bottom:20px}.login-right{padding:32px 24px}.login-box h2{font-size:1.6rem}#modal-body{padding:24px 20px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:1}.boq-row{grid-template-columns:repeat(2,minmax(0,1fr))}.boq-row label:first-child{grid-column:1/-1}.boq-row .btn{justify-self:start}#boq-total{font-size:.9rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.project-sub{display:block}.role-list{grid-template-columns:150px minmax(0,1fr)}.role-list dd{text-align:left;font-weight:400}.role-list dt{font-weight:600;color:var(--brand-purple)}@media(max-width:760px){.role-list{grid-template-columns:1fr;gap:8px}.role-list dd{margin-bottom:16px}}
.user-detail{min-width:0;overflow-wrap:anywhere}.nav button span{min-width:0;overflow-wrap:anywhere}.kpi-label{overflow-wrap:anywhere}@media(max-width:760px){.user-detail{flex:1}.sim-tag{flex:none}.top-actions>.btn{flex:none}.hero-actions .btn{max-width:100%}.project-right strong{white-space:normal}}
