@font-face{font-family:system;src:local('Segoe UI')}*{box-sizing:border-box}body{margin:0;color:#292146;background:#f8f7fa;font:15px system,'Segoe UI',sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;border-radius:9px;padding:12px 17px;font-weight:600;background:#292146;color:white;transition:background .15s}button:hover{background:#483e66}button:disabled{opacity:.5;cursor:wait}.primary{background:#cc2366;color:white}.primary:hover{background:#ae1954}.secondary{background:white;color:#292146;border:1px solid #ddd9e4}.secondary:hover{background:#f7eff4}.quiet{background:transparent;color:#6b637a;border:1px solid #ded9e3}.small{padding:7px 10px;font-size:12px}.danger{color:#a12b36;background:#fff0f0}a{color:#a81e5b;text-underline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:34px;line-height:1.15;letter-spacing:-1px;margin-bottom:10px}h2{font-size:20px;letter-spacing:-.3px}h3{font-size:16px}p{line-height:1.6}.muted{color:#766f82}.eyebrow{font-size:11px;letter-spacing:1.8px;font-weight:700;text-transform:uppercase;color:#ac2460;margin-bottom:14px}.shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}.sidebar{background:#fff;border-right:1px solid #e6e1eb;display:flex;flex-direction:column;padding:32px 20px;position:sticky;top:0;height:100vh}.logo{width:190px;height:auto;display:block}.brand-label{font-size:11px;font-weight:700;letter-spacing:2px;margin:20px 12px 30px;color:#867c91}.nav{display:grid;gap:7px}.nav button{background:none;color:#756c84;text-align:left;font-size:14px;padding:14px 15px;display:flex;align-items:center;gap:13px}.nav button.active{background:#fae9f1;color:#a8215c}.nav button:hover{background:#f6f2f7}.icon{width:20px;height:20px;display:inline-block;flex:none}.sidebar-bottom{margin-top:auto;border-top:1px solid #eee8f0;padding:20px 10px 0;font-size:12px}.sidebar-bottom strong{display:block;font-size:14px;margin:5px 0}.sidebar-bottom button{margin-top:12px}.main{min-width:0;padding:0 42px 42px;max-width:1500px;width:100%;margin:auto}.topbar{height:86px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e8e3ed;margin-bottom:34px;font-size:12px;color:#766b85;gap:10px}.local{border:1px solid #d9c8d5;border-radius:30px;padding:6px 12px;background:#fff;font-size:11px;color:#806378;white-space:nowrap}.topbar .person{display:flex;align-items:center;gap:9px}.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#292146;color:white;font-size:12px}.heading{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:28px}.heading p{margin:0;color:#796f85;font-size:14px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:26px 0}.metric{padding:23px;background:white;border:1px solid #e8e3ed;border-radius:12px}.metric span{font-size:12px;color:#7d7389}.metric strong{display:block;font-size:27px;letter-spacing:-.7px;margin:12px 0 6px;font-weight:650}.metric small{font-size:11px;color:#827888}.metric.emphasis{border-color:#e9bed0;background:#fff7fa}.grid{display:grid;grid-template-columns:1.5fr 1fr;gap:24px;margin-bottom:26px}.panel{background:white;border:1px solid #e7e1eb;border-radius:14px;padding:26px;min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.panel-head h2{margin:0}.panel-head a{font-size:12px}.progress{height:10px;background:#f4e8ee;border-radius:8px;overflow:hidden;margin:22px 0 14px}.progress-bar{height:100%;background:#d42e72;width:var(--progress)}.split{display:flex;justify-content:space-between;gap:16px}.legend{font-size:12px;color:#7b7085}.legend b{color:#292146}.card-art{height:240px;border-radius:12px;background:white;position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #e4d7e0;text-align:center}.card-art:before,.card-art:after,.login-art:after{content:'';position:absolute;background:conic-gradient(from 45deg,#e23378 0 12.5%,#f7b2cb 12.5% 25%,#fbe8ef 25% 37.5%,#ed6398 37.5% 50%,#f9d2e1 50% 75%,#fff0f6 75%);background-size:62px 62px;z-index:-2;width:190px;height:170px;transform:rotate(0deg)}.card-art:before{top:-45px;left:-30px}.card-art:after{bottom:-80px;right:-80px}.card-art .orbit{position:absolute;inset:17px;border:1px solid #625775;border-radius:50%;z-index:-1}.card-art img{width:152px;margin-bottom:18px}.card-art strong{font-size:31px;font-weight:750;letter-spacing:-1px}.card-art small{font-size:9px;color:#b02a63;letter-spacing:2px;margin-top:18px}.mini-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.mini-actions button{padding:16px 10px;font-size:13px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#8b8194;padding:13px 12px;background:#faf8fb;border-bottom:1px solid #ece6ee}td{padding:15px 12px;border-bottom:1px solid #f0ebf3;font-size:13px}tbody tr:last-child td{border:0}.code{font-family:Consolas,monospace;font-size:12px}.badge{display:inline-block;padding:5px 10px;border-radius:30px;font-size:11px;font-weight:600;background:#f0edf4;color:#73677f}.badge.active{background:#e8f5ed;color:#31714e}.badge.redeemed,.badge.paid{background:#eceaf5;color:#615181}.badge.blocked,.badge.expired{background:#ffedef;color:#a03c4e}.badge.blank{background:#f2f0f4;color:#7c7387}.toolbar{display:flex;gap:12px;margin-bottom:18px;flex-wrap:wrap}.toolbar input{max-width:340px;flex:1}.toolbar select{width:auto}.empty{padding:28px;text-align:center;color:#82758d;line-height:1.7}label{display:block;font-size:12px;font-weight:600;margin-bottom:17px}input,select{display:block;width:100%;padding:12px 13px;border:1px solid #d9d2df;border-radius:8px;background:white;color:#292146;margin-top:7px;min-width:0}input:focus,select:focus{outline:2px solid #dc83a7;outline-offset:2px}input[type=checkbox]{width:17px;height:17px;margin:0;flex:none;accent-color:#c82969}.check{display:flex;gap:10px;align-items:flex-start;line-height:1.6;font-weight:400;background:#faf6f9;padding:13px;border-radius:8px}.check input{margin-top:3px}.help{font-size:12px;color:#7a6f85;line-height:1.6}.note{border-left:3px solid #d53576;padding:10px 15px;background:#fcf3f7;font-size:12px;color:#7f5f72;line-height:1.65;margin:18px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.shop-card h3{margin:16px 0 8px}.shop-card .initial{height:42px;width:42px;border-radius:12px;display:grid;place-items:center;background:#f9e7ef;color:#b52361;font-weight:bold}.shop-card .actions{margin-top:22px}.scan-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.scan-frame{min-height:230px;background:#f9f6fb;border:1px dashed #c9bed4;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;padding:24px;text-align:center}.scan-frame svg{width:58px;height:58px;color:#bb2c65}.scan-frame video{width:100%;max-height:300px;border-radius:8px}.lookup-value{font-size:42px;font-weight:700;margin:16px 0}.lookup-card{background:#fff7fa;border:1px solid #ecc6d6;border-radius:12px;padding:22px}.lookup-card img{width:100px;float:right}.print-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}.print-grid .panel{padding:28px}.envelope-art{height:240px;background:#f9eaf0;border:1px solid #e4cdd8;border-radius:8px;display:grid;place-items:center;position:relative;overflow:hidden}.envelope-art:before{content:'';position:absolute;width:70%;height:190px;border:1px solid #ccadc0;transform:rotate(35deg);top:-140px}.envelope-art img{width:200px}.print-grid h3{margin:22px 0 8px}.print-grid .actions{margin-top:20px}.login{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}.login-art{background:#292146;color:white;display:flex;flex-direction:column;justify-content:center;padding:70px;position:relative;overflow:hidden;isolation:isolate}.login-art:after{content:none;display:none}.login-art h1{font-size:52px;line-height:1.06;max-width:470px;letter-spacing:-2px}.login-art p{color:#dbd2e5;max-width:380px;font-size:16px}.login-art .card-art{max-width:430px;width:100%;margin-top:34px;color:#292146;transform:rotate(-3deg);height:260px;box-shadow:none}.login-form{padding:60px;display:flex;flex-direction:column;justify-content:center;max-width:580px;width:100%;margin:auto}.login-form>.logo{margin-bottom:48px;width:230px}.login-form form button{width:100%}.demo{margin-top:24px;border-top:1px solid #e4dce8;padding-top:20px}.demo p{font-size:12px;color:#80718b;margin-bottom:12px}.demo-options{display:flex;gap:8px;flex-wrap:wrap}.demo-options button{font-size:12px;padding:10px 13px}.error{color:#a12344;background:#fff0f3;padding:12px;border-radius:7px;font-size:13px}.error:empty{display:none}dialog{border:1px solid #e5dce9;border-radius:16px;padding:30px;width:min(530px,94vw);color:#292146}dialog::backdrop{background:#29214670}dialog h2{margin-bottom:10px}dialog .actions{justify-content:flex-end;margin-top:24px}.close{float:right;padding:4px 9px;background:#f6f1f7;color:#61566f}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#292146;color:white;padding:15px 24px;border-radius:10px;z-index:10;display:none;max-width:90vw}#toast.show{display:block}.footnote{margin-top:28px;color:#8c8096;font-size:11px}.mobile-brand{display:none}.skeleton{padding:80px;text-align:center}.stat-row{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid #eee8f1;font-size:13px}.stat-row:last-child{border:0}.warning{color:#a12a49}.qr-preview{width:110px;height:110px}
@media(max-width:1100px){.main{padding:0 24px 30px}.shell{grid-template-columns:210px 1fr}.sidebar{padding:25px 14px}.logo{width:175px}.cards{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.shop-grid{grid-template-columns:1fr 1fr}.login-art{padding:40px}.login-art h1{font-size:42px}.login-form{padding:38px}.scan-layout{grid-template-columns:1fr}.print-grid{grid-template-columns:1fr}}
@media(max-width:700px){.shell{display:block}.sidebar{position:static;height:auto;padding:17px 18px 0;border-right:0;border-bottom:1px solid #e6e1eb}.sidebar>.logo{width:155px}.brand-label{display:none}.nav{display:flex;overflow:auto;margin-top:16px;gap:3px;padding-bottom:10px}.nav button{padding:10px 12px;white-space:nowrap;font-size:12px;gap:6px}.nav button .icon{width:16px;height:16px}.sidebar-bottom{display:none}.main{padding:0 18px 30px}.topbar{height:62px;margin-bottom:25px;font-size:11px}.heading{display:block;margin-bottom:20px}.heading .actions{margin-top:18px}h1{font-size:28px}.cards{gap:10px;margin:20px 0}.metric{padding:17px 13px}.metric strong{font-size:24px}.panel{padding:19px}.grid{gap:16px}.shop-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr;gap:0}.login{display:block}.login-art{display:none}.login-form{padding:35px 24px}.print-grid{gap:16px}.toolbar input{max-width:none;width:100%;flex-basis:100%}.topbar .person>span:not(.avatar){display:none}.card-art{height:225px}.cards .metric small{font-size:10px}.panel-head{align-items:flex-start}.heading p{font-size:13px}}

progress.progress{display:block;width:100%;border:0;height:14px;border-radius:10px;overflow:hidden;appearance:none}progress::-webkit-progress-bar{background:#eeeaf3}progress::-webkit-progress-value{background:#e33779}progress::-moz-progress-bar{background:#e33779}
.scanner-start,.scanner-result,.scan-success{max-width:660px;margin-left:auto;margin-right:auto}.scanner-primary{min-height:52px;width:100%;margin-top:16px}.scanner-result form>.primary{width:100%;min-height:52px}.scanner-result .lookup-card{display:flow-root}.scan-rules{padding-top:18px;font-size:14px}.scan-rules p{margin-bottom:8px}.scan-alternatives{border-top:1px solid #e4dce8;margin-top:20px;padding-top:18px}.scan-alternatives summary{cursor:pointer;min-height:44px;font-weight:600}.scan-success{text-align:center;padding:32px}.success-check{display:inline-grid;place-items:center;background:#e8f5ed;color:#31714e;width:64px;height:64px;border-radius:50%;font-size:36px;margin-bottom:20px}.scan-success p{line-height:1.6}
@media(max-width:700px){.scanner-start,.scanner-result,.scan-success{max-width:none}.scanner-start .scan-frame{min-height:240px}.scanner-start input,.scanner-start select,.scanner-result input,.scanner-result select{font-size:16px}.scanner-start .scan-frame video{max-height:45vh}.scanner-result .lookup-card img{width:75px}.scanner-result .lookup-value{font-size:36px}.nav button[data-nav=scan]{background:#cc2366;color:#fff;min-height:46px}.heading .actions button[data-go=scan]{width:100%;min-height:56px;font-size:17px}.scanner-result .check{min-height:52px}}
@media(max-width:700px){.scan-mode .topbar{height:48px;margin-bottom:12px}.scan-mode .heading{margin-bottom:12px}.scan-mode .heading .eyebrow{display:none}.scan-mode .sidebar{padding-top:12px}.scan-mode .sidebar>.logo{width:120px}.scan-mode .nav{margin-top:10px}.scan-mode .scanner-start .scan-frame{min-height:190px;padding:16px;gap:12px}.scan-mode .scanner-start .scan-frame svg{width:44px;height:44px}.scan-mode .scanner-start{padding:15px}}

/* Mobile scanner is a dedicated viewport, with one task at a time. */
.scan-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.scan-top span{font-size:11px;color:#796f85}
@media(max-width:700px){
 body:has(.scan-mode){overflow:hidden}
 body:has(.scan-mode)>.demo-notice{display:none}
 .scan-mode{position:fixed;inset:0;z-index:20;height:100dvh;background:#f8f7fa}
 .scan-mode .shell{display:block;height:100%;min-height:0}
 .scan-mode .sidebar,.scan-mode .topbar,.scan-mode .footnote{display:none}
 .scan-mode .main{height:100%;padding: max(10px,env(safe-area-inset-top)) 14px max(10px,env(safe-area-inset-bottom));margin:0;max-width:none}
 .scan-mode #page{height:100%;display:flex;flex-direction:column;gap:10px;min-height:0}
 .scan-mode .scan-top{margin:0;flex:none}
 .scan-mode .scan-top button{min-height:44px;padding:8px 12px}
 .scan-mode .heading{margin:0;flex:none}
 .scan-mode .heading h1{font-size:25px;margin:0}
 .scan-mode .heading p,.scan-mode .heading .eyebrow{display:none}
 .scan-mode .panel{width:100%;margin:0;padding:14px;min-height:0;flex:1}
 .scan-mode .scanner-start{display:flex;flex-direction:column;gap:10px}
 .scan-mode .scanner-start .scan-frame{flex:1;min-height:0;padding:14px;gap:14px;overflow:hidden}
 .scan-mode .scan-frame video{flex:1;min-height:0;width:100%;max-height:none;object-fit:cover}
 .scan-mode .scan-frame button{flex:none}
 .scan-mode .scan-rules{display:none}
 .scan-mode .scanner-start>.help{margin:0;font-size:11px;line-height:1.35}
 .scan-mode .scan-alternatives{margin:0;padding:0;border:0;flex:none}
 .scan-mode .scan-alternatives summary{min-height:44px;display:flex;align-items:center;font-size:13px}
 .scan-mode .scanner-start:has(details[open]) .scan-frame{display:none}
 .scan-mode .scan-alternatives[open]{flex:1}
 .scan-mode .scanner-result{display:flex;flex-direction:column;gap:8px}
 .scan-mode .scanner-result h2{font-size:18px;margin:0}
 .scan-mode .lookup-card{padding:10px;position:relative;flex:none}
 .scan-mode .lookup-card img{display:none}
 .scan-mode .lookup-card .code{margin:0 0 5px;font-size:11px}
 .scan-mode .lookup-card .lookup-value{position:absolute;right:10px;top:12px;font-size:28px;margin:0}
 .scan-mode .lookup-card .help{margin:5px 0 0;font-size:11px}
 .scan-mode .scanner-result>.note,.scan-mode form>.help,.scan-mode form>.note{display:none}
 .scan-mode .scanner-result form{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}
 .scan-mode label{margin:0;font-size:12px}
 .scan-mode input,.scan-mode select{padding:9px 10px;margin-top:4px;min-height:40px;font-size:16px}
 .scan-mode .check{padding:8px;line-height:1.35;font-size:12px;align-items:center}
 .scan-mode .check input{min-height:0;margin:0}
 .scan-mode .scanner-result form>button{margin-top:auto;min-height:46px}
 .scan-mode .scanner-primary{min-height:46px;margin:0;padding:10px}
 .scan-mode .scanner-result>#next-scan{flex:none}
 .scan-mode .scan-success{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}
 .scan-mode .scan-success>*{margin:0}
 .scan-mode .scan-success p{font-size:13px;line-height:1.4}
 .scan-mode .scan-success .lookup-value{font-size:36px}
 .scan-mode .scan-success #next-scan{margin-top:auto;width:100%}
 .scan-mode .error{margin:0;padding:8px;font-size:12px;line-height:1.3}
}
@media(max-width:700px) and (max-height:600px){
 .scan-mode #page{gap:6px}
 .scan-mode .panel{padding:10px}
 .scan-mode .heading h1{font-size:22px}
 .scan-mode .scanner-result{gap:6px}
 .scan-mode .scanner-result form{gap:6px}
 .scan-mode .scan-success .success-check{width:40px;height:40px;font-size:25px}
}

.camera-target{display:none}
@media(max-width:700px){
 .scan-mode:has(.scanner-start):not(:has(details[open])){background:#15131b;color:white}
 .scan-mode:has(.scanner-start):not(:has(details[open])) .scan-top{position:absolute;top:max(12px,env(safe-area-inset-top));left:14px;right:14px;z-index:3}
 .scan-mode:has(.scanner-start):not(:has(details[open])) .scan-top span{color:#fff}
 .scan-mode:has(.scanner-start):not(:has(details[open])) .heading{display:none}
 .scan-mode .scanner-start:not(:has(details[open])){position:absolute;inset:0;padding:80px 14px 20px;border:0;border-radius:0;background:#15131b;color:white}
 .scan-mode .scanner-start:not(:has(details[open])) .scan-frame{background:transparent;border:0;border-radius:0;color:white}
 .scan-mode .scanner-start:not(:has(details[open])) .help{color:#d7d2de}
 .scan-mode:has(.scan-frame video) .scanner-start{padding:0}
 .scan-mode:has(.scan-frame video) .scan-frame{position:absolute;inset:0;margin:0;padding:0}
 .scan-mode:has(.scan-frame video) .scan-frame video{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;border-radius:0}
 .scan-mode:has(.scan-frame video) .scan-top span,
 .scan-mode:has(.scan-frame video) .scanner-start>.help,
 .scan-mode:has(.scan-frame video) .scanner-start>.error,
 .scan-mode:has(.scan-frame video) .scan-alternatives,
 .scan-mode:has(.scan-frame video) #stop-camera{display:none}
 .scan-mode .camera-target{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(68vw,300px);aspect-ratio:1;border:3px solid white;border-radius:20px;box-shadow:0 0 0 100vmax #0005;pointer-events:none}
 .scan-mode:has(.scan-frame video) .scan-top button{background:#17131dc9;border-color:#ffffff70;color:white;backdrop-filter:blur(8px)}
}


/* The result and completion steps use the same full-screen mobile flow. */
@media(max-width:700px){
 .scan-mode:has(.scanner-result),.scan-mode:has(.scan-success){background:#fff}
 .scan-mode:has(.scanner-result) .heading,.scan-mode:has(.scan-success) .heading{display:none}
 .scan-mode .scanner-result,.scan-mode .scan-success{border:0;border-radius:0;background:transparent;padding:8px 0 0;box-shadow:none}
 .scan-mode .scanner-result h2{font-size:23px;line-height:1.15;text-align:center;margin:4px 0}
 .scan-mode .lookup-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0;border-radius:0;background:transparent;padding:8px 0 12px}
 .scan-mode .lookup-card .lookup-value{position:static;font-size:44px;line-height:1.1;order:-1;margin:0}
 .scan-mode .lookup-card .code{margin:0;color:#766f82}
 .scan-mode .lookup-card .help{margin:0}
 .scan-mode .scanner-result form{gap:10px}
 .scan-mode .scanner-result form>button,.scan-mode .scanner-primary{min-height:50px;font-size:16px}
 .scan-mode .scanner-result>#next-scan{font-size:14px;min-height:44px}
 .scan-mode .scan-success{justify-content:flex-start;padding-top:clamp(20px,8vh,70px);gap:15px}
 .scan-mode .scan-success h2{font-size:25px}
 .scan-mode .scan-success .lookup-value{font-size:52px}
 .scan-mode .scan-success .success-check{width:64px;height:64px;font-size:36px}
 .scan-mode .scan-success p{max-width:300px}
 .scan-mode #toast{z-index:30}
}
@media(max-width:700px) and (max-height:600px){
 .scan-mode .scanner-result{gap:5px}
 .scan-mode .scanner-result h2{font-size:21px;margin:0}
 .scan-mode .lookup-card{gap:3px;padding:4px 0}
 .scan-mode .lookup-card .lookup-value{font-size:36px}
 .scan-mode .scanner-result form{gap:6px}
 .scan-mode .scan-success{padding-top:16px;gap:12px}
}

/* Keep form text readable on touch devices without disabling pinch zoom. */
@media (max-width:1024px), (hover:none) and (pointer:coarse){
 input,select,textarea{font-size:16px !important}
}

.voucher-design{display:block;width:100%;height:auto;object-fit:contain;border-radius:0;transform:none}.login-art .voucher-design{margin-top:28px;max-width:480px}

/* Mobile portal: thumb navigation, readable forms and safe screen edges. */
.mobile-tabs,.mobile-menu-close{display:none}
@media(max-width:700px){
 body{min-width:320px}
 button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
 button{min-height:44px;touch-action:manipulation}
 input:not([type=checkbox]),select,textarea{min-height:48px}
 .main{padding:0 max(16px,env(safe-area-inset-right)) calc(100px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));min-width:0}
 .sidebar{display:none}
 .sidebar.mobile-open{display:block;position:fixed;inset:0 0 calc(74px + env(safe-area-inset-bottom));z-index:40;overflow-y:auto;padding:calc(20px + env(safe-area-inset-top)) 20px 24px;background:#fff}
 .mobile-menu-close{display:block;float:right}
 .sidebar.mobile-open .nav{display:grid;grid-template-columns:1fr 1fr;gap:10px;overflow:visible;margin-top:28px}
 .sidebar.mobile-open .nav button{white-space:normal;text-align:left;min-height:64px;border:1px solid #eee8f1;font-size:14px}
 .sidebar.mobile-open .sidebar-bottom{display:block;position:static;margin-top:24px}
 .mobile-tabs{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:8px max(12px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#fff;border-top:1px solid #e6e1eb;z-index:45;box-shadow:0 -4px 20px #29214608}
 .mobile-tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;color:#746b80;border:0;border-radius:12px;min-height:58px;font-size:11px;padding:7px}
 .mobile-tabs button.active,.mobile-tabs button[aria-expanded=true]{color:#292146;background:#f1edf5}
 .mobile-tabs button.scan-tab{background:#ce2365;color:white}
 .mobile-tabs .icon{width:23px;height:23px}
 .topbar{height:auto;min-height:70px;gap:12px;padding-top:env(safe-area-inset-top);margin-bottom:20px}
 .topbar>.actions>.local{display:none}
 .heading .actions{display:flex;flex-wrap:wrap;gap:8px}.heading .actions>button{flex:1}
 .metric strong{font-size:clamp(20px,6vw,28px);overflow-wrap:anywhere}
 .metric small{line-height:1.5}.panel,.metric{min-width:0}.panel-head{flex-wrap:wrap;gap:12px}
 .table-wrap{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
 .toolbar{flex-wrap:wrap;gap:10px}.toolbar select{max-width:100%}
 .login{min-height:100dvh;background:#fff}.login-form{padding:calc(28px + env(safe-area-inset-top)) 24px calc(28px + env(safe-area-inset-bottom));min-height:100dvh;justify-content:center}
 .login-form>.logo{width:205px;margin-bottom:32px}.login-form>.actions{display:grid;gap:10px;margin-top:12px}
 dialog{max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto;padding:22px;width:calc(100% - 24px)}
 dialog .actions{flex-wrap:wrap;gap:10px}dialog .actions>button{flex:1}
 #toast{bottom:calc(90px + env(safe-area-inset-bottom));width:max-content;max-width:calc(100vw - 32px)}
 .scan-mode .mobile-tabs,.scan-mode .sidebar.mobile-open{display:none}
 .scan-mode~#toast{bottom:calc(18px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.scan-only .mobile-tabs{display:none}

.shop-status{display:inline-flex;align-items:center;gap:7px;font-size:12px;line-height:20px;color:#716b7e;white-space:nowrap}.shop-status:before{content:'';width:7px;height:7px;border-radius:50%;background:#aaa3b3}.shop-status.enabled:before{background:#36825a}.install-guide{overflow-y:auto;max-width:520px;margin:auto;line-height:1.6}.install-guide img{border-radius:16px;margin-bottom:20px}.install-guide h1{font-size:26px}.install-guide ol{padding-left:22px}.install-guide li{margin:14px 0}.install-guide .primary{width:100%}.shop-card>.actions{flex-wrap:wrap}

/* Balanced store overview, without duplicate scanner actions. */
.shop-overview{display:grid;gap:20px}.shop-overview .cards{margin:0}.shop-overview .receiver-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.shop-overview .panel{margin:0}.shop-overview .empty{padding:24px 12px;font-size:14px;line-height:1.6}.overview-payment-link{border-top:1px solid #e6e1eb;padding-top:12px}.overview-payment-link button{display:inline-flex;align-items:center;gap:12px;padding-left:0}.desktop-device [data-go="scan"],.desktop-device [data-nav="scan"],.desktop-device #open-scan{display:none!important}.desktop-device .mobile-tabs{grid-template-columns:1fr 1fr}
@media(max-width:700px){.shop-overview{gap:16px}.shop-overview .receiver-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.shop-overview .receiver-metrics>.metric:first-child{grid-column:1/-1}.shop-overview .receiver-metrics>.metric:first-child{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:16px}.shop-overview .receiver-metrics>.metric:first-child strong{grid-column:2;grid-row:1/3;margin:0}.shop-overview .receiver-metrics>.metric:first-child small{grid-column:1}.shop-overview .panel-head{margin-bottom:12px}.shop-overview .panel-head h2{font-size:19px}.shop-overview .panel-head button{padding:6px 0;min-height:36px}.shop-overview .metric{padding:18px}.overview-payment-link button{min-height:44px}}

.shop-overview .overview-payment-link{border:0;padding:0;margin-top:-8px;text-align:right}.shop-overview .overview-payment-link button{border:0;background:transparent;box-shadow:none;border-radius:0;color:#716479;font-size:13px;font-weight:500;padding:8px 0;min-height:44px;gap:7px}.shop-overview .overview-payment-link button:hover{color:#b72360;text-decoration:underline}.shop-overview .overview-payment-link button:focus-visible{outline:2px solid #ce2365;outline-offset:3px}.shop-overview .overview-payment-link .icon{width:16px;height:16px}

/* Public legal information: quiet, accessible, printable, no consent overlay. */
.legal-links{display:flex;gap:12px 22px;justify-content:center;flex-wrap:wrap;padding:24px 20px 100px;font-size:13px;background:#f8f7fa}.legal-links a{color:#554965;min-height:32px;display:inline-flex;align-items:center}.scan-mode~.legal-links{display:none}.legal-body{background:#f8f7fa;color:#292146}.legal-document{max-width:820px;margin:32px auto;padding:36px;background:white;border:1px solid #e7e2ec;border-radius:20px;line-height:1.75}.legal-document>.logo{display:block;width:240px;max-width:100%;margin:32px 0}.legal-document h1{font-size:32px;line-height:1.2}.legal-document h2{font-size:20px;margin:30px 0 8px}.legal-document p{margin:10px 0;overflow-wrap:anywhere}.legal-document nav{border-top:1px solid #e7e2ec;margin-top:32px;padding-top:20px;font-size:14px}.legal-document a{color:#ab2058}.legal-document a:focus-visible,.legal-links a:focus-visible{outline:2px solid #ce2365;outline-offset:4px}.legal-check{font-size:14px;line-height:1.5}.legal-check a{color:#ab2058}
@media(max-width:700px){.legal-document{margin:12px;padding:24px 20px;border-radius:14px}.legal-document h1{font-size:28px}.legal-links{padding-bottom:calc(110px + env(safe-area-inset-bottom))}}
@media print{.legal-body{background:white}.legal-document{border:0;margin:0;padding:0;max-width:none;font-size:10pt}.legal-document h2{break-after:avoid}.legal-document nav,.legal-document>a:first-child{display:none}.legal-document a{color:inherit}.legal-document p{orphans:3;widows:3}}

/* Keep the sign-in screen and legal footer together inside the viewport. */
body:has(#root > .login){min-height:100dvh;display:flex;flex-direction:column}
body:has(#root > .login) #root{display:flex;flex:1}
body:has(#root > .login) .login{width:100%;min-height:0;flex:1}
body:has(#root > .login) .login-form{min-height:0;padding:28px 38px}
body:has(#root > .login) .login-form>.logo{margin-bottom:24px}
body:has(#root > .login) .login-art{padding:32px 48px}
body:has(#root > .login) .login-art .voucher-design{max-height:32dvh;object-fit:contain;object-position:left center}
body:has(#root > .login)>.legal-links{padding:8px 20px;gap:0 22px;flex-shrink:0}
@media(max-width:700px){
 body:has(#root > .login) .login-form{padding:24px;min-height:0}
 body:has(#root > .login)>.legal-links{padding:4px 16px calc(8px + env(safe-area-inset-bottom));gap:0 16px;font-size:12px}
}
@media(min-width:701px) and (max-height:740px){
 body:has(#root > .login) .login-art h1{font-size:40px}
 body:has(#root > .login) .login-art p{font-size:14px;margin-bottom:8px}
 body:has(#root > .login) .login-art .voucher-design{margin-top:14px}
 body:has(#root > .login) .login-form{padding-top:16px;padding-bottom:16px}
 body:has(#root > .login) .login-form>.logo{width:190px;margin-bottom:16px}
 body:has(#root > .login) .login-form .footnote{margin-top:16px}
}

@media(max-width:700px) and (max-height:740px){
 body:has(#root > .login) .login-form{padding:16px 24px}
 body:has(#root > .login) .login-form>.logo{width:180px;margin-bottom:16px}
 body:has(#root > .login) .login-form .footnote{margin-top:16px;margin-bottom:8px}
 body:has(#root > .login) .login-form>.actions{margin-top:4px;gap:8px}
}

.bank-panel{margin-bottom:24px}.bank-review{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid #eee8f1}.bank-selection .check{padding:12px 0;align-items:flex-start}.bank-selection small,.bank-run .help{overflow-wrap:anywhere}.bank-history-title{margin-top:28px}.bank-run{border-top:1px solid #eee8f1;padding:18px 0}.bank-run details{margin:12px 0}.bank-panel summary{cursor:pointer;color:#a81e5b}.bank-panel input[type=checkbox]{flex-shrink:0}

.hours-fields{border:1px solid #ded9e5;border-radius:12px;padding:16px;margin:20px 0;min-width:0}.hours-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;align-items:center}.hours-row input{min-width:0;width:100%;box-sizing:border-box}.hours-row label{font-size:12px}.risk-alert{border-top:1px solid #ded9e5;padding:20px 0}.risk-alert p{overflow-wrap:anywhere}textarea{font:inherit;min-height:90px;width:100%;box-sizing:border-box}
.mfa-screen{width:100%;max-width:560px;margin:0 auto;box-sizing:border-box}.mfa-connect h2{font-size:19px;margin:22px 0 12px}.mfa-open{display:block;text-align:center;text-decoration:none;box-sizing:border-box;padding:16px 20px;min-height:48px;border-radius:12px;font-weight:700;font-size:16px;line-height:1.4}.mfa-connect details{margin:18px 0}.mfa-connect summary{cursor:pointer;line-height:1.5;color:#a81e5b}.mfa-secret{font-family:monospace;font-size:16px;min-width:0;width:100%;box-sizing:border-box}.mfa-qr-option img{display:block;max-width:100%;height:auto;margin:16px auto}.mfa-connect .help{line-height:1.6}
/* Passkey setup: compact mobile layout; hidden steps remain genuinely hidden. */
.mfa-screen{min-height:0;padding:32px 24px;gap:10px;justify-content:flex-start}.mfa-screen [hidden]{display:none!important}.mfa-screen>.logo{margin-bottom:20px}.mfa-screen .mfa-open{width:100%}.mfa-screen .help{margin-bottom:0}.mfa-screen .error:empty{display:none}body:has(#root>.mfa-screen){min-height:100dvh;display:flex;flex-direction:column}body:has(#root>.mfa-screen)>#root{flex:1}body:has(#root>.mfa-screen)>.legal-links{padding:20px 24px}
/* Primary passkey action in the Centrumbon identity. */
.passkey-login{display:flex;align-items:center;gap:14px;width:100%;min-height:72px;padding:16px 18px;border:1px solid #292146;border-radius:12px;background:#292146;color:#fff;text-align:left;box-shadow:0 3px 8px #29214612;transition:background .15s,box-shadow .15s}.passkey-login:hover{background:#3c315c;box-shadow:0 4px 12px #29214622}.passkey-login:focus-visible{outline:3px solid #e33779;outline-offset:4px}.passkey-symbol{width:30px;height:30px;flex:0 0 30px;color:#f6c8da}.passkey-label{display:block;min-width:0}.passkey-label strong{display:block;font-size:16px;font-weight:650;line-height:1.4}.passkey-label small{display:block;font-size:11px;font-weight:400;color:#e2dce9;line-height:1.5;margin-top:3px}.passkey-arrow{font-size:22px;font-weight:400;margin-left:auto}.login-divider{display:flex;align-items:center;gap:12px;margin:19px 0 17px;color:#81788b;font-size:11px;white-space:nowrap}.login-divider:before,.login-divider:after{content:'';height:1px;background:#e8e3ed;flex:1}@media(max-width:360px){.passkey-login{gap:10px;padding:15px 13px}.passkey-label strong{font-size:15px}.passkey-label small{font-size:10px}.passkey-arrow{display:none}}
