:root{--navy:#101f36;--navy2:#1b3452;--blue:#2566d7;--red:#d92339;--ink:#1d293b;--text:#4c5d70;--line:#e1e8f0;--bg:#f4f7fb;--white:#fff;--shadow:0 6px 24px rgba(20,40,70,.06)}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}input,textarea,select{width:100%;padding:11px 12px;border:1px solid #cfdbe9;border-radius:9px;background:white;color:#203046;outline:0}input:focus,textarea:focus,select:focus{border-color:#4482e8;box-shadow:0 0 0 3px #e7f0ff}textarea{resize:vertical;min-height:90px}label{display:block;font-weight:650;color:#37485c;margin:12px 0 6px}h1,h2,h3,p{margin-top:0}h1{font-size:25px;letter-spacing:-.5px;margin-bottom:4px}h2{font-size:18px;letter-spacing:-.3px}h3{font-size:15px}small{font-size:11px}.muted{color:#74839a}.eyebrow{font-size:10px;font-weight:800;letter-spacing:2px;color:#5b86bf}.note{font-size:12px;color:#708095}.btn{border:0;border-radius:9px;padding:11px 16px;font-weight:750;white-space:nowrap;display:inline-flex;justify-content:center;align-items:center;gap:7px}.btn.primary{background:linear-gradient(135deg,#185fc8,#337ce8);color:#fff}.btn.red{background:var(--red);color:#fff}.btn.outline{background:#fff;color:#355371;border:1px solid #d7e3ef}.btn.soft{background:#eef4fc;color:#205aba}.btn.small{font-size:12px;padding:7px 10px}.btn.wide{width:100%;margin-top:20px}.btn:hover:not(:disabled){filter:brightness(.96)}.row{display:flex;gap:12px;align-items:center}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.two{display:grid;grid-template-columns:1fr 1fr;gap:15px}.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.four{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.card{background:white;border:1px solid #e5ecf4;border-radius:14px;padding:22px;box-shadow:var(--shadow);min-width:0}.card+.card{margin-top:14px}.card h2{margin-bottom:14px}.hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.subtitle{color:#718095;margin-bottom:0}.sidebar{width:239px;background:var(--navy);color:#fff;min-height:100vh;position:fixed;left:0;top:0;bottom:0;display:flex;flex-direction:column;z-index:20}.brand{padding:27px 20px 20px;border-bottom:1px solid #253d5d}.brand img{display:block;width:192px;max-width:100%;height:auto}.brand small{display:block;margin:2px 0 0 10px;color:#8da8c5;letter-spacing:2px;font-size:10px;font-weight:800}.version{float:right;font-weight:400;color:#7690ad;letter-spacing:normal}.sidebar nav{padding:18px 10px;flex:1}.nav-button{width:100%;padding:12px 15px;margin:3px 0;border:0;background:transparent;color:#b5c6da;border-radius:9px;display:flex;align-items:center;gap:13px;text-align:left;font-weight:600}.nav-button:hover{background:#243b59;color:white}.nav-button.active{background:#2a4e7c;color:#fff;box-shadow:inset 3px 0 #4b97ff}.nav-ico{font-size:17px;width:20px;text-align:center}.sidebar-footer{padding:16px 13px;border-top:1px solid #263d58}.identity{background:#203955;padding:11px;border-radius:10px;font-size:12px;color:#eff5ff}.identity b{display:block}.identity span{color:#8fa9c7}.workspace{margin-left:239px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:95px;background:white;border-bottom:1px solid var(--line);padding:19px 35px;display:flex;justify-content:space-between;align-items:center}.topbar h1{margin:0}.top-actions{display:flex;align-items:center;gap:14px;color:#5d7088;font-weight:650;font-size:12px}.dot{height:8px;width:8px;background:#29bf84;border-radius:100%;display:inline-block;margin-right:-8px}.hamburger{display:none;border:0;background:none;font-size:20px}.footer{text-align:center;color:#233f62;font-size:15px;font-weight:800;padding:25px 15px;margin-top:auto;line-height:1.5}main{padding:28px 35px;width:100%;max-width:1600px;margin:0 auto}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:21px}.metric{background:#fff;border:1px solid #e5ecf4;border-radius:14px;padding:20px;position:relative;overflow:hidden}.metric:after{content:"";position:absolute;right:0;top:0;width:4px;height:100%;background:var(--blue)}.metric.red:after{background:var(--red)}.metric.orange:after{background:#f59e0b}.metric.green:after{background:#1dab77}.metric-label{color:#7c8ca0;font-size:12px;font-weight:750;letter-spacing:.2px}.metric-value{font-size:31px;font-weight:850;letter-spacing:-1px;line-height:1.4}.metric-sub{font-size:11px;color:#8a9bad}.dashboard-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.bar-row{display:grid;grid-template-columns:150px 1fr 54px;align-items:center;gap:12px;margin:12px 0;font-size:12px}.bar-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#51657d}.bar-track{height:9px;background:#edf2fa;border-radius:50px;overflow:hidden}.bar-fill{height:100%;border-radius:30px;background:linear-gradient(90deg,#3b8dea,#145dc5)}.bar-count{text-align:right;font-weight:750}.table-scroll{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse;min-width:580px}th{text-align:left;color:#7f8ba0;font-size:11px;letter-spacing:.8px;text-transform:uppercase;font-weight:800;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:14px 12px;border-bottom:1px solid #eef1f6;color:#41536a;vertical-align:middle;font-size:13px}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcff}a.link,button.link{color:#2463b9;text-decoration:none;font-weight:800;background:none;border:0;padding:0}.badge{display:inline-block;border-radius:50px;padding:4px 9px;background:#ebf2fc;color:#2562b9;font-size:11px;font-weight:800;white-space:nowrap}.badge.Closed{background:#e6f8ef;color:#16774b}.badge.Management{background:#fff0e4;color:#a65308}.badge.Open{background:#edf1f8;color:#576b85}.badge.Urgent{background:#fff0f0;color:#bb2638}.badge.High{background:#fff4e5;color:#ad6712}.badge.Assigned{background:#e8f2ff;color:#2267c5}.badge.In{background:#e7ecfe;color:#5149ae}.empty{background:#f7faff;border:1px dashed #cad9ee;border-radius:12px;padding:36px 18px;text-align:center;color:#74839b}.empty strong{color:#33455c;display:block;margin-bottom:5px}.form-actions{display:flex;gap:10px;margin-top:25px;flex-wrap:wrap}.checkgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:11px 0}.check{display:flex;align-items:center;gap:8px;border:1px solid #dee7f2;border-radius:9px;padding:11px 10px;color:#344a62;cursor:pointer;margin:0;font-size:13px;font-weight:600}.check:hover{border-color:#8cbaef;background:#f6faff}.check input{width:16px;height:16px;accent-color:var(--blue);margin:0;flex-shrink:0}.info{padding:14px 15px;background:#f0f7ff;border-left:3px solid var(--blue);border-radius:8px;color:#365875;font-size:12px}.info.warn{background:#fff7e9;border-color:#e5a233;color:#856027}.lookup{margin:14px 0}.lookup-card{border:1px solid #cde2f9;background:#f4f9ff;border-radius:12px;padding:15px}.lookup-error{border:1px solid #f2c3c3;background:#fff7f7;border-radius:12px;padding:14px;color:#af4150}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.filters input,.filters select{width:auto;min-width:170px}.pill-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.section-head h2{margin:0}.stack{display:grid;gap:15px}.field-block{margin-bottom:4px}.detail{display:grid;grid-template-columns:145px 1fr;gap:7px 12px;padding:8px 0;font-size:13px}.detail dt{color:#8392a6}.detail dd{margin:0;font-weight:600;color:#40526a;overflow-wrap:anywhere}.ticket-actions{border-top:1px solid var(--line);margin-top:19px;padding-top:15px}.events{border-left:2px solid #d7e7fa;margin:12px 0 0 8px;padding-left:18px}.event{padding:0 0 13px;position:relative;color:#51667c;font-size:12px}.event:before{content:"";width:9px;height:9px;position:absolute;left:-24px;top:4px;border-radius:50%;background:#3b80dc}.event b{display:block;color:#293d55}.modal-backdrop{position:fixed;inset:0;background:rgba(10,24,45,.64);z-index:50;display:flex;justify-content:center;align-items:center;padding:20px}.modal-backdrop[hidden],#app[hidden],#auth[hidden]{display:none!important}.modal{background:#fff;width:min(750px,100%);max-height:90vh;overflow:auto;padding:25px 30px;border-radius:17px;box-shadow:0 25px 70px #0004}.modal-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ebeff4;margin-bottom:18px}.icon-button{background:none;border:0;color:#63788f;font-size:19px;padding:8px}.auth-screen{min-height:100vh;background:radial-gradient(circle at 82% 0%,#20558b,#0d1c31 55%);display:flex;justify-content:center;align-items:center;padding:25px}.auth-card{background:white;max-width:410px;width:100%;border-radius:20px;padding:33px 36px;box-shadow:0 25px 80px #0004}.auth-logo{width:100%;max-width:300px;display:block;margin:0 auto 20px}.auth-card h1{font-size:29px}.auth-card small{display:block;margin-top:24px;text-align:center}.auth-card input{margin-bottom:3px}.auth-card .eyebrow{margin-bottom:5px}#toast{position:fixed;top:18px;right:18px;z-index:100;padding:13px 18px;background:#0b3249;color:white;border-radius:11px;box-shadow:0 8px 26px #0002;max-width:330px;display:none}#toast.error{background:#a52235}.pad-top{margin-top:20px}.w-100{width:100%}.loading{font-size:14px;color:#7a8ea6;padding:50px;text-align:center}.sm-text{font-size:12px}.right{text-align:right}.callout{padding:17px;border-radius:10px;background:#f7faff;border:1px solid #e4ebf6}.number-chip{display:inline-block;background:#e4eefc;color:#164faf;font-weight:800;border-radius:6px;padding:4px 9px;font-variant-numeric:tabular-nums}.break{overflow-wrap:anywhere}.machine-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;font-size:13px}
@media(max-width:1150px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.bar-row{grid-template-columns:140px 1fr 48px}}@media(max-width:800px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:240px}.sidebar.open{transform:translateX(0)}.workspace{margin-left:0}.hamburger{display:block}.topbar{padding:15px 18px;height:85px;gap:12px}.top-actions #today,.top-actions .dot{display:none}main{padding:18px}.checkgrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.metric-grid{grid-template-columns:repeat(2,1fr);gap:9px}.metric{padding:15px}.metric-value{font-size:25px}.two,.three,.four{grid-template-columns:1fr}.hero{display:block}.hero .btn{margin-top:14px}.checkgrid{grid-template-columns:1fr}.filters input,.filters select{width:100%}.filters>*{flex:1}.modal{padding:17px}.detail{grid-template-columns:112px 1fr}.top-actions .btn{padding:8px 10px}.auth-card{padding:26px 23px}}
@media print{.sidebar,.topbar,.footer{display:none}.workspace{margin:0}main{padding:0}.card{box-shadow:none;border:0}}

.auto-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0 17px}.auto-field{background:#f6f9fd;border:1px solid #e0e8f2;padding:10px 11px;border-radius:9px;min-width:0}.auto-label{display:block;color:#697d95;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}.auto-field output{display:block;font-size:14px;color:#203d5d;font-weight:700;min-height:22px;overflow-wrap:anywhere}.auth-card .auth-credit{font-size:12px;font-weight:800;color:#233f62;line-height:1.4;display:block;text-align:center;margin-top:20px}@media(max-width:560px){.auto-fields{grid-template-columns:1fr}.footer{font-size:13px;padding:18px 12px}}

/* Closed ticket PDF link: disabled until a matching ticket count is returned. */
a#closed-pdf[aria-disabled="true"]{pointer-events:none;cursor:not-allowed;opacity:.55}

.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin:12px 0}.photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:1px solid #d9e3ee}.photo-grid small{display:block;color:#596b81}.info div{white-space:pre-wrap;overflow-wrap:anywhere}

