:root{--bg:#070908;--panel:#111513;--panel2:#171c19;--line:#29302c;--green:#54d899;--text:#f4f7f5;--muted:#8d9893;--danger:#ff756b;--warning:#f2be57;--sidebar:218px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}body{font-size:14px}a{color:inherit}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh}.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:#090b0a;border-right:1px solid #202522;display:flex;flex-direction:column;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:22px 18px 20px;text-decoration:none;border-bottom:1px solid #202522;min-height:92px}.sidebar-brand img{width:92px;height:auto;display:block;object-fit:contain}.sidebar-brand span{font-size:9px;line-height:1.25;font-weight:900;letter-spacing:.13em;color:var(--green);max-width:82px;word-break:normal;overflow-wrap:break-word}.nav-stack{padding:20px 12px;display:grid;gap:7px}.nav-stack a{display:flex;align-items:center;gap:12px;padding:12px 13px;text-decoration:none;color:#d9dfdc;font-weight:700;font-size:12px;border-left:2px solid transparent}.nav-stack a:hover,.nav-stack a.active{background:#153225;border-left-color:var(--green);color:#fff}.nav-icon{color:var(--green);width:14px;text-align:center}.sidebar-bottom{margin-top:auto;border-top:1px solid #202522;padding:16px 15px 18px}.profile-mini{display:flex;align-items:center;gap:10px;margin-bottom:12px}.profile-dot{width:31px;height:31px;border-radius:50%;background:#163829;color:var(--green);display:grid;place-items:center;font-weight:900;border:1px solid #2f654d}.profile-mini b{display:block;font-size:11px}.profile-mini small{display:block;font-size:8px;color:#7d8883;text-transform:uppercase;letter-spacing:.1em;margin-top:3px}.nav-logout{border:0;background:transparent;color:#9ca6a1;padding:4px 0;cursor:pointer;font-weight:700}.app-main{margin-left:var(--sidebar);min-height:100vh}.content{max-width:1420px;margin:0 auto;padding:32px 38px 56px}.mobile-topbar{display:none}.dashboard-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:24px}.dashboard-head h1{margin:4px 0 5px;font-size:48px;line-height:.95;letter-spacing:-.055em}.dashboard-head p{margin:0;color:var(--muted)}.eyebrow{font-size:9px!important;color:var(--green)!important;font-weight:900!important;letter-spacing:.16em!important;text-transform:uppercase}.today-chip{font-size:10px;color:#9ba6a0;background:#111513;border:1px solid #29302c;padding:10px 13px}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border:0;text-decoration:none;font-weight:900;font-size:10px;letter-spacing:.04em;cursor:pointer}.primary{background:var(--green);color:#07100b}.secondary{background:#1a211d;color:#fff;border:1px solid #323a35}.kpi-grid{display:grid;gap:12px;margin-bottom:18px}.kpi-grid.four{grid-template-columns:repeat(4,1fr)}.kpi-grid.three{grid-template-columns:repeat(3,1fr)}.kpi-card{background:linear-gradient(145deg,#171b19,#111412);border:1px solid #282e2b;padding:18px;min-height:138px;display:flex;flex-direction:column}.kpi-card>span:not(.kpi-icon){font-size:9px;color:#89938f;font-weight:900;letter-spacing:.08em;margin-top:10px}.kpi-icon{color:var(--green);font-size:21px}.kpi-card strong{font-size:27px;line-height:1;margin:9px 0 5px;letter-spacing:-.04em}.kpi-card small{color:#73807a;font-size:10px}.dark-panel{background:linear-gradient(145deg,#151917,#101311);border:1px solid #272e2a;box-shadow:0 16px 44px rgba(0,0,0,.18)}.panel-title-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.panel-title-row h2{font-size:20px;margin:4px 0}.panel-title-row>a:not(.primary){font-size:10px;color:var(--green);font-weight:800;text-decoration:none}.time-capture-panel,.table-panel,.month-panel,.form-panel,.request-list{padding:22px}.time-summary-grid{display:grid;grid-template-columns:1fr 1fr 1fr 2fr;gap:1px;background:#2a302d;border:1px solid #2a302d;margin-top:18px}.time-summary-grid div{background:#111412;padding:14px}.time-summary-grid span{display:block;font-size:8px;color:#77827d;text-transform:uppercase;letter-spacing:.09em}.time-summary-grid b{display:block;margin-top:6px;font-size:14px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th{font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:#8e9994;text-align:left;padding:11px 9px;border-bottom:1px solid #343a37}td{padding:12px 9px;border-bottom:1px solid #252b28;font-size:11px;color:#dbe0dd}tbody tr:hover{background:#161b18}.green-text{color:var(--green)!important}.warn-text{color:var(--warning)!important}.danger-text{color:var(--danger)!important}.image-action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.image-action{height:190px;position:relative;overflow:hidden;text-decoration:none;background:#111}.image-action:before{content:"";position:absolute;inset:0;background-image:linear-gradient(to top,rgba(3,5,4,.94),rgba(3,5,4,.06) 72%),var(--bgimg);background-size:cover;background-position:center;transition:transform .35s ease}.image-action:hover:before{transform:scale(1.04)}.image-action div{position:absolute;left:15px;right:15px;bottom:14px;display:grid;grid-template-columns:1fr auto;align-items:end}.image-action small{grid-column:1/-1;color:#a5afaa;font-size:9px}.image-action strong{font-size:17px}.image-action span{color:var(--green);font-size:22px}.close-hero{padding:26px;display:flex;justify-content:space-between;align-items:center;gap:24px;background:linear-gradient(90deg,rgba(8,10,9,.97),rgba(8,10,9,.83)),url('/static/img/bikepark-hero.jpg') center/cover}.close-hero h2{font-size:30px;margin:5px 0 7px;letter-spacing:-.04em}.close-hero h2 span{color:var(--green)}.close-hero p{color:#95a09a;max-width:750px;margin:0;font-size:12px}.feature-row{margin-top:14px;display:flex;gap:12px;flex-wrap:wrap;color:#8f9a95;font-size:10px}.feature-row b{color:#fff}.entry-card{display:grid;grid-template-columns:.72fr 1.28fr;overflow:hidden;min-height:480px}.entry-visual{background:linear-gradient(to top,rgba(4,7,5,.7),rgba(4,7,5,.05)),url('/static/img/bikepark-02.jpg') center/cover}.entry-form-wrap{padding:28px}.entry-form-wrap h2{font-size:27px;margin:4px 0 22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid.single{grid-template-columns:1fr}.form-grid label,.month-filter label{font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:#9ea9a3;font-weight:900}.form-grid input,.form-grid textarea,.form-grid select,.month-filter input,.month-filter select{width:100%;margin-top:7px;background:#0c0f0d;border:1px solid #343b37;color:#fff;padding:12px}.form-grid textarea{min-height:90px;resize:vertical}.form-grid input:focus,.form-grid textarea:focus,.form-grid select:focus,.month-filter input:focus,.month-filter select:focus{outline:1px solid var(--green);border-color:var(--green)}.span-2{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:10px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.month-filter{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding-bottom:18px}.month-filter input,.month-filter select{width:125px;padding:10px}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:7px;background:#65706a}.status-dot.ok{background:var(--green);box-shadow:0 0 0 3px rgba(84,216,153,.08)}.status-dot.warn{background:var(--warning)}.status-dot.closed{background:#71aaff}.export-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #2a302d;margin-top:18px;padding:21px 0 2px}.export-bar h3{font-size:20px;margin:4px 0}.export-bar p{font-size:11px;color:#8d9893;margin:0;max-width:720px}.request-row{padding:14px 0;border-bottom:1px solid #29302c}.request-row p{font-size:12px}.request-row small{color:#78847e}.pill{display:inline-block;padding:4px 7px;border-radius:12px;background:#222825;font-size:8px;text-transform:uppercase;letter-spacing:.06em}.pill.open{background:#332b19;color:#f2be57}.pill.approved{background:#173325;color:var(--green)}.pill.rejected{background:#341d1c;color:#ff8277}.alert{background:#371b18;border-left:3px solid var(--danger);color:#ffd5d1;padding:11px 13px;margin:12px 0;font-size:12px}.login-page-v3{min-height:100vh;position:relative;display:grid;place-items:center;background:#040605;overflow:hidden}.login-photo{position:absolute;inset:0;background-image:linear-gradient(90deg,rgba(0,0,0,.62),rgba(0,0,0,.28)),linear-gradient(to top,rgba(0,0,0,.62),transparent),url('/static/img/bikepark-hero.jpg');background-size:cover;background-position:center;filter:saturate(.7) brightness(.72);transform:scale(1.03)}.login-overlay-card{position:relative;z-index:2;width:min(430px,calc(100vw - 34px));padding:34px;background:rgba(9,12,10,.93);border:1px solid #343a37;box-shadow:0 25px 80px rgba(0,0,0,.5);backdrop-filter:blur(8px);text-align:center}.login-logo{width:170px;height:auto;filter:none}.login-portal-label{color:var(--green);font-size:10px;font-weight:900;letter-spacing:.12em;margin:4px 0 22px}.login-overlay-card h1{font-size:17px;margin:0 0 18px}.login-form-v3{display:grid;gap:12px;text-align:left}.login-form-v3 input{width:100%;padding:12px 13px;background:#101311;border:1px solid #393f3c;color:#fff}.demo{color:#69756f;font-size:9px;line-height:1.5;margin:15px 0 0}.login-features{position:absolute;z-index:2;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,1fr);background:rgba(6,9,7,.88);border-top:1px solid #232825}.login-features span{padding:14px;text-align:center;font-size:9px;color:#8f9a95;border-right:1px solid #232825}.login-features b{color:var(--green);margin-right:7px}.login-features span:last-child{border-right:0}.action-row{display:flex;gap:8px;flex-wrap:wrap}.compact-form{display:flex;gap:6px;align-items:center}.compact-form button{min-height:30px;padding:0 10px}.subtle{color:#74807a;font-size:10px}.section-gap{margin-top:18px}.summary-strip{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #2a302d;background:#2a302d;gap:1px;margin-top:18px}.summary-strip>div{background:#111412;padding:14px}.summary-strip small{display:block;color:#7d8883;text-transform:uppercase;font-size:8px;letter-spacing:.08em}.summary-strip b{display:block;margin-top:4px;font-size:15px}.footer-note{color:#6f7b75;font-size:9px;margin-top:18px}.locked-banner{padding:11px 13px;background:#14251d;border:1px solid #28533f;color:#bcefd5;margin-bottom:16px;font-size:11px}
@media(max-width:1000px){.app-sidebar{display:none}.app-main{margin-left:0}.mobile-topbar{display:flex;height:64px;padding:0 17px;border-bottom:1px solid #232825;background:#080a09;align-items:center;justify-content:space-between}.mobile-topbar img{width:90px}.mobile-topbar span{font-size:9px;color:var(--green);font-weight:900;letter-spacing:.1em}.content{padding:24px 17px 45px}.kpi-grid.four,.kpi-grid.three,.image-action-grid,.two-col{grid-template-columns:1fr 1fr}.entry-card{grid-template-columns:1fr}.entry-visual{height:220px}.close-hero,.export-bar{align-items:flex-start;flex-direction:column}.login-features{display:none}.summary-strip{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.dashboard-head{align-items:flex-start;flex-direction:column}.dashboard-head h1{font-size:40px}.kpi-grid.four,.kpi-grid.three,.image-action-grid,.two-col,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.time-summary-grid,.summary-strip{grid-template-columns:1fr}.panel-title-row{align-items:flex-start;flex-direction:column}.entry-form-wrap{padding:21px}.image-action{height:165px}.today-chip{display:none}}

.notice{margin:0 0 18px;padding:12px 14px;border:1px solid #24312b;background:#101612;border-radius:8px}.notice.success{border-color:#2f7d59;color:#8cf0bb}.notice.error{border-color:#8a3c3c;color:#ffaaaa}.subline{display:block;color:#7f8b85;margin-top:4px}.table-link{color:#54d899;text-decoration:none;font-weight:800;font-size:12px;letter-spacing:.04em}.small-btn{padding:8px 10px;font-size:11px}.wide-form{max-width:920px}.checkline{display:flex!important;align-items:center;gap:10px}.checkline input{width:auto!important}.pill.approved{color:#69e6a3}.pill.rejected{color:#ff8e8e}
.compact-edit{display:grid;grid-template-columns:88px 88px 74px 100px minmax(130px,1fr) auto;gap:6px;align-items:center}.compact-edit input,.compact-edit select{background:#0c0f0d;border:1px solid #343b37;color:#fff;padding:7px;min-width:0}.primary:disabled,.secondary:disabled{opacity:.35;cursor:not-allowed}.sidebar-brand{overflow:hidden}.sidebar-brand span{white-space:normal;overflow-wrap:normal;word-break:keep-all}.nav-stack{overflow:auto}.form-grid input[type=file]{padding:9px}.month-panel .pill{margin:2px}
@media(max-width:1200px){.compact-edit{grid-template-columns:80px 80px 70px 90px 120px auto}}

.live-start-form{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.live-start-form select,.live-start-form input{background:#0c0f0d;border:1px solid #343b37;color:#fff;padding:9px;min-width:170px}
.profile-photo-panel{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;margin-bottom:22px}.employee-photo-wrap{display:flex;align-items:center;justify-content:center}.employee-photo-large,.employee-photo-placeholder{width:150px;height:150px;border-radius:18px;object-fit:cover;border:1px solid #29352f;background:#111614}.employee-photo-placeholder{display:flex;align-items:center;justify-content:center;font-size:2.6rem;font-weight:800;color:#54d899}.photo-upload-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.profile-photo-mini{width:40px;height:40px;border-radius:50%;object-fit:cover;border:1px solid #2c3933}@media(max-width:700px){.profile-photo-panel{grid-template-columns:1fr}.employee-photo-wrap{justify-content:flex-start}}
.employee-greeting{display:flex;align-items:center;gap:18px}.dashboard-profile-photo,.dashboard-profile-placeholder{width:76px;height:76px;border-radius:18px;object-fit:cover;border:1px solid #29352f;background:#111614}.dashboard-profile-placeholder{display:flex;align-items:center;justify-content:center;color:#54d899;font-size:1.5rem;font-weight:800}@media(max-width:700px){.employee-greeting{align-items:flex-start}.dashboard-profile-photo,.dashboard-profile-placeholder{width:58px;height:58px}}

.subform-block{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:18px;background:#0d110f;border:1px solid #2d3631;margin-top:18px}.subform-heading{grid-column:1/-1;padding-bottom:4px}.subform-heading h2{margin:3px 0 5px;font-size:20px}.subform-heading p:not(.eyebrow){margin:0;color:#819089;font-size:10px}.access-block{border-color:#28533f;background:linear-gradient(145deg,#102019,#0d110f)}
@media(max-width:650px){.subform-block{grid-template-columns:1fr}.subform-block .span-2,.subform-heading{grid-column:auto}}
