/* ===== Key Card Control — tema luxury (gelap & terang) ===== */
:root{--serif:'Cormorant Garamond','Playfair Display',Georgia,serif;--sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
:root,:root[data-theme="dark"]{color-scheme:dark;
--bg:#0d0c0b;--glow:#1d1810;--side-a:#14120f;--side-b:#0f0e0c;--card-a:#1b1814;--card-b:#151310;--panel:#171512;--panel2:#1e1b17;--field:#0f0e0c;
--line:#2c2822;--line2:#3a352c;--text:#d9d2c3;--head:#f2ebdb;--muted:#8f8676;
--gold:#c8a95f;--gold2:#e8d5a4;--ink:#1a1409;--btn-a:#d9bd78;--btn-b:#a98b45;--hl:#241e12;--shadow:0 10px 30px rgba(0,0,0,.28);
--hover:rgba(200,169,95,.05);--tot:rgba(200,169,95,.08);--navon:rgba(200,169,95,.14);--overlay:rgba(15,14,12,.92);
--ok:#86ad90;--ok-bg:#1a231c;--ok-bd:#3b5242;--bad:#d08088;--bad-bg:#271a1c;--bad-bd:#5a3a3e;
--plus:#dcb85f;--plus-bg:#262014;--plus-bd:#5b4d28;--warn:#d68e5c;--warn-bg:#261b14;--warn-bd:#5a4030;
--part:#9aa7b8;--part-bg:#181c22;--part-bd:#3d4654;--idle:#9b948a;--idle-bg:#1c1a17;--idle-bd:#3a352c;
--cream-bg:#2a251a;--cream-bd:#4d4228;--sage-bg:#17231a;--sage-bd:#38523d;--blue-bg:#141c28;--blue-bd:#344a66}
:root[data-theme="light"]{color-scheme:light;
--bg:#f5f1e8;--glow:#fbf6ea;--side-a:#fffdf8;--side-b:#faf6ec;--card-a:#fffefb;--card-b:#fffdf8;--panel:#f7f2e7;--panel2:#efe8d8;--field:#ffffff;
--line:#e7dfcd;--line2:#d6cbb2;--text:#4a4437;--head:#1f1a10;--muted:#7d7564;
--gold:#8f6f22;--gold2:#7a5a12;--ink:#2a1f08;--btn-a:#dcbf79;--btn-b:#b8964b;--hl:#fbf3dc;--shadow:0 8px 24px rgba(120,95,40,.10);
--hover:rgba(160,125,45,.07);--tot:rgba(160,125,45,.10);--navon:rgba(166,132,50,.16);--overlay:rgba(255,253,248,.94);
--ok:#33704a;--ok-bg:#e6f2e9;--ok-bd:#b4d3bd;--bad:#b0425a;--bad-bg:#f9e6e9;--bad-bd:#e6b8c0;
--plus:#94700c;--plus-bg:#f8efd3;--plus-bd:#e2cf93;--warn:#b0602a;--warn-bg:#f9e9dc;--warn-bd:#e8c3a4;
--part:#56677f;--part-bg:#e8edf4;--part-bd:#c3cfdd;--idle:#7b7467;--idle-bg:#efeadf;--idle-bd:#dbd3c1;
--cream-bg:#fcf4dd;--cream-bd:#e3d198;--sage-bg:#e8f4eb;--sage-bd:#b5d5bd;--blue-bg:#e7eff9;--blue-bd:#b5c9e6}

*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:radial-gradient(1200px 600px at 80% -10%,var(--glow) 0,transparent 60%),var(--bg);color:var(--text);font:14px/1.55 var(--sans);min-height:100vh;-webkit-font-smoothing:antialiased}
a{color:var(--gold2);text-decoration:none}a:hover{color:var(--head)}
h1,h2,h3{font-family:var(--serif);color:var(--head);font-weight:600;margin:0;letter-spacing:.01em}
h1{font-size:34px;line-height:1.1}h2{font-size:26px}h3{font-size:20px}
.eyebrow{margin:0 0 4px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.sub{margin:6px 0 0;color:var(--muted)}.ic{width:18px;height:18px;flex:none}
.l-short{display:none}.mbar{display:none}

/* ===== sidebar & layout ===== */
.side{position:fixed;inset:0 auto 0 0;width:240px;background:linear-gradient(180deg,var(--side-a),var(--side-b));border-right:1px solid var(--line);display:flex;flex-direction:column;padding:26px 16px;z-index:10}
.brand{display:flex;align-items:center;gap:12px;padding:0 10px 24px;border-bottom:1px solid var(--line);margin-bottom:18px}
.brand b{display:block;font-family:var(--serif);font-size:21px;letter-spacing:.22em;color:var(--head)}.brand small{color:var(--gold);font-size:10px;letter-spacing:.24em;text-transform:uppercase}
.mark{width:38px;height:38px;border:1px solid var(--gold);color:var(--gold);display:grid;place-items:center;border-radius:50%;font-size:18px;flex:none}.mark.big{width:64px;height:64px;font-size:28px;margin:0 auto 14px}.mark.sm{width:30px;height:30px;font-size:14px}
.side nav{display:flex;flex-direction:column;gap:4px;flex:1}
.side nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;color:var(--muted);border:1px solid transparent;transition:.2s}
.side nav a:hover{color:var(--head);background:var(--panel)}
.side nav a.on{color:var(--gold2);background:linear-gradient(90deg,var(--navon),transparent);border-color:var(--line2)}
.side-foot{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:2px}.hotel{font-family:var(--serif);font-size:17px;color:var(--head);padding:0 10px 8px}
.logout,.theme-row{display:flex;gap:10px;align-items:center;padding:8px 10px;color:var(--muted);font-size:13px;border-radius:8px;background:none;border:0;cursor:pointer;font-family:inherit;width:100%;text-align:left}
.logout:hover,.theme-row:hover{color:var(--head);background:var(--panel)}
.main{margin-left:240px;padding:34px 40px 60px;max-width:1500px}
.top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:26px;padding-bottom:20px;border-bottom:1px solid var(--line);position:relative}
.top::after{content:"";position:absolute;left:0;bottom:-1px;width:90px;height:1px;background:var(--gold)}
.top-r{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* tema: ikon & label tombol */
.ibtn{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:10px;border:1px solid var(--line2);background:transparent;color:var(--gold2);cursor:pointer;padding:0}.ibtn:hover{border-color:var(--gold);color:var(--head)}
.i-sun,.i-moon,.to-light,.to-dark{display:none}
:root[data-theme="dark"] .i-sun,:root[data-theme="dark"] .to-light,:root[data-theme="light"] .i-moon,:root[data-theme="light"] .to-dark{display:inline-flex}
.i-sun,.i-moon{align-items:center}

/* ===== cards & KPI ===== */
.card{background:linear-gradient(180deg,var(--card-a),var(--card-b));border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow);margin-bottom:22px}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}.two>.card,.two>.stack{margin-bottom:22px}.stack .card:last-child{margin-bottom:0}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.kpis.three{grid-template-columns:repeat(3,1fr)}
.kpi{background:linear-gradient(180deg,var(--card-a),var(--card-b));border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow)}
.kpi.hl{border-color:var(--gold);background:linear-gradient(160deg,var(--hl),var(--card-b))}
.kpi label{display:block;margin:0;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);line-height:1.4}
.kpi b{display:block;font-family:var(--serif);font-size:42px;line-height:1.1;color:var(--head);margin:6px 0 2px;font-weight:600;font-variant-numeric:tabular-nums}.kpi small{color:var(--muted);font-size:12px}
.neg{color:var(--bad)!important}.pos{color:var(--plus)!important}.zero{color:var(--ok)}.muted{color:var(--muted)}
.today{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.chips{display:flex;gap:10px;flex-wrap:wrap}.chip{display:flex;gap:10px;align-items:center;padding:9px 14px;border:1px solid var(--line2);border-radius:12px;background:var(--panel)}.chip span{color:var(--head)}.chip em{font-style:normal;font-weight:600}

/* ===== badge, legend, kalender ===== */
.badge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.04em;border:1px solid;white-space:nowrap}
.badge.ok{color:var(--ok);border-color:var(--ok-bd);background:var(--ok-bg)}.badge.bad{color:var(--bad);border-color:var(--bad-bd);background:var(--bad-bg)}
.badge.plus{color:var(--plus);border-color:var(--plus-bd);background:var(--plus-bg)}.badge.warn{color:var(--warn);border-color:var(--warn-bd);background:var(--warn-bg)}
.badge.idle{color:var(--idle);border-color:var(--idle-bd);background:var(--idle-bg)}.badge.part{color:var(--part);border-color:var(--part-bd);background:var(--part-bg)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:var(--idle-bd)}
.dot.ok{background:var(--ok)}.dot.bad{background:var(--bad)}.dot.plus{background:var(--plus)}.dot.warn{background:var(--warn)}.dot.part{background:var(--part)}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-h{text-align:center;font-size:10.5px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;padding-bottom:4px}
.cal-d{min-height:58px;border-radius:10px;border:1px solid var(--line);background:var(--panel);padding:6px 8px;display:flex;flex-direction:column;justify-content:space-between;color:var(--text);transition:.15s}
.cal-d:hover{transform:translateY(-2px);border-color:var(--gold)}.cal-d b{font-weight:500;font-size:13px}.cal-d span{font-size:12px;font-weight:600;text-align:right;min-height:16px}
.cal-d.ok{background:var(--ok-bg);border-color:var(--ok-bd);color:var(--ok)}.cal-d.bad{background:var(--bad-bg);border-color:var(--bad-bd);color:var(--bad)}.cal-d.plus{background:var(--plus-bg);border-color:var(--plus-bd);color:var(--plus)}
.cal-d.part{background:var(--part-bg);border-color:var(--part-bd);color:var(--part)}.cal-d.warn{background:var(--warn-bg);border-color:var(--warn-bd);color:var(--warn)}.cal-d.idle{color:var(--muted)}
.cal-d.today{box-shadow:0 0 0 2px var(--gold)}

