:root{--obsidian:#071018;--navy:#0b1b28;--navy2:#102b3c;--blue:#2a6f9c;--ice:#eaf2f6;--white:#f7fafc;--text:#e9f0f4;--muted:#93a5b1;--line:rgba(255,255,255,.12);--panel:rgba(255,255,255,.035);--danger:#b85555;--amber:#b99659;--green:#6ea58a;--max:1140px}*{box-sizing:border-box}html{background:var(--obsidian);color-scheme:dark}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 80% 0%,rgba(30,88,120,.18),transparent 28%),linear-gradient(180deg,#071018 0%,#08131c 55%,#071018 100%);color:var(--text);min-height:100vh}.shell{width:min(var(--max),calc(100% - 40px));margin:auto}.topbar{border-bottom:1px solid var(--line);background:rgba(7,16,24,.9);backdrop-filter:blur(14px);position:sticky;top:0;z-index:20}.topbar__inner{min-height:72px;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;color:var(--white);text-decoration:none;white-space:nowrap}.brand__logo{display:block;width:34px;height:28px;object-fit:contain;margin-right:11px;flex:0 0 auto}.brand__name{font-weight:700;font-size:12px;letter-spacing:.18em}.brand__divider{height:15px;width:1px;background:rgba(255,255,255,.24);margin:0 10px}.brand__product{font:600 11px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.16em;color:#9fc5dc}.nav{display:flex;gap:18px;margin-left:auto}.nav a,.userbox a{color:var(--muted);font-size:12px;text-decoration:none}.nav a:hover{color:#fff}.userbox{display:flex;align-items:center;gap:9px;border-left:1px solid var(--line);padding-left:18px;font-size:11px}.role{color:#7fa7bf;text-transform:uppercase;letter-spacing:.09em}.linkbtn{border:0;background:none;color:var(--muted);padding:0;cursor:pointer;font:inherit}.main{padding:64px 0 90px}.footer{border-top:1px solid var(--line);color:#6f828f;font:10px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}.footer__inner{min-height:70px;display:flex;align-items:center;gap:28px;flex-wrap:wrap}.footer__inner span:last-child{margin-left:auto}.eyebrow,.kicker{font:600 10px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.15em;text-transform:uppercase;color:#8fb6ca}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#58a583;margin-right:8px;box-shadow:0 0 0 4px rgba(88,165,131,.08)}.dot--amber{background:var(--amber)}h1{font-size:clamp(36px,5vw,64px);line-height:1.02;letter-spacing:-.045em;margin:16px 0 20px;font-weight:550;max-width:900px}h2{font-size:24px;letter-spacing:-.025em;font-weight:550;margin:7px 0 18px}h3{font-size:18px;font-weight:550;margin:12px 0 6px}p{color:var(--muted);line-height:1.65}.lead{font-size:17px;max-width:760px}.authgrid{display:grid;grid-template-columns:1.2fr .8fr;gap:90px;align-items:center;min-height:560px}.authintro p{font-size:17px;max-width:610px}.principles{margin-top:42px;border-top:1px solid var(--line);padding-top:20px;display:flex;gap:28px;color:#8fa5b2;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.panel{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.018));padding:30px}.panel--info{background:rgba(42,111,156,.07)}.authpanel{max-width:430px;margin-left:auto;width:100%}.form{display:grid;gap:18px}.form label,.reviewform label,.filterbar label{display:grid;gap:8px;color:#aebdc6;font-size:11px;text-transform:uppercase;letter-spacing:.075em}.form input,.form select,.form textarea,.reviewform input,.reviewform select,.filterbar input,.filterbar select,.monthfilter input,.inlineform select{width:100%;border:1px solid rgba(255,255,255,.16);background:#091823;color:#f3f7f9;padding:13px 14px;border-radius:0;outline:none;font:14px inherit}.form textarea{resize:vertical}.form input:focus,.form select:focus,.form textarea:focus,.reviewform input:focus,.reviewform select:focus{border-color:#5e9cbd;box-shadow:0 0 0 3px rgba(42,111,156,.12)}small,.optional{font-size:10px;color:#718692;text-transform:none;letter-spacing:0}.formrow{display:grid;grid-template-columns:1fr 1fr;gap:16px}.formrow--3{grid-template-columns:repeat(3,1fr)}.btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:15px;padding:0 18px;text-decoration:none;border:1px solid rgba(255,255,255,.14);font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:#0b1b28;color:#d8e4ea}.btn--primary{background:#eaf2f6;color:#0a1822;border-color:#eaf2f6}.btn--primary:hover{background:#fff}.btn--quiet{background:transparent;color:#a7b9c3}.btn--danger{background:rgba(184,85,85,.1);border-color:rgba(184,85,85,.4);color:#e4aaaa}.btn--small{min-height:34px;padding:0 11px;font-size:9px}.authlinks{border-top:1px solid var(--line);padding-top:20px;margin-top:23px;display:flex;justify-content:space-between;gap:20px;font-size:11px}.authlinks a,.backlink{color:#a8cadd;text-decoration:none}.authlinks span{color:#6f828e}.flash{margin-bottom:24px;border:1px solid var(--line);padding:13px 16px;font-size:12px}.flash--success{border-color:rgba(110,165,138,.45);background:rgba(110,165,138,.08)}.flash--error{border-color:rgba(184,85,85,.45);background:rgba(184,85,85,.08)}.narrow{max-width:720px;margin:0 auto}.narrowwide{max-width:860px;margin:0 auto}.narrow .panel,.narrowwide .panel{margin:32px 0}.backlink{font-size:12px}.pagehead{display:flex;justify-content:space-between;gap:30px;align-items:flex-end;margin-bottom:38px}.pagehead h1{font-size:44px;margin-bottom:10px}.pagehead p{max-width:730px;margin:0}.metricgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:28px 0 56px}.metricgrid--4{grid-template-columns:repeat(4,1fr)}.metric{background:#08151f;padding:24px;text-decoration:none;color:inherit}.metric span{display:block;color:#7f96a4;font:10px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.12em;margin-bottom:15px}.metric strong{font-size:32px;font-weight:500;letter-spacing:-.035em}.smallstrong{font-size:18px!important}.section{margin-top:54px}.sectionhead{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{border:1px solid var(--line);padding:24px;min-height:150px;background:var(--panel)}.card--link{text-decoration:none;color:inherit}.card--link:hover{border-color:rgba(143,182,202,.45);background:rgba(42,111,156,.07)}.card p{margin:0;font-size:13px}.projectcode{font:10px ui-monospace,SFMono-Regular,Menlo,monospace;color:#7fa7bf;letter-spacing:.08em}.tablewrap{border:1px solid var(--line);overflow-x:auto;margin-top:26px}table{border-collapse:collapse;width:100%;min-width:760px}th{padding:13px 14px;text-align:left;color:#7f95a2;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.13em;border-bottom:1px solid var(--line);background:#08151f}td{padding:14px;border-bottom:1px solid rgba(255,255,255,.075);vertical-align:top;font-size:12px;color:#cbd7dd}tbody tr:hover{background:rgba(255,255,255,.02)}tfoot td{background:#091722}.num{text-align:right;white-space:nowrap}.muted{color:#718591;font-size:11px}.status{display:inline-block;border:1px solid rgba(255,255,255,.14);padding:3px 6px;font:9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em;color:#8fa2ae}.status--approved,.status--active{border-color:rgba(110,165,138,.45);color:#9dc8b2}.status--submitted,.status--pending{border-color:rgba(185,150,89,.45);color:#d2b989}.status--rejected,.status--disabled{border-color:rgba(184,85,85,.45);color:#dca1a1}.empty{text-align:center!important;color:#6e8290!important;padding:28px!important}.monthfilter,.filterbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.monthfilter input{width:auto;min-height:42px}.submitbar{border:1px solid var(--line);margin-top:20px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:rgba(42,111,156,.06)}.submitbar strong,.submitbar span{display:block}.submitbar span{color:#748996;font-size:11px;margin-top:5px}.actions{display:flex;justify-content:flex-end;gap:10px}.split{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.inlineform{display:flex;align-items:center;gap:7px;margin:3px 0;flex-wrap:wrap}.inlineform select{width:auto;min-width:160px;padding:8px}.reviewform{display:grid;grid-template-columns:90px 130px minmax(180px,1fr) auto;gap:8px;align-items:end}.reviewform input,.reviewform select{padding:8px}.notice{margin-top:18px;border-left:2px solid var(--amber);padding:10px 14px;color:#9aaab3;font-size:11px}.warn{color:#d1b071}.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}@media(max-width:900px){.nav{display:none}.authgrid{grid-template-columns:1fr;gap:35px}.authpanel{margin:0;max-width:none}.metricgrid--4{grid-template-columns:1fr 1fr}.cards{grid-template-columns:1fr}.split{grid-template-columns:1fr}.reviewform{grid-template-columns:1fr 1fr}.topbar__inner{gap:14px}.userbox{margin-left:auto}.role,.userbox>span:first-child{display:none}}@media(max-width:620px){.shell{width:min(var(--max),calc(100% - 24px))}.main{padding-top:38px}.brand__name{font-size:10px}.brand__mark{width:27px;height:27px}.pagehead{align-items:flex-start;flex-direction:column}.pagehead h1{font-size:36px}.authgrid{min-height:auto}.metricgrid,.metricgrid--4{grid-template-columns:1fr}.formrow,.formrow--3{grid-template-columns:1fr}.panel{padding:20px}.principles{flex-direction:column;gap:8px}.footer__inner{padding:20px 0;display:grid}.footer__inner span:last-child{margin-left:0}.reviewform{grid-template-columns:1fr}.submitbar{align-items:flex-start;flex-direction:column}}
/* v0.1.3 · project periods and calendar */
.calendar-head{gap:20px;flex-wrap:wrap}.calendar-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.calendar-controls .monthfilter{gap:8px}.project-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);background:#08151f}.calendar-weekday{padding:10px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);color:#718996;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.12em;text-align:center}.calendar-day{min-height:108px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.015);min-width:0}.calendar-day--outside{opacity:.36}.calendar-day--today{box-shadow:inset 0 0 0 1px rgba(143,182,202,.5)}.calendar-date{color:#94a9b5;font:600 10px ui-monospace,SFMono-Regular,Menlo,monospace;margin-bottom:8px}.calendar-items{display:grid;gap:4px}.calendar-project{min-width:0;border-left:2px solid #6e93aa;background:rgba(42,111,156,.10);padding:5px 6px;color:#bfd0da;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-more{color:#6f8592;font-size:9px;padding:2px 4px}.calendar-empty{border:1px solid var(--line);border-top:0;padding:18px;color:#718591;font-size:11px}.dateform{display:grid;grid-template-columns:1fr 1fr;gap:7px;min-width:280px}.dateform label{display:grid;gap:4px}.dateform label span{font:8px ui-monospace,SFMono-Regular,Menlo,monospace;color:#708793;text-transform:uppercase;letter-spacing:.1em}.dateform input{width:100%;border:1px solid rgba(255,255,255,.14);background:#091823;color:#f3f7f9;padding:8px;font:11px inherit}.dateform .btn{grid-column:1/-1}.project-desc{margin-top:6px;max-width:280px}.project-period{margin-top:12px;color:#849aa7;font:10px ui-monospace,SFMono-Regular,Menlo,monospace}.project-period strong{color:#c2d2da;font-weight:500}@media(max-width:760px){.project-calendar{grid-template-columns:repeat(7,minmax(72px,1fr));overflow:visible}.project-calendar-section{overflow-x:auto;padding-bottom:6px}.calendar-day{min-height:92px}.calendar-weekday{min-width:72px}}
/* v0.1.4 · freelancer lifecycle, VS-NfD and briefing controls */
.checkline{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:10px!important;text-transform:none!important;letter-spacing:0!important;color:#c3d1d8!important}.checkline input[type=checkbox]{width:17px!important;height:17px!important;min-width:17px;margin:1px 0 0;padding:0;accent-color:#dceaf1}.checkline span{display:grid;gap:3px}.checkline strong{font-size:12px;font-weight:600}.checkline small{display:block}.checkline--compact{align-items:center;gap:7px!important;font-size:10px!important}.checkline--compact input[type=checkbox]{width:15px!important;height:15px!important;min-width:15px}.dateform .checkline--compact{grid-column:1/-1;border:1px solid rgba(255,255,255,.08);padding:7px 8px}.project-labels{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px}.security-tag{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border:1px solid rgba(185,150,89,.48);color:#d7bf91;background:rgba(185,150,89,.08);font:600 8px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase}.briefing-state{margin-top:15px;border-top:1px solid var(--line);padding-top:10px;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em}.briefing-state span{display:block;margin-top:4px;font-weight:400}.briefing-state--ok{color:#9dc8b2}.briefing-state--pending{color:#d2b989}.assignment-list{display:grid;gap:10px;min-width:280px}.assignment-item{border-bottom:1px solid rgba(255,255,255,.075);padding-bottom:10px}.assignment-item:last-child{border-bottom:0;padding-bottom:0}.briefing-form{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.briefing-form .checkline{margin-right:auto}.user-actions{display:grid;gap:8px;min-width:150px}.user-actions form{margin:0}.delete-details{border-top:1px solid rgba(184,85,85,.22);padding-top:7px;color:#c88f8f}.delete-details summary{cursor:pointer;font-size:10px;color:#c88f8f}.delete-details p{font-size:10px;line-height:1.4;margin:8px 0;color:#8f7a7a}.recordcount{font-size:11px;color:#c8d4da}
@media(max-width:760px){.assignment-list{min-width:220px}.briefing-form{align-items:flex-start;flex-direction:column}.user-actions{min-width:130px}}

/* v0.1.5 · monthly project hour allowance */
.hours-budget{margin-top:14px;border-top:1px solid var(--line);padding-top:11px;display:grid;gap:4px}.hours-budget span{color:#718996;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.09em}.hours-budget strong{font-size:17px;font-weight:600}.hours-budget em{font:700 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.1em;font-style:normal}.hours-budget--ok strong,.hours-budget--ok em{color:#83c7a4}.hours-budget--over{border-color:rgba(184,85,85,.42)}.hours-budget--over strong,.hours-budget--over em{color:#e28e8e}.hours-budget--compact{margin-top:10px;max-width:250px}.hours-budget--compact strong{font-size:13px}.usagegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:20px 0 8px}.usagecard{border:1px solid var(--line);padding:15px 16px;background:rgba(255,255,255,.025);display:grid;gap:5px}.usagecard span{color:#718996;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em}.usagecard strong{font-size:21px;font-weight:600}.usagecard em{font:700 9px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.1em;font-style:normal}.usagecard--ok{border-color:rgba(110,165,138,.32)}.usagecard--ok strong,.usagecard--ok em{color:#83c7a4}.usagecard--over{border-color:rgba(184,85,85,.55);background:rgba(184,85,85,.07)}.usagecard--over strong,.usagecard--over em{color:#e28e8e}.overrun-card{border-color:rgba(184,85,85,.42);background:rgba(184,85,85,.055)}@media(max-width:900px){.usagegrid{grid-template-columns:1fr}}
