:root{--primary:#1f4e79;--primary-deep:#143553;--primary-soft:#2563eb;--accent:#fbbf24;--accent-deep:#92400e;--bg:#eef2f7;--paper:#fff;--paper-2:#f9fafb;--paper-3:#f1f5f9;--border:#e2e8f0;--border-strong:#cbd5e1;--text:#1f2937;--text-soft:#6b7280;--text-mute:#94a3b8;--navy:#0f172a;--navy-2:#1e293b;--navy-3:#334155;--red:#ef4444;--red-bg:#fef2f2;--amber:#f59e0b;--amber-bg:#fffbeb;--green:#22c55e;--green-bg:#f0fdf4;--blue:#3b82f6;--blue-bg:#eff6ff;--r-card:10px;--r-tile:6px;--r-pill:999px;--shadow:0 2px 16px #0f172a0d;--shadow-pop:0 12px 40px #0f172a2e;--ease:cubic-bezier(.2,.6,.2,1);--dur-fast:.12s;--dur:.15s;--dur-slow:.24s;--sidebar-w:248px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", system-ui, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}.login-stage{background:var(--bg);grid-template-columns:minmax(0,5fr) minmax(0,7fr);min-height:100vh;display:grid}.login-side{background:linear-gradient(#0f172ab8 0%,#0f172aeb 100%),url("/photos/hardware oplossing.jpg") 50%/cover no-repeat;background-color:var(--navy);color:#fff;flex-direction:column;justify-content:space-between;min-height:100vh;padding:56px;display:flex;position:relative;overflow:hidden}.login-side:before{content:"";pointer-events:none;background:radial-gradient(800px 500px at 30% 20%,#ffffff0d 0%,#0000 60%);position:absolute;inset:0}.login-side>*{z-index:1;position:relative}.login-side-brand{align-items:center;gap:12px;display:flex}.login-side-brand .mark{background:var(--accent);width:32px;height:32px;color:var(--navy);font:700 14px/1 var(--font-sans);letter-spacing:-.5px;border-radius:6px;place-items:center;display:grid}.login-side-brand .name{font:700 14px/1 var(--font-sans);letter-spacing:2px;color:#fff}.login-side-foot h2{font:600 28px/1.2 var(--font-sans);letter-spacing:-.4px;color:#fff;max-width:18ch;margin:0 0 12px}.login-side-foot p{font:400 14px/1.65 var(--font-sans);color:#ffffffa6;max-width:38ch;margin:0}.login-main{place-items:center;padding:56px 32px;display:grid}.login-card{background:var(--paper);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:12px;padding:40px 36px 32px}@media (max-width:880px){.login-stage{grid-template-columns:1fr}.login-side{flex-direction:row;justify-content:space-between;align-items:center;min-height:auto;padding:24px 28px}.login-side-foot h2{margin:0;font-size:16px}.login-side-foot p{display:none}.login-main{padding:24px}}.login-brand{align-items:center;gap:10px;margin-bottom:28px;display:flex}.login-brand .mark{background:var(--navy);color:#fff;width:28px;height:28px;font:700 13px/1 var(--font-sans);letter-spacing:-.5px;border-radius:5px;place-items:center;display:grid}.login-brand .name{font:700 14px/1 var(--font-sans);letter-spacing:1px;color:var(--navy)}.login-card h1{font:700 22px/1.2 var(--font-sans);color:var(--primary);letter-spacing:-.4px;margin-bottom:4px}.login-card .lead{color:var(--text-soft);margin-bottom:24px;font-size:13px}.field{margin-bottom:14px}.field label{font:600 11px/1 var(--font-sans);color:var(--text-soft);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;display:block}.field input{width:100%;font:400 14px/1.2 var(--font-sans);color:var(--text);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:10px 12px}.field input:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.btn{font:600 13px/1 var(--font-sans);border-radius:var(--r-tile);cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 16px;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:#194366}.btn-primary:active{background:var(--primary-deep)}.btn-secondary{background:var(--paper);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{border-color:var(--text-soft)}.btn-block{width:100%;padding:11px 16px}.btn-accent{background:var(--accent);color:var(--navy);font-weight:700}.btn-accent:hover{background:#f59e0b}.btn-accent:active{background:#d97706}.login-card .help{color:var(--text-soft);text-align:center;margin-top:16px;font-size:12px}.login-card .help a{color:var(--primary-soft);transition:border-color var(--dur) var(--ease);border-bottom:1px solid #0000}.login-card .help a:hover{border-bottom-color:var(--accent)}.login-foot{font:500 11px/1 var(--font-mono);color:var(--text-mute);text-align:center;letter-spacing:1px;margin-top:18px}.shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--navy);color:#fff;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.sidebar .brand{border-bottom:1px solid #ffffff0f;align-items:center;padding:22px;display:flex}.sidebar .brand .brand-logo{width:auto;height:22px;display:block}.sidebar-staff{background:#fbbf240f;border-bottom:1px solid #ffffff0f;padding:12px 22px}.sidebar-back-admin{font:600 11px/1.2 var(--font-sans);color:var(--accent);letter-spacing:.3px;cursor:pointer;transition:border-color var(--dur) var(--ease);border-bottom:1px solid #0000;padding:2px 0;display:inline-block}.sidebar-back-admin:hover{border-bottom-color:var(--accent)}.sidebar-staff-client{font:500 10px/1 var(--font-mono);color:#ffffff73;letter-spacing:1.2px;text-transform:uppercase;margin-top:6px}.sidebar nav{flex:1;padding:14px 0;position:relative}.sidebar nav.with-rail a,.sidebar nav.with-rail a.on{border-left-color:#0000}.sidebar nav .rail{background:var(--accent);opacity:0;pointer-events:none;width:3px;height:0;transition:top .36s cubic-bezier(.6,.05,.2,1),height .36s cubic-bezier(.6,.05,.2,1),opacity .2s;position:absolute;top:0;left:0}.sidebar nav.ready .rail{opacity:1}.sidebar nav a{font:500 13px/1 var(--font-sans);color:#ffffffb8;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);cursor:pointer;-webkit-user-select:none;user-select:none;border-left:3px solid #0000;align-items:center;gap:10px;padding:10px 22px;display:flex}.sidebar nav a:hover{background:var(--navy-2);color:#fff}.sidebar nav a.on{background:var(--navy-2);color:var(--accent);border-left-color:var(--accent)}.sidebar nav a .badge{background:var(--accent);color:var(--navy);font:700 10px/1 var(--font-sans);border-radius:3px;margin-left:auto;padding:3px 6px}.sidebar .me{border-top:1px solid #ffffff0f;align-items:center;gap:10px;padding:14px 22px;display:flex}.sidebar .me .av{background:var(--navy-3);color:#fff;width:30px;height:30px;font:700 11px/1 var(--font-sans);border-radius:50%;place-items:center;display:grid}.sidebar .me .nm{font:600 12px/1.2 var(--font-sans);color:#fff}.sidebar .me .role{font:500 10px/1.2 var(--font-mono);color:#ffffff80;margin-top:2px}.sidebar .me .out{color:#ffffff80;font:500 11px/1 var(--font-sans);cursor:pointer;transition:color var(--dur) var(--ease);margin-left:auto}.sidebar .me .out:hover{color:#fff}.shell>main{width:100%;max-width:880px;margin:0 auto;padding:48px 56px 64px}@media (max-width:1100px){.shell>main{padding:36px}}@media (max-width:720px){.shell>main{padding:24px}.shell{grid-template-columns:1fr}.sidebar{display:none}}.page-head{border-bottom:2px solid var(--primary);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;padding-bottom:22px;display:flex}.page-head .pn{font:500 11px/1 var(--font-mono);color:var(--text-soft);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:8px}.page-head h1{font:700 28px/1.15 var(--font-sans);letter-spacing:-.3px;color:var(--primary)}.page-head .sub{font:400 13px/1.4 var(--font-sans);color:var(--text-soft);margin-top:6px}.admin-tag{vertical-align:middle;font:600 11px/1 var(--font-mono);letter-spacing:1px;text-transform:uppercase;color:#1d4ed8;background:var(--blue-bg);border-radius:var(--r-pill);margin-left:12px;padding:4px 10px;display:inline-block;transform:translateY(-4px)}.head-edit-btn{vertical-align:middle;border:1px solid var(--border-strong);border-radius:var(--r-tile);width:28px;height:28px;color:var(--text-soft);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;justify-content:center;align-items:center;margin-left:12px;padding:0;display:inline-flex;transform:translateY(-3px)}.head-edit-btn:hover{background:var(--paper-2);color:var(--primary);border-color:var(--primary-soft)}.page-head-edit-fields{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.ph-edit-name{font:700 28px/1.15 var(--font-sans);letter-spacing:-.3px;color:var(--primary);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);width:100%;padding:8px 12px}.ph-edit-name:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.ph-edit-summary{font:400 13px/1.4 var(--font-sans);color:var(--text);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);resize:vertical;width:100%;min-height:56px;padding:9px 12px}.ph-edit-summary:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.ph-edit-error{font:500 12px/1.3 var(--font-sans);color:#b91c1c;background:var(--red-bg);border-left:3px solid var(--red);border-radius:4px;padding:8px 10px}.ph-edit-actions{gap:8px;margin-top:4px;display:flex}.stat{border-radius:var(--r-pill);font:600 11px/1 var(--font-sans);white-space:nowrap;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.stat.live{background:var(--green-bg);color:#15803d}.stat.live .dot{background:#15803d;border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #22c55e2e}.stat.todo{background:var(--amber-bg);color:var(--accent-deep)}.stat.signed{background:var(--green-bg);color:#15803d}.stat.draft{background:var(--paper-3);color:var(--text-soft)}.stat.final{background:var(--blue-bg);color:#1d4ed8}.action{background:var(--amber-bg);border-radius:var(--r-card);border:1px solid #fde68a;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;margin-bottom:32px;padding:18px 22px;display:flex}.action .txt h3{font:600 14px/1.3 var(--font-sans);color:var(--accent-deep);margin:0 0 3px}.action .txt p{font:400 13px/1.45 var(--font-sans);color:var(--text);margin:0}.sec{margin-bottom:36px}.sec h2{font:600 11px/1 var(--font-sans);color:var(--text-soft);text-transform:uppercase;letter-spacing:1.5px;margin:0 0 14px}.docs{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.docs .doc{border-top:1px solid var(--border);cursor:pointer;transition:background var(--dur) var(--ease);grid-template-columns:36px 1fr auto auto;align-items:center;gap:16px;padding:16px 20px;display:grid}.docs .doc:first-child{border-top:0}.docs .doc:hover{background:var(--paper-2)}.docs .doc .ico{width:36px;height:44px;font:700 9px/1 var(--font-mono);letter-spacing:.5px;border-radius:4px;place-items:center;display:grid;position:relative}.docs .doc .ico:before{content:"";clip-path:polygon(0 0,100% 100%,100% 0);background:#00000014;width:9px;height:9px;position:absolute;top:0;right:0}.docs .doc .ico.html{background:var(--blue-bg);color:#1d4ed8}.docs .doc .ico.pdf{background:var(--red-bg);color:#b91c1c}.docs .doc .ico.xls{background:var(--green-bg);color:#15803d}.docs .doc .ico.dwg{color:#6b21a8;background:#f3e8ff}.docs .doc .nm{font:600 13px/1.3 var(--font-sans);color:var(--text)}.docs .doc .meta{font:500 11px/1.3 var(--font-mono);color:var(--text-soft);letter-spacing:.2px;margin-top:4px}.docs .doc .ar{color:var(--text-mute);transition:transform var(--dur) var(--ease), color var(--dur) var(--ease);font-size:14px}.docs .doc:hover .ar{color:var(--primary);transform:translate(2px)}.filter-row{gap:8px;margin-bottom:14px;display:flex}.filter-row .chip{font:500 12px/1 var(--font-sans);color:var(--text-soft);border-radius:var(--r-pill);border:1px solid var(--border);cursor:pointer;transition:all var(--dur) var(--ease);background:0 0;padding:6px 12px}.filter-row .chip:hover{border-color:var(--border-strong);color:var(--text)}.filter-row .chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}.contact{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);align-items:center;gap:14px;padding:18px 20px;display:flex}.contact .av{background:var(--primary);color:#fff;width:40px;height:40px;font:700 13px/1 var(--font-sans);border-radius:50%;place-items:center;display:grid}.contact .nm{font:600 14px/1.2 var(--font-sans);color:var(--text)}.contact .role{font:500 11px/1.2 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;text-transform:uppercase;margin-top:3px}.contact .lk{flex-wrap:wrap;gap:18px;margin-left:auto;display:flex}.contact .lk a{font:500 12px/1 var(--font-mono);color:var(--primary);letter-spacing:.2px;transition:border-color var(--dur) var(--ease);border-bottom:1px solid #0000;padding:2px 0}.contact .lk a:hover{border-bottom-color:var(--accent)}.thread{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.thread .msg{border-top:1px solid var(--border);grid-template-columns:32px 1fr;gap:12px;padding:16px 20px;display:grid}.thread .msg:first-child{border-top:0}.thread .msg .av{width:32px;height:32px;font:700 11px/1 var(--font-sans);color:#fff;border-radius:50%;place-items:center;display:grid}.thread .msg .av.av-av{background:var(--primary)}.thread .msg .av.av-cl{background:var(--navy-3)}.thread .msg .head{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.thread .msg .who{font:600 13px/1.2 var(--font-sans);color:var(--text)}.thread .msg .when{font:500 11px/1 var(--font-mono);color:var(--text-mute);letter-spacing:.2px}.who-org{font:500 11px/1 var(--font-sans);color:var(--text-soft);border-radius:var(--r-pill);background:var(--paper-3);letter-spacing:.2px;padding:2px 8px}.who-org.is-staff{background:var(--blue-bg);color:#1d4ed8}.thread .msg .body{font:400 13px/1.55 var(--font-sans);color:var(--text)}.composer{background:var(--paper-2);border:1px solid var(--border);border-radius:var(--r-card);flex-direction:column;gap:10px;margin-top:12px;padding:14px 16px;display:flex}.composer textarea{resize:vertical;min-height:64px;font:400 13px/1.45 var(--font-sans);color:var(--text);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);width:100%;padding:10px 12px}.composer textarea:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.composer-chips{flex-wrap:wrap;gap:6px;padding:4px 0;display:flex}.chip{border-radius:var(--r-pill);font:500 12px/1.2 var(--font-sans);background:var(--paper);border:1px solid var(--border-strong);color:var(--text);align-items:center;gap:6px;max-width:100%;padding:4px 4px 4px 10px;display:inline-flex}.chip-ico{font-family:var(--font-mono);color:var(--text-soft);font-size:11px}.chip-x{width:18px;height:18px;color:var(--text-soft);font:600 14px/1 var(--font-sans);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;border-radius:50%;place-items:center;margin-left:2px;display:grid}.chip-x:hover{background:var(--paper-3);color:var(--text)}.chip-person{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.chip-person .chip-ico{color:#1d4ed8}.chip-project{border-color:var(--border-strong);background:#f1f5f9}.chip-doc{color:#92400e;background:#fffbeb;border-color:#fde68a}.chip-doc .chip-ico{color:#92400e}.composer-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.composer-add{flex-wrap:wrap;gap:6px;display:flex;position:relative}.add-btn{font:500 12px/1 var(--font-sans);color:var(--text-soft);background:var(--paper);border:1px solid var(--border);border-radius:var(--r-pill);cursor:pointer;transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease), background var(--dur) var(--ease);align-items:center;gap:5px;padding:6px 12px;display:inline-flex}.add-btn .add-ico{font-family:var(--font-mono);color:var(--text-mute);font-size:13px;font-weight:700}.add-btn.on .add-ico{color:var(--primary)}.add-btn:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.add-btn.on{border-color:var(--primary);color:var(--primary);background:var(--blue-bg)}.add-btn:disabled{opacity:.5;cursor:not-allowed}.pop{z-index:20;background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);width:280px;max-height:min(320px,100vh - 160px);box-shadow:var(--shadow-pop);padding:6px;position:absolute;bottom:calc(100% + 6px);left:0;overflow-y:auto}.pop-wide{width:360px}.pop-head{font:600 11px/1 var(--font-sans);color:var(--text-soft);text-transform:uppercase;letter-spacing:1.2px;border-bottom:1px solid var(--border);margin-bottom:4px;padding:8px 10px 6px}.pop-group{font:600 10px/1 var(--font-mono);color:var(--text-mute);text-transform:uppercase;letter-spacing:1.2px;padding:10px 10px 4px}.pop-empty{font:400 12px/1.4 var(--font-sans);color:var(--text-soft);padding:14px 10px}.pop-row{border-radius:var(--r-tile);width:100%;font:500 13px/1.3 var(--font-sans);color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;display:flex}.pop-row:hover{background:var(--paper-2)}.pop-row.on{background:var(--blue-bg);color:var(--primary)}.pop-row-main{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pop-row-sub{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px}.pop-row-check{color:var(--primary);font:700 12px/1 var(--font-sans)}.msg-tags{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.msg-tags .chip{padding:3px 4px 3px 8px;font-size:11px}.msg-tags .chip a{color:inherit}.msg-tags .chip-link{color:inherit;text-decoration:none}.msg-tags .chip-link:hover{text-decoration:underline}.empty{background:var(--paper);border:1px dashed var(--border-strong);border-radius:var(--r-card);text-align:center;padding:56px 24px}.empty .ttl{font:600 14px/1.3 var(--font-sans);color:var(--text);margin-bottom:4px}.empty .desc{font:400 13px/1.5 var(--font-sans);color:var(--text-soft)}.viewer{background:var(--bg);z-index:50;animation:viewer-in var(--dur-slow) var(--ease);flex-direction:column;display:flex;position:fixed;inset:0}@keyframes viewer-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.viewer-bar{background:var(--paper);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:12px 20px;display:flex}.viewer-bar .back{font:600 12px/1 var(--font-sans);color:var(--text-soft);border:1px solid var(--border);border-radius:var(--r-tile);cursor:pointer;transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;align-items:center;gap:6px;padding:7px 12px;display:inline-flex}.viewer-bar .back:hover{border-color:var(--text-soft);color:var(--text)}.viewer-bar .crumb{font:500 12px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px}.viewer-bar .crumb b{color:var(--text);font-weight:600}.viewer-bar .actions{gap:8px;margin-left:auto;display:flex}.viewer-frame{background:var(--bg);border:0;flex:1;width:100%}.viewer-image-wrap{background:var(--bg);flex:1;place-items:center;padding:24px;display:grid;overflow:auto}.viewer-image-wrap img{object-fit:contain;border-radius:4px;width:auto;max-width:100%;height:auto;max-height:100%;display:block;box-shadow:0 8px 32px #0f172a1f}.viewer-empty{background:var(--bg);flex:1;place-items:center;padding:40px;display:grid}.signbar{background:var(--paper);border-top:1px solid var(--border);align-items:center;gap:16px;padding:14px 20px;display:flex}.signbar .lbl{font:600 13px/1.3 var(--font-sans);color:var(--text)}.signbar .sub{font:400 12px/1.3 var(--font-sans);color:var(--text-soft);margin-top:2px}.signbar .right{gap:8px;margin-left:auto;display:flex}.scrim{z-index:60;animation:scrim-in var(--dur) var(--ease);background:#0f172a80;place-items:center;padding:24px;display:grid;position:fixed;inset:0}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--paper);box-shadow:var(--shadow-pop);width:100%;max-width:440px;animation:modal-in var(--dur-slow) var(--ease);border-radius:12px;padding:28px}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal h2{font:700 18px/1.2 var(--font-sans);color:var(--primary);letter-spacing:-.2px;margin-bottom:6px}.modal .lead{font:400 13px/1.5 var(--font-sans);color:var(--text-soft);margin-bottom:18px}.modal .footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.checkrow{background:var(--paper-2);border:1px solid var(--border);border-radius:var(--r-tile);font:400 12px/1.5 var(--font-sans);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--dur) var(--ease);gap:10px;margin-bottom:6px;padding:10px 12px;display:flex}.checkrow:hover{border-color:var(--border-strong)}.checkrow input{accent-color:var(--primary);margin-top:3px}.toast{background:var(--navy);color:#fff;font:600 13px/1 var(--font-sans);border-radius:var(--r-tile);box-shadow:var(--shadow-pop);z-index:70;animation:toast-in var(--dur-slow) var(--ease);align-items:center;gap:10px;padding:12px 18px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.toast .ok{background:var(--green);width:16px;height:16px;font:700 10px/1 var(--font-sans);color:#fff;border-radius:50%;place-items:center;display:grid}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.dense .docs .doc{padding:12px 18px}.dense main{padding-top:32px}.dense .page-head{margin-bottom:24px;padding-bottom:18px}.dense .sec{margin-bottom:28px}.sec-head{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.sec-head h2{margin:0}.lnk{font:600 12px/1 var(--font-sans);color:var(--primary-soft);cursor:pointer;transition:border-color var(--dur) var(--ease);border-bottom:1px solid #0000;padding-bottom:1px}.lnk:hover{border-bottom-color:var(--accent)}.crumb-row{margin-bottom:16px}.crumb-back{font:500 12px/1 var(--font-sans);color:var(--text-soft);cursor:pointer;transition:color var(--dur) var(--ease)}.crumb-back:hover{color:var(--text)}.proj-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}@media (max-width:760px){.proj-grid{grid-template-columns:1fr}}.proj-card{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);cursor:pointer;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);padding:18px 20px}.proj-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.pc-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.pc-head .pn{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:1.4px;text-transform:uppercase}.pc-name{font:700 16px/1.25 var(--font-sans);color:var(--primary);letter-spacing:-.2px;margin-bottom:4px}.pc-sub{font:400 12px/1.4 var(--font-sans);color:var(--text-soft);margin-bottom:14px}.pc-foot{font:500 11px/1 var(--font-mono);color:var(--text-mute);letter-spacing:.3px;border-top:1px solid var(--border);align-items:center;gap:8px;padding-top:12px;display:flex}.stat.done{background:var(--paper-3);color:var(--text-soft)}.stat.fail{background:var(--red-bg);color:#b91c1c}.dossier-jump{flex-wrap:wrap;gap:6px;margin:-8px 0 32px;display:flex}.dossier-jump a{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;border-radius:var(--r-pill);background:var(--paper);border:1px solid var(--border);text-transform:uppercase;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);padding:6px 10px}.dossier-jump a:hover{color:var(--text);border-color:var(--border-strong)}.oq-list{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.oq-row{border-top:1px solid var(--border);padding:18px 22px}.oq-row:first-child{border-top:0}.oq-row .top{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.oq-row .topic{font:600 14px/1.2 var(--font-sans);color:var(--text)}.oq-row .owner{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;margin-left:auto}.oq-row .question{font:400 13px/1.55 var(--font-sans);color:var(--text);margin:0 0 8px}.oq-row .impact{font:400 12px/1.5 var(--font-sans);color:var(--text-soft);border-left:2px solid var(--border);padding-left:12px}.prio{border-radius:var(--r-pill);font:600 11px/1 var(--font-sans);letter-spacing:.2px;align-items:center;padding:2px 10px;display:inline-flex}.prio.critical{background:var(--red-bg);color:#b91c1c}.prio.high{background:var(--amber-bg);color:var(--accent-deep)}.prio.medium{background:var(--paper-3);color:var(--text-soft)}.dev-group-title,.scen-group-title,.hw-group-title,.location-title{font:600 11px/1 var(--font-sans);color:var(--text-soft);text-transform:uppercase;letter-spacing:1.5px;margin:24px 0 12px}.dev-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (max-width:760px){.dev-grid{grid-template-columns:1fr}}.dev-card{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);padding:18px 20px}.dev-card .head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px;display:flex}.dev-card .nm{font:600 14px/1.3 var(--font-sans);color:var(--text);letter-spacing:-.1px}.dev-card .meta{font:500 11px/1.4 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;margin:0 0 10px}.dev-card .desc{font:400 13px/1.55 var(--font-sans);color:var(--text);margin:0}.scen-list{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.scen-row{border-top:1px solid var(--border);grid-template-columns:50px 1fr;gap:14px;padding:14px 20px;display:grid}.scen-row:first-child{border-top:0}.scen-row .code{font:600 11px/1 var(--font-mono);color:var(--primary-soft);letter-spacing:.3px;padding-top:4px}.scen-row .nm{font:600 14px/1.3 var(--font-sans);color:var(--text)}.scen-row .doel{font:400 12px/1.55 var(--font-sans);color:var(--text-soft);margin-top:3px}.hw-table{border-collapse:collapse;background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);width:100%;margin:0 0 8px;overflow:hidden}.hw-table td{border-top:1px solid var(--border);vertical-align:top;padding:12px 18px;font-size:13px}.hw-table tr:first-child td{border-top:0}.hw-table .item{color:var(--text)}.hw-table .item .reason{color:var(--text-soft);margin-top:2px;font-size:11px;display:block}.hw-table .count{font-family:var(--font-mono);color:var(--text-soft);text-align:right;white-space:nowrap;width:80px;font-size:11px}.hw-table .price{font-family:var(--font-mono);color:var(--text);text-align:right;white-space:nowrap;width:100px;font-size:12px}.hw-subtotal{font:500 12px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;justify-content:flex-end;gap:16px;padding:0 4px 8px;display:flex}.hw-subtotal .val{color:var(--text);font-weight:600}.hw-total{background:var(--paper-3);border-radius:var(--r-card);justify-content:space-between;align-items:center;margin-top:14px;padding:18px 22px;display:flex}.hw-total .lbl{font:600 13px/1.3 var(--font-sans);color:var(--text)}.hw-total .lbl .sub{color:var(--text-soft);margin-top:2px;font-size:11px;font-weight:400;display:block}.hw-total .val{font-family:var(--font-mono);color:var(--primary);font-size:20px;font-weight:700}.msg-list{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.msg-list .msg-row{border-top:1px solid var(--border);cursor:pointer;transition:background var(--dur) var(--ease);grid-template-columns:32px 1fr auto;align-items:flex-start;gap:14px;padding:16px 20px;display:grid}.msg-list .msg-row:first-child{border-top:0}.msg-list .msg-row:hover{background:var(--paper-2)}.msg-list .av{width:32px;height:32px;font:700 11px/1 var(--font-sans);color:#fff;border-radius:50%;place-items:center;display:grid}.msg-list .av.av-av{background:var(--primary)}.msg-list .av.av-cl{background:var(--navy-3)}.msg-list .head{align-items:center;gap:10px;margin-bottom:4px;display:flex}.msg-list .who{font:600 13px/1.2 var(--font-sans);color:var(--text)}.msg-list .tag{font:500 11px/1 var(--font-mono);color:var(--text-soft);background:var(--paper-3);border-radius:var(--r-pill);letter-spacing:.2px;padding:3px 8px}.msg-list .body{font:400 13px/1.5 var(--font-sans);color:var(--text)}.msg-list .when{font:500 11px/1 var(--font-mono);color:var(--text-mute);letter-spacing:.2px;white-space:nowrap}.msg-list.lg .msg-row{padding:20px 22px}.dot-new{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in oklab, var(--accent) 25%, transparent);border-radius:50%}.new-pill{font:600 10px/1 var(--font-sans);color:var(--accent-deep);background:var(--amber-bg);border-radius:var(--r-pill);letter-spacing:.3px;vertical-align:1px;margin-left:6px;padding:3px 7px;display:inline-block}.data-card{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.data-row{border-top:1px solid var(--border);grid-template-columns:200px 1fr;gap:14px;padding:14px 22px;display:grid}.data-row:first-child{border-top:0}.dr-label{font:500 12px/1.4 var(--font-sans);color:var(--text-soft)}.dr-val{font:500 13px/1.4 var(--font-sans);color:var(--text)}.dr-val.mono{font-family:var(--font-mono);letter-spacing:.3px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:24px;display:flex}.tab{font:600 13px/1 var(--font-sans);color:var(--text-soft);cursor:pointer;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 14px}.tab:hover{color:var(--text)}.tab.on{color:var(--primary);border-bottom-color:var(--primary)}.form-card{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);padding:8px 24px}.form-card-head{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:18px 22px;display:flex}.form-card-head .ttl{font:600 14px/1.3 var(--font-sans);color:var(--text);margin-bottom:2px}.form-card-head .sub{font:400 12px/1.4 var(--font-sans);color:var(--text-soft)}.form-row{grid-template-columns:220px 1fr;gap:24px;padding:18px 0;display:grid}.form-row+.form-row{border-top:1px solid var(--border)}.fr-label .lbl{font:600 12px/1.3 var(--font-sans);color:var(--text)}.fr-label .hint{font:400 11px/1.4 var(--font-sans);color:var(--text-soft);max-width:200px;margin-top:4px}.fr-input input,.fr-input select{width:100%;max-width:360px;font:400 13px/1.3 var(--font-sans);color:var(--text);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:9px 12px}.fr-input select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}.fr-input input:focus,.fr-input select:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.fr-input input:disabled{background:var(--paper-2);color:var(--text-soft);cursor:not-allowed}.fr-input input.mono{font-family:var(--font-mono);letter-spacing:.3px}.form-foot{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:12px;padding:14px 0;display:flex}.form-ok{font:600 12px/1 var(--font-sans);color:#15803d}.form-err{font:600 12px/1 var(--font-sans);color:#b91c1c}.pw-strength{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;align-items:center;gap:10px;margin-top:8px;display:flex}.pw-strength .bar{background:var(--border);border-radius:2px;width:120px;height:4px;position:relative;overflow:hidden}.pw-strength .bar:after{content:"";transition:width var(--dur) var(--ease), background var(--dur) var(--ease);position:absolute;top:0;bottom:0;left:0}.pw-strength .bar.s1:after{background:var(--red);width:33%}.pw-strength .bar.s2:after{background:var(--amber);width:66%}.pw-strength .bar.s3:after{background:var(--green);width:100%}.team-list{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.team-row{border-top:1px solid var(--border);grid-template-columns:32px 1fr 120px auto;align-items:center;gap:14px;padding:14px 22px;display:grid}.team-row:first-child{border-top:0}.team-row .av{width:32px;height:32px}.team-row .nm{font:600 13px/1.3 var(--font-sans);color:var(--text)}.team-row .meta{font:400 12px/1.3 var(--font-sans);color:var(--text-soft);margin-top:2px}.team-row .role-cell{font:500 12px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;text-transform:uppercase}.you-pill,.inv-pill{font:600 10px/1 var(--font-sans);border-radius:var(--r-pill);letter-spacing:.3px;vertical-align:1px;margin-left:4px;padding:3px 7px;display:inline-block}.you-pill{color:var(--primary);background:var(--blue-bg)}.inv-pill{color:var(--accent-deep);background:var(--amber-bg)}.link-danger{font:500 12px/1 var(--font-sans);color:var(--red);cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;padding:4px 0}.link-danger:hover{border-bottom-color:var(--red)}.toggle{background:var(--border-strong);cursor:pointer;width:36px;height:20px;transition:background var(--dur) var(--ease);border:0;border-radius:999px;padding:0;position:relative}.toggle .knob{width:16px;height:16px;transition:transform var(--dur) var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.toggle.on{background:var(--primary)}.toggle.on .knob{transform:translate(16px)}.notif-row{justify-content:space-between;align-items:center;gap:18px;padding:16px 0;display:flex}.notif-row+.notif-row{border-top:1px solid var(--border)}.notif-row .ttl{font:600 13px/1.3 var(--font-sans);color:var(--text);margin-bottom:2px}.notif-row .sub{font:400 12px/1.4 var(--font-sans);color:var(--text-soft)}:is(body:has(.portal-app)>header,body:has(.portal-app)>footer){display:none}body:has(.portal-app)>main{flex:1;width:100%;max-width:none;margin:0;padding:0;display:block}.portal-app{width:100%;min-height:100vh}.admin-app{flex-direction:column;min-height:100vh;display:flex}.admin-bar{background:var(--navy);color:#fff;border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;display:flex}.admin-bar-left{align-items:center;gap:14px;display:flex}.admin-brand{color:#fff;align-items:center;gap:12px;display:inline-flex}.admin-brand-logo{width:auto;height:22px;display:block}.admin-tag{font:600 10px/1 var(--font-mono);color:var(--accent);border-radius:var(--r-pill);letter-spacing:1.2px;text-transform:uppercase;background:#fbbf2426;padding:4px 8px}.admin-bar-right{align-items:center;gap:16px;display:flex}.admin-me{text-align:right}.admin-me .nm{font:600 12px/1.2 var(--font-sans);color:#fff}.admin-me .role{font:500 10px/1.2 var(--font-mono);color:#ffffff80;letter-spacing:.3px;margin-top:2px}.admin-logout{color:#ffffffb3;background:0 0;border-color:#ffffff2e;padding:7px 12px;font-size:12px}.admin-logout:hover{color:#fff;border-color:#fff}.admin-main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:36px 32px 64px}@media (max-width:720px){.admin-main{padding:24px}}.admin-search{margin-bottom:14px}.admin-search input{width:100%;max-width:420px;font:400 13px/1.3 var(--font-sans);color:var(--text);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-tile);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:10px 14px}.admin-search input:focus{border-color:var(--primary-soft);outline:none;box-shadow:0 0 0 3px #2563eb1f}.admin-clients{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.admin-client{border-top:1px solid var(--border);cursor:pointer;transition:background var(--dur) var(--ease);color:inherit;justify-content:space-between;align-items:center;gap:16px;padding:16px 22px;display:flex}.admin-client:first-child{border-top:0}.admin-client:hover{background:var(--paper-2)}.ac-main{flex:1;min-width:0}.ac-name{font:600 14px/1.3 var(--font-sans);color:var(--text)}.ac-slug{font:500 11px/1 var(--font-mono);color:var(--text-soft);letter-spacing:.3px;margin-top:4px}.ac-meta{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.ac-unread{border-radius:var(--r-pill);background:var(--amber-bg);color:var(--accent-deep);font:600 11px/1 var(--font-sans);align-items:center;padding:4px 10px;display:inline-flex}.ac-when{font:500 11px/1 var(--font-mono);color:var(--text-mute);letter-spacing:.2px;white-space:nowrap}.admin-projects{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.admin-project{border-top:1px solid var(--border);cursor:pointer;color:inherit;transition:background var(--dur) var(--ease);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 22px;display:flex}.admin-project:first-child{border-top:0}.admin-project:hover{background:var(--paper-2)}.ap-main{flex:1;min-width:0}.ap-name{font:600 14px/1.3 var(--font-sans);color:var(--text);margin-bottom:4px}.ap-sub{font:400 12px/1.4 var(--font-sans);color:var(--text-soft);max-width:60ch;margin-bottom:6px}.ap-meta{font:500 11px/1 var(--font-mono);color:var(--text-mute);letter-spacing:.2px;flex-wrap:wrap;gap:6px;display:flex}.ap-meta .ap-client{color:var(--text-soft);font-weight:600}.admin-stats{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:8px;display:grid}@media (max-width:760px){.admin-stats{grid-template-columns:1fr}}.admin-stat{background:var(--paper);border:1px solid var(--border);border-radius:var(--r-card);cursor:pointer;color:inherit;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:22px 24px;display:block}.admin-stat:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.admin-stat .ast-num{font:700 32px/1 var(--font-sans);color:var(--primary);letter-spacing:-.5px;margin-bottom:6px}.admin-stat .ast-num.highlight{color:var(--accent-deep)}.admin-stat .ast-lbl{font:600 11px/1 var(--font-sans);color:var(--text-soft);text-transform:uppercase;letter-spacing:1.5px}.modal-foot{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}