/* ===== grafik ===== */
.chart{width:100%;height:200px;display:block}.chart .axis{stroke:var(--line2);stroke-width:1}.chart .axis.dash{stroke-dasharray:4 4}.chart .lbl{fill:var(--muted);font-size:10px;font-family:var(--sans)}
.bar.bad{fill:var(--bad)}.bar.plus{fill:var(--plus)}.bar.ok{fill:var(--ok)}.chart .ln{fill:none;stroke:var(--gold);stroke-width:2}.chart .pt{fill:var(--card-a);stroke:var(--gold);stroke-width:2}
.hbar{display:grid;grid-template-columns:90px 1fr 60px;align-items:center;gap:14px;margin:10px 0}.hbar>div{height:8px;background:var(--panel2);border-radius:9px;overflow:hidden}.hbar i{display:block;height:100%;background:linear-gradient(90deg,var(--btn-b),var(--btn-a))}.hbar b{text-align:right;color:var(--head)}

/* ===== tabel ===== */
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table.lux{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.lux th{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line2);white-space:nowrap;font-weight:600}
.lux td{padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.lux tr:hover td{background:var(--hover)}
.r{text-align:right!important}.lux tr.tot td{font-weight:600;color:var(--head);border-top:1px solid var(--gold);border-bottom:0;background:var(--tot)}.lux tr.dim td{color:var(--muted);opacity:.75}
.empty{text-align:center;color:var(--muted);padding:28px}.note{color:var(--muted);font-size:12.5px;margin:12px 0 0}

/* ===== form ===== */
label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted);margin-bottom:14px}
.lt{display:block;line-height:1.35;color:var(--text);font-weight:500}.lt small{display:block;color:var(--muted);font-weight:400;font-size:11px;margin-top:1px}label>small{opacity:.8}
input,select{width:100%;margin:0;background:var(--field);border:1px solid var(--line2);color:var(--head);border-radius:10px;padding:10px 12px;font:inherit;min-height:42px;outline:none;transition:.15s}
label>input{margin-top:auto}
input:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 22%,transparent)}input::placeholder{color:var(--muted);opacity:.6}
select{width:auto;padding-right:28px}.card input[type=number]{font-variant-numeric:tabular-nums}
input[type=number]{-moz-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cream input{background:var(--cream-bg);border-color:var(--cream-bd)}.sage input{background:var(--sage-bg);border-color:var(--sage-bd)}.blue input{background:var(--blue-bg);border-color:var(--blue-bd)}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.f2>label{margin-bottom:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:10px 20px;min-height:40px;font:600 13px var(--sans);letter-spacing:.04em;cursor:pointer;border:1px solid var(--line2);background:transparent;color:var(--gold2);transition:.2s}
.btn:hover{border-color:var(--gold);color:var(--head)}.btn.sm{padding:6px 12px;min-height:36px;font-size:12px}.btn.gold{background:linear-gradient(135deg,var(--btn-a),var(--btn-b));color:var(--ink);border-color:transparent}.btn.gold:hover{filter:brightness(1.07);color:var(--ink)}
.mnav,.dnav{display:flex;gap:8px;align-items:center}.dnav form{margin:0}.yr{font-family:var(--serif);font-size:22px;color:var(--head);padding:0 6px}
.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:14px 18px}.filters input[type=search]{width:240px}
.flash{padding:12px 16px;border-radius:12px;margin-bottom:20px;border:1px solid var(--ok-bd);background:var(--ok-bg);color:var(--ok)}.flash.bad{border-color:var(--bad-bd);background:var(--bad-bg);color:var(--bad)}