/* v1.11.2: persistent device sign-in, machine repair history, visit times */
.remember-option{display:flex;gap:10px;align-items:center;margin:16px 0 2px;font-size:13px;cursor:pointer}
.remember-option[hidden]{display:none!important}
.remember-option input{width:18px;height:18px;margin:0;flex-shrink:0;accent-color:var(--blue)}
#remember-device-note{font-size:11px;line-height:1.4;margin:5px 0 0}
.machine-history{display:grid;gap:10px;margin-top:12px;max-height:360px;overflow-y:auto}
.history-entry{padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#f8fbff;font-size:12px}
.history-entry>div+div{margin-top:5px}

/* Ticket notifications and Nayax serial fields - v1.11.4 */
.top-actions{position:relative}
.alerts-panel{position:absolute;top:calc(100% + 8px);right:0;width:min(385px,92vw);max-height:450px;overflow-y:auto;background:#fff;border:1px solid #dbe4ee;box-shadow:0 12px 32px #172d4a30;border-radius:11px;padding:12px;z-index:100}
.alerts-panel[hidden]{display:none!important}
.alert-entry{border-bottom:1px solid #e2e7ef;padding:10px 3px;font-size:12px;line-height:1.65}
.alert-entry:last-child{border-bottom:0}
.alert-entry .row{margin-top:6px}
#alerts-count{font-weight:800;color:#c41f38}
@media(max-width:560px){#alerts-enable{font-size:10px;padding:7px}#alerts-open{padding:7px}}

/* City Vending Company Operations Portal branding */
.portal-title{font-size:16px;font-weight:800;line-height:1.3;color:#173a65;margin:-4px 0 18px;text-align:center}
.brand .portal-name{margin:8px 0 3px 10px;color:#f3f7ff;font-size:13px;font-weight:800;line-height:1.3;letter-spacing:.2px;overflow-wrap:break-word}
.brand small{margin-left:10px;letter-spacing:.6px;font-size:10px}
.topbar .eyebrow{letter-spacing:1px;max-width:420px;line-height:1.4}
@media(max-width:800px){.topbar .eyebrow{font-size:9px;letter-spacing:.4px;max-width:240px}}
