:root{--navy:#0b2454;--blue:#1768e6;--ink:#15213c;--muted:#6b7890;--line:#e5eaf2;--bg:#f7f9fc;--white:#fff;--success:#147a4f;--danger:#ae2d2d}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--ink)}a{text-decoration:none;color:inherit}img{max-width:100%}
.container{width:min(1180px,calc(100% - 36px));margin:auto}.topbar{height:74px;background:#ffffffee;backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}.nav{height:100%;display:flex;align-items:center;justify-content:space-between}.brandrow{display:flex;align-items:center;gap:12px}.brandlogo{width:46px;height:46px;object-fit:contain}.brandtext{font-weight:900;letter-spacing:-.03em;color:var(--navy)}.brandtext span{color:var(--blue)}
.navlinks{display:flex;gap:22px;align-items:center;color:#45516a;font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:11px;padding:11px 16px;font:inherit;font-weight:800;cursor:pointer;transition:.15s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--blue);color:white}.btn-secondary{background:#eef4ff;color:#1559c1}.btn-ghost{background:white;border:1px solid var(--line)}.btn-danger{background:#fff0f0;color:#a62b2b}
.hero{padding:82px 0 66px;background:linear-gradient(180deg,#fff 0%,#f4f8ff 100%)}.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:52px;align-items:center}.kicker{font-size:12px;font-weight:900;letter-spacing:.16em;color:var(--blue);text-transform:uppercase}.hero h1{font-size:clamp(44px,6vw,72px);line-height:.99;letter-spacing:-.055em;margin:14px 0 22px;color:var(--navy)}.hero p{font-size:18px;line-height:1.7;color:var(--muted)}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:27px}.hero-panel{background:white;border:1px solid var(--line);border-radius:24px;padding:30px;box-shadow:0 22px 55px #0b245414}.hero-logo{width:min(340px,80%);display:block;margin:0 auto 20px}.hours-box{background:var(--navy);color:white;border-radius:17px;padding:20px;margin-top:18px}.hours-box strong{font-size:34px;display:block}.hours-box span{color:#cdd9ef}
.section{padding:68px 0}.section h2{font-size:36px;letter-spacing:-.04em;margin:8px 0}.muted{color:var(--muted)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{background:white;border:1px solid var(--line);border-radius:17px;padding:20px}.card h3{margin:12px 0 7px}.card p{font-size:14px;line-height:1.6;color:var(--muted)}.service-icon{font-size:28px}.service-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.service-poster{background:white;border:1px solid var(--line);border-radius:18px;overflow:hidden}.service-poster img{display:block;width:100%;height:auto}.service-poster .caption{padding:15px 18px;font-weight:800;color:var(--navy)}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.info-box{background:white;border:1px solid var(--line);border-radius:18px;padding:25px}.info-box ul{line-height:1.9;color:#55617a;padding-left:20px}.footer{background:#071b42;color:white;padding:40px 0}.footer p{color:#c4cee0}.footer-grid{display:grid;grid-template-columns:2fr 1fr;gap:30px}
.auth{min-height:100vh;display:grid;place-items:center;padding:22px;background:linear-gradient(145deg,#f3f7ff,#fff)}.authbox{width:min(430px,100%);background:white;border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:0 18px 55px #10285012}.authlogo{display:block;width:180px;margin:0 auto 20px}.field{margin:14px 0}.field label{display:block;font-weight:800;font-size:14px;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;border:1px solid #d8dfeb;border-radius:10px;padding:12px 13px;font:inherit;background:white;color:var(--ink)}.field textarea{min-height:90px}.hint{font-size:12px;color:var(--muted);margin-top:5px}.flash{padding:12px 14px;border-radius:10px;margin:14px 0;font-size:14px}.flash.success{background:#eafaf1;color:var(--success)}.flash.error{background:#fff0f0;color:#972929}
.layout{display:grid;grid-template-columns:235px 1fr;min-height:100vh}.sidebar{background:#091f4e;color:white;padding:22px 15px;position:sticky;top:0;height:100vh}.sidelogo{width:135px;background:white;border-radius:12px;padding:8px;display:block;margin:0 auto 12px}.userchip{padding:10px 11px;color:#bdcae1;font-size:13px}.sidebar a{display:flex;padding:11px 12px;border-radius:9px;margin:3px 0;color:#e7edf8;font-weight:650}.sidebar a:hover{background:#143a7c}.content{padding:30px;min-width:0}.pagehead{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:22px}.pagehead h1{margin:0;font-size:32px;letter-spacing:-.035em}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat{background:white;border:1px solid var(--line);border-radius:15px;padding:18px}.stat .label{font-size:13px;color:var(--muted);font-weight:750}.stat strong{display:block;font-size:27px;margin-top:6px}.panel{background:white;border:1px solid var(--line);border-radius:16px;padding:20px;margin-top:18px;overflow:auto}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:15px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}
table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:12px;border-bottom:1px solid #edf0f5;font-size:14px}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#667188;background:#fafbfc}.actions{display:flex;gap:6px;flex-wrap:wrap}.pill{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eef4ff;color:#1859b6;font-size:12px;font-weight:800}.pill.void{background:#fff0f0;color:#a72a2a}
.scanner-drop{border:2px dashed #c7d2e4;border-radius:18px;padding:28px;text-align:center;background:#fbfdff;transition:.2s}.scanner-drop.drag{border-color:var(--blue);background:#f0f6ff}.scanner-drop input{display:none}.scan-preview{max-height:430px;border-radius:14px;margin:15px auto 0;display:none}.progress{height:9px;background:#eef2f8;border-radius:999px;overflow:hidden;margin-top:14px}.progress span{display:block;height:100%;width:0;background:var(--blue);transition:.2s}.scan-status{font-size:13px;color:var(--muted);margin-top:10px}.detected{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detected .field{margin:0}.quality{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef7ff;color:#165ca7;font-size:12px;font-weight:800}
.balance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.balance{background:white;border:1px solid var(--line);border-radius:14px;padding:18px}.balance strong{display:block;font-size:24px;margin-top:7px}.subtle{background:#f7f9fd;border:1px solid var(--line);border-radius:12px;padding:13px;color:#5f6c82;font-size:13px}.receipt{width:370px;max-width:100%;margin:24px auto;background:white;padding:22px;font-family:"Courier New",monospace;color:#000}.receipt h2,.center{text-align:center}.receipt hr{border:0;border-top:1px dashed #111}.receipt-row{display:flex;justify-content:space-between;gap:14px}
@media(max-width:980px){.hero-grid,.info-grid,.split{grid-template-columns:1fr}.cards,.stats,.balance-grid{grid-template-columns:repeat(2,1fr)}.service-gallery{grid-template-columns:1fr}.layout{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.grid3{grid-template-columns:1fr}.content{padding:20px}.navlinks a:not(.btn){display:none}}
@media(max-width:600px){.container{width:min(100% - 26px,1180px)}.topbar{height:68px}.brandlogo{width:40px;height:40px}.brandtext{font-size:14px}.hero{padding:52px 0}.hero h1{font-size:44px}.hero p{font-size:16px}.hero-panel{padding:22px}.section{padding:48px 0}.section h2{font-size:30px}.cards,.stats,.balance-grid,.grid2,.detected{grid-template-columns:1fr}.content{padding:14px}.pagehead{align-items:flex-start;flex-direction:column}.sidebar{padding:14px}.sidelogo{width:110px}.service-gallery{gap:12px}.service-poster{border-radius:14px}}
@media print{.no-print,.sidebar{display:none!important}.layout{display:block}.content{padding:0}.receipt{margin:0 auto}}
/* V3.1 mobile hardening: also applies when a mobile browser requests a wide/desktop viewport. */
html.mobile-device,html.mobile-device body{width:100%;max-width:100%;overflow-x:hidden}
html.mobile-device .container{width:100%;max-width:none;padding-left:16px;padding-right:16px;margin:0}
html.mobile-device .topbar{height:64px}
html.mobile-device .nav{gap:10px}
html.mobile-device .brandrow{min-width:0;gap:8px}
html.mobile-device .brandlogo{width:38px;height:38px;flex:0 0 38px}
html.mobile-device .brandtext{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.mobile-device .navlinks{margin-left:auto;gap:8px}
html.mobile-device .navlinks>a:not(.btn){display:none!important}
html.mobile-device .navlinks .btn{padding:9px 11px;font-size:12px;white-space:nowrap}
html.mobile-device .hero{padding:34px 0 38px}
html.mobile-device .hero-grid{display:block!important}
html.mobile-device .hero-grid>div:first-child{margin-bottom:22px}
html.mobile-device .hero h1{font-size:38px!important;line-height:1.02;margin:10px 0 16px;letter-spacing:-.045em}
html.mobile-device .hero p{font-size:16px;line-height:1.55}
html.mobile-device .hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}
html.mobile-device .hero-actions .btn{width:100%;padding:12px 10px}
html.mobile-device .hero-panel{padding:18px;border-radius:18px}
html.mobile-device .hero-logo{width:min(260px,78%);margin-bottom:12px}
html.mobile-device .hours-box{padding:16px;margin-top:10px}
html.mobile-device .hours-box strong{font-size:25px;line-height:1.2}
html.mobile-device .section{padding:38px 0}
html.mobile-device .section-head{display:block;margin-bottom:18px}
html.mobile-device .section h2{font-size:28px;line-height:1.1}
html.mobile-device .cards,html.mobile-device .stats,html.mobile-device .balance-grid,html.mobile-device .grid2,html.mobile-device .grid3,html.mobile-device .split,html.mobile-device .detected,html.mobile-device .info-grid,html.mobile-device .service-gallery{display:grid!important;grid-template-columns:1fr!important;gap:12px}
html.mobile-device .card{padding:17px}
html.mobile-device .service-poster{border-radius:14px}
html.mobile-device .service-poster .caption{padding:12px 14px}
html.mobile-device .footer-grid{grid-template-columns:1fr!important}
html.mobile-device .auth{padding:14px;min-height:100svh}
html.mobile-device .authbox{width:100%;max-width:430px;padding:23px 18px;border-radius:17px}
html.mobile-device .authlogo{width:155px}
html.mobile-device .layout{display:block!important;width:100%;min-width:0}
html.mobile-device .sidebar{position:relative!important;height:auto!important;width:100%!important;padding:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
html.mobile-device .sidebar .sidelogo{grid-column:1/-1;width:100px;margin:0 auto 6px}
html.mobile-device .sidebar .userchip{grid-column:1/-1;text-align:center;padding:4px 8px 8px}
html.mobile-device .sidebar a{margin:0;padding:10px 8px;justify-content:center;text-align:center;font-size:13px;background:#0d2a62}
html.mobile-device .content{padding:14px!important;width:100%;min-width:0;overflow:hidden}
html.mobile-device .pagehead{display:block!important;margin-bottom:16px}
html.mobile-device .pagehead h1{font-size:27px;margin-bottom:6px}
html.mobile-device .pagehead>.btn{margin-top:10px;width:100%}
html.mobile-device .panel{padding:14px;border-radius:14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
html.mobile-device .stat{padding:15px}
html.mobile-device .stat strong{font-size:23px}
html.mobile-device .field input,html.mobile-device .field select,html.mobile-device .field textarea{font-size:16px;min-height:46px}
html.mobile-device .btn{min-height:44px}
html.mobile-device table{min-width:680px;font-size:13px}
html.mobile-device .scanner-drop{padding:20px 14px}
html.mobile-device .scan-preview{max-height:360px}
html.mobile-device .receipt{width:100%;padding:15px;margin:10px auto}

/* ================= V3.2 STAFF APP UI ================= */
:root{
  --app-bg:#070b19;--app-panel:#111a31;--app-panel2:#0d162b;--app-line:#243352;
  --app-text:#f5f7fb;--app-muted:#8794ad;--app-green:#34d77b;--app-red:#ff6b78;
  --app-blue:#4b93ff;--app-yellow:#f7cc45;
}
body.staff-app{background:var(--app-bg);color:var(--app-text);min-height:100vh}
.staff-app .layout{display:block;min-height:100vh}
.app-sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;background:#0a1022;border-right:1px solid #1e2944;padding:20px 15px;z-index:80;display:flex;flex-direction:column}
.app-sidebar-brand{display:flex;align-items:center;gap:11px;padding:4px 8px 18px}
.app-sidebar-brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:10px;padding:4px}
.app-sidebar-brand strong{display:block;font-size:18px;line-height:1}.app-sidebar-brand span{display:block;font-size:11px;color:var(--app-muted);margin-top:5px;text-transform:uppercase;letter-spacing:.12em}
.app-user{display:flex;align-items:center;gap:10px;padding:13px;margin-bottom:14px;background:#0e1830;border:1px solid #1f3153;border-radius:14px}
.avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#163c75;color:#9cc8ff;font-weight:800}.avatar.small{width:36px;height:36px}
.app-user strong{display:block;font-size:14px}.app-user span{display:block;font-size:12px;color:var(--app-muted);margin-top:3px}
.app-nav{display:grid;gap:4px}.app-nav a,.app-sidebar-foot a{display:flex;gap:11px;align-items:center;padding:12px 13px;border-radius:11px;color:#c9d2e5;font-weight:650}.app-nav a:hover,.app-nav a.active{background:#142342;color:#fff}
.app-sidebar-foot{margin-top:auto;border-top:1px solid #1c2943;padding-top:10px}
.app-topbar{position:fixed;left:250px;right:0;top:0;height:72px;background:#090e1fdd;backdrop-filter:blur(14px);border-bottom:1px solid #1e2944;display:flex;align-items:center;gap:16px;padding:0 28px;z-index:70}
.icon-btn{border:0;background:transparent;color:#b8c4d9;font-size:23px;cursor:pointer;display:none}
.app-search{display:flex;align-items:center;gap:9px;width:min(420px,48vw);background:#0f1629;border:1px solid #263453;border-radius:12px;padding:0 13px}
.app-search input{width:100%;height:42px;background:transparent;border:0;outline:0;color:#eef3fb;font:inherit}.app-search input::placeholder{color:#6f7d97}
.app-top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.office-chip{font-size:12px;color:#9fb0ca;border:1px solid #273553;background:#10182c;border-radius:999px;padding:7px 10px}
.staff-app .content{margin-left:250px;padding:100px 30px 40px;min-height:100vh;max-width:1600px}
.staff-app .pagehead h1,.staff-app h1,.staff-app h2,.staff-app h3{color:var(--app-text)}
.staff-app .muted,.staff-app .hint{color:var(--app-muted)}
.staff-app .kicker{color:#6ca8ff}
.staff-app .panel,.staff-app .stat,.staff-app .balance{background:var(--app-panel);border-color:var(--app-line);box-shadow:none}
.staff-app .stat{min-height:124px}.staff-app .stat .label{color:#9aa8c1;text-transform:uppercase;letter-spacing:.06em}.staff-app .stat strong{color:#fff;font-size:30px}
.staff-app .stat.green{border-color:#195f49}.staff-app .stat.green strong{color:var(--app-green)}
.staff-app .stat.blue{border-color:#224a7d}.staff-app .stat.blue strong{color:#6ba9ff}
.staff-app .stat.yellow{border-color:#5b4d20}.staff-app .stat.yellow strong{color:var(--app-yellow)}
.staff-app .field label{color:#dce3ef}.staff-app .field input,.staff-app .field select,.staff-app .field textarea{background:#0c1427;color:#f5f7fb;border-color:#293957}.staff-app .field input::placeholder,.staff-app textarea::placeholder{color:#66748e}
.staff-app .btn-primary{background:#2b79f6}.staff-app .btn-secondary{background:#15284b;color:#82b6ff}.staff-app .btn-ghost{background:#0d1629;border-color:#2c3c5e;color:#dce6f8}.staff-app .btn-danger{background:#3b1823;color:#ff8290}
.staff-app table{color:#eef3fb}.staff-app th{background:#0c1427;color:#8493ad;border-color:#223150}.staff-app td{border-color:#1d2943}
.staff-app .receipt{background:white;color:#000}
.mobile-bottom-nav{display:none}
.staff-app .quick-actions{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 22px}.staff-app .quick-actions .btn{min-width:180px}
.tx-list{display:grid}.tx-row{display:grid;grid-template-columns:56px 1fr auto;gap:14px;align-items:center;padding:15px 0;border-bottom:1px solid #22304d}.tx-row:last-child{border-bottom:0}.tx-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#113b32;color:var(--app-green);font-size:22px}.tx-row.out .tx-icon{background:#47222d;color:var(--app-red)}.tx-main strong{display:block;font-size:16px}.tx-main span{display:block;color:var(--app-muted);font-size:13px;margin-top:3px}.tx-amount{text-align:right}.tx-amount strong{display:block;color:var(--app-green);font-size:17px}.tx-row.out .tx-amount strong{color:var(--app-red)}.tx-amount span{font-size:12px;color:var(--app-muted)}
.scanner-inline{background:#0d1629;border:1px solid #2a3b5e;border-radius:18px;padding:18px;margin-bottom:18px}
.scanner-inline-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:14px}.scanner-inline-head h3{margin:0}.scan-state{font-size:12px;border:1px solid #2a4067;background:#122442;color:#91baff;padding:6px 9px;border-radius:999px}
.scanner-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.scan-btn{border:1px dashed #3b527b;border-radius:14px;background:#0b1325;color:#dfe9f8;padding:16px;text-align:center;cursor:pointer;min-height:88px;display:grid;place-items:center}.scan-btn strong{display:block}.scan-btn small{color:#8190aa}.scan-preview-wrap{display:none;margin-top:13px}.scan-preview-wrap.show{display:grid;grid-template-columns:140px 1fr;gap:13px}.scan-preview-wrap img{width:140px;max-height:190px;object-fit:contain;border-radius:10px;background:#fff}.scan-progress{height:7px;background:#1b2942;border-radius:999px;overflow:hidden;margin-top:8px}.scan-progress span{height:100%;display:block;width:0;background:#4a91ff;transition:.2s}.scan-results{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.scan-result{background:#101b32;border:1px solid #263959;border-radius:10px;padding:9px}.scan-result small{display:block;color:#7f8ea9}.scan-result strong{display:block;margin-top:3px;font-size:13px}
.install-banner{display:none}
@media(max-width:950px){
  .app-sidebar{transform:translateX(-105%);transition:.2s;width:280px}.app-sidebar.open{transform:translateX(0)}
  .app-topbar{left:0;height:68px;padding:0 14px}.icon-btn{display:block}.app-search{width:auto;flex:1}.office-chip{display:none}
  .staff-app .content{margin-left:0;padding:86px 14px 92px}
  .mobile-bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;background:#0a1022;border-top:1px solid #22304a;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));z-index:75}
  .mobile-bottom-nav a{display:grid;place-items:center;gap:2px;color:#8492ab}.mobile-bottom-nav span{font-size:20px}.mobile-bottom-nav small{font-size:10px}.mobile-bottom-nav .new{color:white}.mobile-bottom-nav .new span{width:42px;height:42px;border-radius:14px;background:#2c7cf6;display:grid;place-items:center;margin-top:-24px;box-shadow:0 8px 20px #2c7cf655}
  .staff-app .stats{grid-template-columns:repeat(2,1fr)!important}.staff-app .balance-grid{grid-template-columns:repeat(2,1fr)!important}
  .scanner-actions{grid-template-columns:1fr}.scan-preview-wrap.show{grid-template-columns:100px 1fr}.scan-preview-wrap img{width:100px;max-height:140px}.scan-results{grid-template-columns:repeat(2,1fr)}
  .staff-app table{min-width:700px}
  .install-banner.show{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#13213d;border:1px solid #2b4168;padding:11px 13px;border-radius:12px;margin-bottom:14px;color:#dce7f8}
}
@media(max-width:560px){
  .app-topbar{gap:8px}.app-search{max-width:none}.app-search input{font-size:16px}.app-top-actions{gap:6px}
  .staff-app .pagehead{display:block!important}.staff-app .pagehead h1{font-size:28px}.staff-app .quick-actions{display:grid;grid-template-columns:1fr 1fr}.staff-app .quick-actions .btn{min-width:0;width:100%;padding:12px 8px}
  .staff-app .stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}.staff-app .stat{min-height:118px;padding:14px}.staff-app .stat strong{font-size:24px;word-break:break-word}
  .staff-app .panel{padding:14px}.tx-row{grid-template-columns:46px 1fr auto;gap:10px}.tx-icon{width:42px;height:42px}.tx-main strong{font-size:15px}.tx-amount strong{font-size:16px}
  .scan-results{grid-template-columns:1fr 1fr}.scanner-inline{padding:14px}
}