/* ===== input harian ===== */
.strip{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;margin-bottom:16px}.strip a{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:9px;border:1px solid var(--line);font-size:12px;color:var(--muted)}
.strip a.ok{color:var(--ok);border-color:var(--ok-bd)}.strip a.bad{color:var(--bad);border-color:var(--bad-bd)}.strip a.plus{color:var(--plus);border-color:var(--plus-bd)}.strip a.part{color:var(--part);border-color:var(--part-bd)}
.strip a.on{background:var(--gold);color:var(--ink);border-color:var(--gold);font-weight:700}
.shifts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}.shift{margin:0}.shift.focus{border-color:var(--gold)}
.shift>label:last-child{margin-bottom:0}
.calc{background:var(--field);border:1px dashed var(--line2);border-radius:12px;padding:6px 14px;margin:4px 0 14px}
.calc div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:12.5px}.calc div:last-child{border:0}
.calc b{color:var(--head);font-weight:600;font-variant-numeric:tabular-nums}.calc .big b{font-family:var(--serif);font-size:28px;line-height:1}
.savebar{position:sticky;bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;padding:14px 20px;background:var(--overlay);backdrop-filter:blur(10px);border:1px solid var(--line2);border-radius:14px;box-shadow:var(--shadow);z-index:5}.hint{color:var(--muted);font-size:12px}
.months{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:6px}.guide{margin:0;padding-left:18px;color:var(--text)}.guide li{margin:6px 0}

