:root {
  --ink:#172124; --muted:#687478; --cream:#f4f1ea; --paper:#fffdf8; --line:#d9ddd8;
  --green:#176c53; --green-soft:#dcefe7; --red:#a83e38; --red-soft:#f8e5e2;
  --amber:#94600f; --amber-soft:#faedcf; --blue:#315f7a; --blue-soft:#e2edf3;
  --shadow:0 18px 55px rgba(27,43,43,.12);
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%}
[hidden]{display:none!important}
body{color:var(--ink);background:var(--cream);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input,select,textarea{font:inherit} a{color:inherit} h1,h2,p{margin-top:0} h1{font-size:clamp(27px,4vw,44px);margin-bottom:0;letter-spacing:-.035em} h2{margin-bottom:0;letter-spacing:-.025em}
.eyebrow{margin-bottom:6px;color:var(--green);font-size:12px;font-weight:800;letter-spacing:.17em}
.muted{color:var(--muted)} small{display:block;margin-top:4px;color:var(--muted)}
.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:10px;padding:11px 15px;text-decoration:none;font-weight:750;cursor:pointer;white-space:nowrap}
.primary{background:var(--green);color:#fff}.secondary{border:1px solid var(--line);background:var(--paper)}.danger{background:var(--red);color:#fff}.text-button{padding:8px;background:transparent;color:var(--green)}

.kiosk-page{min-height:100vh;background:radial-gradient(circle at 20% 10%,#fffdf7 0,var(--cream) 48%,#e7ece7 100%);overflow:hidden}
.kiosk-shell{min-height:100vh;display:grid;grid-template-rows:auto auto 1fr auto;gap:clamp(16px,3vh,32px);padding:clamp(24px,5vw,64px)}
.kiosk-header,.admin-header,.section-heading,.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}
.connection{display:inline-flex;gap:9px;align-items:center;padding:9px 13px;border:1px solid var(--line);border-radius:100px;background:rgba(255,255,255,.55);color:var(--muted);font-size:13px}
.connection i{width:8px;height:8px;border-radius:50%;background:#30a578;box-shadow:0 0 0 4px rgba(48,165,120,.13)}.connection.offline i{background:var(--red)}
.clock-panel{text-align:center}.clock{font-size:clamp(68px,16vw,150px);line-height:.9;font-weight:780;font-variant-numeric:tabular-nums;letter-spacing:-.075em}.date{margin-top:14px;color:var(--muted);font-size:clamp(20px,3vw,29px);font-weight:650;text-transform:capitalize}
.scan-card{width:min(820px,100%);min-height:300px;margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px solid var(--line);border-radius:30px;padding:28px;background:rgba(255,253,248,.93);box-shadow:var(--shadow);transition:.2s}
.scan-card.success{background:var(--green-soft);border-color:#9ac8b8;transform:scale(1.01)}.scan-card.error{background:var(--red-soft);border-color:#dfaaa5}.scan-card.warning{background:var(--amber-soft);border-color:#ddc28c}
.scan-icon{--icon-contrast:var(--green);display:grid;place-items:center;width:82px;height:82px;margin-bottom:18px;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:46px;font-weight:700}.scan-icon .screen-icon{display:block;width:54px;height:54px}.success .scan-icon{--icon-contrast:var(--green);color:#fff;background:var(--green)}.error .scan-icon{--icon-contrast:var(--red);color:#fff;background:var(--red)}.warning .scan-icon{--icon-contrast:var(--amber);color:#fff;background:var(--amber)}
.scan-kicker{margin-bottom:10px;color:var(--muted);font-size:clamp(22px,3.7vw,30px);font-weight:900;line-height:1.15;letter-spacing:.055em}.scan-card h2{font-size:clamp(42px,7.5vw,64px);line-height:1.02}.scan-card>p:last-child{margin:15px 0 0;color:var(--muted);font-size:clamp(20px,3vw,26px);font-weight:650;line-height:1.3}.scan-card.checkout>p:last-child{max-width:680px;color:var(--ink);font-size:clamp(28px,4vw,36px);font-weight:850;line-height:1.22}
footer{display:flex;justify-content:space-between;color:var(--muted);font-size:13px}footer a{text-decoration:none;font-weight:700}

.admin-page{padding:28px}.admin-header{max-width:1440px;margin:0 auto 18px;min-height:58px}.header-actions{display:flex;align-items:center;gap:10px}.header-actions #signed-in{display:inline-block;min-width:42px;text-align:right}.admin-nav{position:sticky;top:12px;z-index:10;max-width:1440px;margin:0 auto 20px;display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:7px;border:1px solid var(--line);border-radius:16px;background:rgba(255,253,248,.94);box-shadow:0 8px 24px rgba(27,43,43,.08);backdrop-filter:blur(10px)}.nav-button{min-height:62px;border:0;border-radius:11px;padding:10px 13px;background:transparent;color:var(--muted);text-align:left;cursor:pointer}.nav-button span{display:block;color:var(--ink);font-weight:800}.nav-button small{margin-top:3px}.nav-button.active{background:var(--green);color:#dcefe7}.nav-button.active span,.nav-button.active small{color:#fff}.admin-grid{max-width:1440px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.panel{border:1px solid var(--line);border-radius:20px;padding:24px;background:var(--paper);box-shadow:0 8px 28px rgba(27,43,43,.06)}.wide{grid-column:1/-1}
form{display:grid;gap:14px;margin-top:20px}label{display:grid;gap:7px;color:var(--muted);font-size:13px;font-weight:700}
input,select,textarea{width:100%;border:1px solid #c8cfcb;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}textarea{min-height:86px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(23,108,83,.13)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}fieldset{border:1px solid var(--line);border-radius:12px}legend{padding:0 7px;color:var(--muted);font-size:13px;font-weight:700}.weekday-options{display:flex;gap:9px;flex-wrap:wrap;padding:7px}.weekday-options label,.check-label{display:flex;grid-template-columns:none;align-items:center;gap:7px}.weekday-options input,.check-label input{width:auto}
.duration-inputs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.duration-inputs span{display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px}.duration-inputs small{margin:0}
.period-controls{display:grid;grid-template-columns:200px 200px auto;gap:12px;align-items:end;margin-top:18px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.stats div{padding:17px;border-radius:14px;background:#f5f6f2}.stats strong{display:block;font-size:28px}.stats span{color:var(--muted);font-size:13px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px}.toolbar-buttons{display:flex;gap:9px;flex-wrap:wrap}.form-message{min-height:20px;margin:12px 0 0;color:var(--green);font-weight:650}.error-text{min-height:18px;color:var(--red)}
.table-wrap{overflow-x:auto;margin-top:18px}table{width:100%;border-collapse:collapse;text-align:left}th{color:var(--muted);font-size:11px;letter-spacing:.08em;text-transform:uppercase}th,td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}.period-table{min-height:128px}.period-table td{font-variant-numeric:tabular-nums}.loading-row td{height:72px;color:var(--muted);vertical-align:middle;text-align:center}
.badge{display:inline-block;border-radius:100px;padding:5px 9px;font-size:12px;font-weight:750}.badge.normal,.badge.approved,.badge.absence{background:var(--green-soft);color:var(--green)}.badge.incomplete{background:var(--red-soft);color:var(--red)}.badge.pending,.badge.open{background:var(--amber-soft);color:var(--amber)}.badge.handled,.badge.closed,.badge.neutral{background:#ecefed;color:var(--muted)}
.status-row.incomplete td:first-child{border-left:4px solid var(--red)}.status-row.pending td:first-child{border-left:4px solid var(--amber)}.status-row.approved td:first-child{border-left:4px solid var(--green)}
.unknown-list{margin-top:18px;display:grid;gap:9px}.unknown-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px}.unknown-item strong,.tag-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.info-box{padding:12px;border-radius:10px;background:var(--blue-soft);color:var(--blue)}
.shortfall-box{display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:14px;padding:14px;border:1px solid #dfaaa5;border-radius:12px;background:var(--red-soft)}.shortfall-box strong{color:var(--red)}.shortfall-box label{color:var(--red)}
.system-status{margin:14px 0 0;padding:11px 12px;border-radius:10px;background:#f5f6f2}.compact-form{grid-template-columns:minmax(180px,1fr) auto;align-items:end}.field-suffix{font-weight:500}.backup-actions{margin-top:18px}.backup-list{display:grid;gap:8px;margin-top:12px;max-height:245px;overflow:auto}.backup-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:11px}.backup-item strong{font-size:13px}.backup-item small{font-variant-numeric:tabular-nums}
.schedule-grid{display:grid;gap:7px;padding:8px}.schedule-row{display:grid;grid-template-columns:minmax(110px,1fr) 110px auto 110px;align-items:center;gap:8px}.schedule-row input{padding:8px}.schedule-row.disabled{opacity:.52}.planning-columns,.planning-lists{display:grid;grid-template-columns:1fr 1fr;gap:24px}.planning-form{padding:18px;border:1px solid var(--line);border-radius:14px;background:#faf9f5}.planning-form h3,.planning-lists h3{margin:0}.planning-lists{margin-top:22px}.record-list{display:grid;gap:8px;margin-top:10px}.record-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:11px}.record-item strong{font-size:13px}
.table-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.tvt-balance{display:inline-block;min-width:68px;border-radius:100px;padding:6px 10px;background:var(--blue-soft);color:var(--blue);text-align:center;font-variant-numeric:tabular-nums}
.tvt-balance.negative-balance{background:var(--red-soft);color:var(--red)}
dialog{width:min(620px,calc(100% - 32px));max-height:calc(100vh - 40px);overflow:auto;border:0;border-radius:20px;padding:25px;box-shadow:var(--shadow)}dialog::backdrop{background:rgba(16,25,25,.62);backdrop-filter:blur(4px)}.login-dialog{width:min(420px,calc(100% - 32px))}.employee-detail-dialog{width:min(1100px,calc(100% - 32px))}.icon-button{border:0;background:transparent;font-size:30px;cursor:pointer;color:var(--muted)}
.employee-detail-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.employee-detail-stats>div{padding:16px;border-radius:14px;background:#f5f6f2}.employee-detail-stats .tvt-highlight{background:var(--blue-soft)}.employee-detail-stats strong{display:block;font-size:27px;font-variant-numeric:tabular-nums}.employee-detail-stats span{color:var(--muted);font-size:12px}.employee-profile{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px}.employee-profile>div{display:grid;gap:4px;padding:13px;border:1px solid var(--line);border-radius:12px}.employee-profile span{color:var(--muted);font-size:12px}.detail-section{margin-top:24px}.detail-section h3{margin-bottom:8px}.detail-table{max-height:300px;border:1px solid var(--line);border-radius:12px}.detail-table table{background:#fff}.detail-table th{position:sticky;top:0;background:#f5f6f2;z-index:1}.numeric{font-variant-numeric:tabular-nums}.positive{color:var(--green)}.negative{color:var(--red)}.detail-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}

@media(max-width:800px){.admin-page{padding:15px}.admin-grid{grid-template-columns:1fr}.wide{grid-column:auto}.admin-header,.section-heading,.toolbar{align-items:flex-start;flex-direction:column}.header-actions{flex-wrap:wrap}.admin-nav{position:static;grid-template-columns:1fr 1fr}.nav-button{min-height:54px}.nav-button small{display:none}.period-controls,.form-row,.stats,.compact-form,.planning-columns,.planning-lists,.employee-detail-stats,.employee-profile,.shortfall-box{grid-template-columns:1fr}.toolbar-buttons{width:100%}.toolbar-buttons .button{flex:1}.schedule-row{grid-template-columns:1fr 95px auto 95px}.kiosk-header{align-items:flex-start}.connection{font-size:0;padding:12px}footer span{display:none}footer{justify-content:flex-end}.table-actions{justify-content:flex-start}.detail-actions{flex-direction:column}.detail-actions .button{width:100%}}

.compact-select{display:flex;grid-template-columns:none;align-items:center;gap:8px}.compact-select select{width:auto;min-width:170px;padding:8px 10px}.scan-section{margin:16px 0;padding:14px;border:1px solid var(--line);border-radius:12px;background:#faf9f5}.scan-section h3{margin:0}.ignored-record{opacity:.62;background:#f1f1ef}.break-rules-list{display:grid;gap:10px}.break-rule-row{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(170px,1fr) minmax(140px,1fr) minmax(120px,.8fr) minmax(170px,1fr) minmax(110px,.7fr) auto auto;gap:10px;align-items:end;padding:14px;border:1px solid var(--line);border-radius:12px;background:#faf9f5}.break-rule-row input,.break-rule-row select{padding:9px}.break-rule-row .check-label{padding-bottom:11px}.break-rule-row .remove-break-rule{margin-bottom:1px}
@media(max-width:1100px){.break-rule-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.break-rule-row{grid-template-columns:1fr}.compact-select{width:100%;justify-content:space-between}.compact-select select{flex:1}}
.employee-detail-stats .vacation-highlight{background:var(--green-soft)}
.access-columns,.balance-forms{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:18px}.balance-forms form{margin-top:0}.balance-forms h4{margin:0}.record-item .badge{margin-left:6px}
@media(max-width:800px){.access-columns,.balance-forms{grid-template-columns:1fr}}

.absence-calendar{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));gap:7px;margin-top:18px;overflow-x:auto}.calendar-day{min-height:112px;padding:10px;border:1px solid var(--line);border-radius:11px;background:#fff}.calendar-day.weekend{background:#f4f4f1}.calendar-day>div:first-child{display:flex;justify-content:space-between;margin-bottom:8px;text-transform:capitalize}.calendar-day>div:first-child span{color:var(--muted);font-size:12px}.calendar-entry{display:block;margin-top:5px;border-radius:7px;padding:6px 7px;font-size:11px;line-height:1.3}.calendar-entry.approved{background:var(--green-soft);color:var(--green)}.calendar-entry.planned{background:var(--blue-soft);color:var(--blue)}.calendar-entry.requested{background:var(--amber-soft);color:var(--amber)}.warning-panel .record-list{grid-template-columns:repeat(2,minmax(0,1fr))}.request-item{border-left:4px solid var(--amber)}.self-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.self-grid .wide{grid-column:1/-1}.self-stats{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.absence-calendar{grid-template-columns:repeat(7,minmax(150px,1fr))}.warning-panel .record-list{grid-template-columns:1fr}.self-grid{grid-template-columns:1fr}.self-grid .wide{grid-column:auto}.self-stats{grid-template-columns:repeat(2,1fr)}}

@media (orientation:landscape) and (max-height:800px){
  .kiosk-shell{grid-template-columns:minmax(300px,.8fr) minmax(560px,1.4fr);grid-template-rows:auto 1fr auto;gap:12px 28px;padding:20px 30px}
  .kiosk-header,.kiosk-shell footer{grid-column:1/-1}.clock-panel{align-self:center}.clock{font-size:clamp(82px,10vw,128px)}.date{font-size:clamp(18px,2.1vw,26px)}
  .scan-card{grid-column:2;grid-row:2;min-height:0;height:100%;max-height:500px;padding:22px;border-radius:25px}.scan-icon{width:70px;height:70px;margin-bottom:10px}.scan-icon .screen-icon{width:45px;height:45px}.scan-kicker{font-size:clamp(20px,2.2vw,29px);margin-bottom:7px}.scan-card h2{font-size:clamp(38px,4.3vw,58px)}.scan-card>p:last-child{font-size:clamp(20px,2.3vw,30px);margin-top:10px}.scan-card.checkout>p:last-child{font-size:clamp(25px,2.8vw,34px)}
}

.calendar-controls{display:grid;grid-template-columns:180px 180px auto auto auto auto;gap:9px;align-items:end;margin-top:18px}.calendar-controls .button{min-height:42px}
.tvt-equation{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px 24px;max-width:650px;font-variant-numeric:tabular-nums}.tvt-equation dt,.tvt-equation dd{margin:0;padding:4px 0}.tvt-equation dd{text-align:right;font-weight:700}.tvt-equation dt:nth-of-type(6),.tvt-equation dd:nth-of-type(6),.tvt-equation dt:last-of-type,.tvt-equation dd:last-of-type{border-top:1px solid #b6c9c1;padding-top:10px;font-weight:700}
.self-grid>.panel{min-width:0}.self-grid .table-wrap{max-width:100%}.self-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.self-grid{grid-template-columns:minmax(0,1fr)}.self-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.self-grid input,.self-grid select{min-width:0;max-width:100%}}
@media(max-width:1100px){.calendar-controls{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:800px){.calendar-controls{grid-template-columns:1fr 1fr}}