/* ===== login ===== */
body.login{display:grid;place-items:center;padding:20px}.login .theme-corner{position:fixed;top:16px;right:16px}
.login-card{width:100%;max-width:380px;background:linear-gradient(180deg,var(--card-a),var(--card-b));border:1px solid var(--line2);border-radius:20px;padding:40px 34px;text-align:center;box-shadow:var(--shadow)}
.login-card h1{letter-spacing:.3em;font-size:30px}.login-card label{text-align:left}.login-card .btn{width:100%;margin-top:8px;padding:13px}.login-card .eyebrow{margin-bottom:26px}

/* ===== responsif ===== */
@media(max-width:1100px){.shifts{grid-template-columns:1fr}.two{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}.months{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){
  .mbar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--overlay);backdrop-filter:blur(10px);z-index:9}
  .mbar .bs{display:flex;align-items:center;gap:10px;font-family:var(--serif);letter-spacing:.2em;font-size:18px;color:var(--head);font-weight:700}.mbar-r{display:flex;gap:8px}
  .side{inset:auto 0 0 0;width:auto;flex-direction:row;padding:6px 6px calc(6px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);background:var(--side-b)}
  .brand,.side-foot,.l-full{display:none}.l-short{display:inline}
  .side nav{flex-direction:row;width:100%;gap:2px}.side nav a{flex:1;flex-direction:column;gap:3px;padding:8px 2px;font-size:10px;text-align:center;border-radius:10px;min-width:0}
  .main{margin:0;padding:20px 16px calc(96px + env(safe-area-inset-bottom))}h1{font-size:28px}.top{margin-bottom:20px;padding-bottom:16px}
  .kpi b{font-size:34px}.months{grid-template-columns:repeat(2,1fr)}.savebar{bottom:calc(68px + env(safe-area-inset-bottom))}
  input,select{font-size:16px}.top-r{width:100%}
}
@media(max-width:520px){.kpis,.kpis.three{grid-template-columns:1fr}.cal{gap:4px}.cal-d{min-height:50px;padding:4px 5px}.cal-d span{font-size:10.5px}.card{padding:18px}.savebar{flex-direction:column;align-items:stretch}.filters input[type=search]{width:100%}.hbar{grid-template-columns:70px 1fr 50px}}

/* ===== cetak (selalu terang) ===== */
@media print{body{background:#fff}.side,.mbar,.no-print,.top-r,.savebar,.btn,.strip{display:none!important}.main{margin:0;padding:0}.card,.kpi{box-shadow:none;break-inside:avoid}.top::after{display:none}}