@charset "UTF-8";
:root{color-scheme:dark;--bg:#0c1523;--panel:#18263a;--panel2:#21334a;--text:#f5f8fb;--muted:#b0bdce;--line:#3e536f;--aqua:#77dcc4;--gold:#e1ba78;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);height:100%;overscroll-behavior:none}
body{margin:0;background:var(--bg);color:var(--text);width:100%;height:100%;min-height:100dvh;overflow:hidden}
button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.48}
input,select{background:#0f2032;color:#fff;border:1px solid #5a6d86;border-radius:10px;padding:8px 10px;min-height:44px;min-width:0}
input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}
button.btn,.btn{background:var(--aqua);color:#06251f;border:0;border-radius:11px;padding:10px 15px;font-weight:800;min-height:46px;display:inline-flex;align-items:center;justify-content:center}
.btn.secondary{background:#2b3e56;color:#f8fafc;border:1px solid #4e6583}
.boot{display:flex;align-items:center;justify-content:center;gap:15px;height:100dvh;padding:28px;color:#eaf8ff}
.spinner{width:28px;height:28px;border-radius:50%;border:3px solid #66778c;border-top-color:var(--aqua);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.brand,.loginbrand{display:flex;align-items:center;gap:10px;min-width:0}
.brand-icon{display:grid;place-items:center;background:#2cbe9d;color:#031d1c;border-radius:10px;width:34px;height:34px;font-size:21px;font-weight:900;flex-shrink:0}
.brand strong{font-size:.96rem}.brand small{display:block;font-size:.69rem;color:var(--muted)}
#app{height:100dvh;min-height:0}
.scan-app{width:min(100%,1240px);height:100dvh;min-height:0;margin:auto;padding:calc(env(safe-area-inset-top) + 6px) clamp(7px,1.5vw,18px) calc(env(safe-area-inset-bottom) + 7px);display:flex;flex-direction:column;gap:6px;overflow:hidden}
.main-header{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:0 0 6px;border-bottom:1px solid #324459;flex:0 0 auto;min-height:42px}
.account{display:flex;align-items:center;gap:9px;min-width:0}.account span{font-size:.72rem;color:var(--muted);max-width:195px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.smallbtn{min-height:38px;padding:6px 12px;border:1px solid #657993;border-radius:9px;background:#202e42;color:var(--text);font-weight:700;flex-shrink:0}
.scan-footer{display:none}
.loginwrap{display:grid;place-items:center;min-height:100dvh;padding:16px;overflow-y:auto}.loginpanel,.panel{background:var(--panel);border:1px solid #354c65;border-radius:20px;padding:26px;max-width:440px;width:100%;box-shadow:0 14px 45px #0004}
.loginbrand{font-weight:850;letter-spacing:.09em;font-size:.79rem;color:var(--aqua);margin-bottom:28px}
.loginpanel h1,.panel h1{font-size:1.8rem;margin:6px 0 8px}.eyebrow{color:var(--aqua);font-weight:800;letter-spacing:.06em;font-size:.82rem;text-transform:uppercase}.muted,.fine,.scan-muted{color:var(--muted)}.fine{font-size:.79rem;line-height:1.5;margin-top:20px}
#login-form{display:grid;gap:14px;margin-top:24px}#login-form label{display:grid;gap:6px;color:#ecf4ff;font-size:.91rem}#login-form button{margin-top:3px;min-height:54px}
.notice{padding:12px;background:#61382157;border:1px solid #d6a86a;border-radius:12px;line-height:1.4;overflow-wrap:anywhere}
.system-error{margin:12vh auto}.system-error pre{white-space:pre-wrap;overflow-wrap:anywhere;color:#fbdfc8}.buttons{display:flex;gap:10px;flex-wrap:wrap}
.scan-page{flex:1 1 0;min-width:0;min-height:0;max-height:100%;overflow:hidden}
.scan-root{height:100%;min-height:0;min-width:0;max-width:100%;overflow:hidden}
.scan-camera-root{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:7px}
.scan-compact{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-width:0}
.scan-intro{min-width:0}.scan-intro h1{font-size:clamp(1rem,2.7vw,1.35rem);margin:0;font-weight:790;white-space:nowrap}
.scan-eyebrow{display:block;color:var(--aqua);font-size:.59rem;letter-spacing:.12em;font-weight:850}
.scan-selectors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-width:0}
.scan-field{display:grid;gap:2px;min-width:0;font-size:.67rem;font-weight:700;color:var(--muted)}.scan-field select{max-width:100%;min-width:0;width:100%;font-size:.86rem;padding:6px 8px;min-height:42px}
#scan-event-note:empty{display:none}
.scan-camera-shell{position:relative;background:#050b10;border:1px solid #52677e;border-radius:14px;overflow:hidden;min-width:0;min-height:0;isolation:isolate}
.scan-camera-target{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;min-height:0;overflow:hidden}
.scan-camera-target video,.scan-camera-target canvas{object-fit:cover!important;width:100%!important;height:100%!important;max-height:100%!important;min-height:0!important}
.scan-camera-shell::after{content:'';position:absolute;inset:19% 29%;border:3px solid #e5fff5b0;border-radius:18px;box-shadow:0 0 0 100vmax #00000019;pointer-events:none;z-index:5}
.scan-camera-guide{display:none}
.scan-camera-message{position:absolute;z-index:7;bottom:10px;left:10px;right:10px;margin:auto;width:max-content;max-width:calc(100% - 20px);padding:7px 12px;background:#050a0edc;border-radius:10px;color:white;text-align:center;font-size:.8rem}
.scan-camera-tools{min-width:0;display:flex;gap:8px;align-items:start;flex-wrap:wrap}
.scan-manual-details{max-width:100%;min-width:0}.scan-manual-details summary{min-height:35px;display:flex;align-items:center;list-style:none;color:var(--aqua);font-weight:760;font-size:.81rem;cursor:pointer;padding:6px 10px;border:1px solid #496078;border-radius:9px;background:#213047}.scan-manual-details summary::-webkit-details-marker{display:none}
.scan-manual-details[open]{width:100%}.scan-manual{display:grid;gap:4px;margin-top:5px}.scan-manual label{font-size:.7rem;color:var(--muted)}.scan-manual-row{display:flex;gap:6px;min-width:0}.scan-manual-row input{flex:1;min-width:0}.scan-manual-row button{min-width:100px}
.scan-retry{min-height:35px;background:none;color:var(--aqua);border:0;font-size:.8rem;text-decoration:underline;padding:5px}.scan-retry[hidden]{display:none}
.scan-error{padding:7px 10px;margin:0;border-radius:8px;background:#6b211e66;color:#ffe4e0;border:1px solid #a64c45;overflow-wrap:anywhere;font-size:.78rem}
.scan-loading{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;text-align:center;padding:20px}.scan-loading h1{font-size:1.4rem}
.scan-spinner{height:40px;width:40px;border-radius:50%;border:4px solid #7887a2;border-top-color:#a5ecdb;animation:spin 900ms linear infinite}
.scan-result-root{display:flex;flex-direction:column;gap:9px;min-height:0}
.scan-context{font-size:.74rem;color:var(--muted);font-weight:760;display:flex;gap:6px;flex:0 0 auto}
.scan-result-summary{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;flex:0 0 auto}
.scan-person{display:grid;grid-template-columns:clamp(94px, min(20dvh,35vw), 166px) minmax(0,1fr);align-items:center;gap:11px;min-width:0;background:#1c2c42;border:1px solid #3d536b;border-radius:12px;padding:8px}
.scan-portrait{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;border:1px solid #657287}.scan-avatar{display:grid;place-items:center;background:#253044;font-size:2rem}
.scan-person-text{display:grid;gap:5px;overflow-wrap:anywhere;min-width:0}.scan-person-text h1{font-size:clamp(1rem,3.3vw,1.45rem);line-height:1.14;margin:0}.scan-person-text strong{font-size:clamp(.77rem,2.4vw,.94rem);color:#a9edd9;font-weight:790}
.scan-decision{border:2px solid;border-radius:12px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0}
.scan-decision>strong{font-size:clamp(.93rem,2.8vw,1.19rem);line-height:1.2}.scan-decision>span{font-size:.76rem;line-height:1.2;text-align:right;max-width:45%}
.scan-success{border-color:#53bc90;background:#21845144}.scan-payment{border-color:#e3bc6b;background:#92702035}.scan-denied{border-color:#df6d70;background:#97393f4b}
.scan-quick-perks{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;flex:0 0 auto}
.scan-pill-row{display:flex;flex-wrap:wrap;gap:5px;min-width:0}.scan-pill{padding:5px 9px;border-radius:8px;background:#293e54;color:#ddf2fc;border:1px solid #3c5369;font-size:.77rem;font-weight:690;white-space:nowrap}
.scan-details-link{margin:0;padding:5px 8px;color:var(--aqua);background:none;border:0;text-decoration:underline;font-size:.78rem;flex-shrink:0}
.scan-result-spacer{flex:1 1 0;min-height:0}
.scan-result-bottom{display:flex;flex-direction:column;gap:7px;flex:0 0 auto;min-width:0}
.scan-admit-form{display:flex;flex-direction:column;gap:7px;min-width:0}
.scan-control-row{display:flex;justify-content:space-between;align-items:center;gap:7px;background:#182638;border:1px solid #3d536b;border-radius:11px;padding:5px 8px}
.scan-guest-label{font-weight:730;font-size:.85rem}.scan-guest-label small{display:block;color:var(--muted);font-size:.65rem;font-weight:500}
.scan-stepper{display:flex;align-items:center;gap:2px;flex-shrink:0}.scan-stepper button{border:1px solid #597087;border-radius:8px;background:#283a50;color:#fff;width:42px;min-height:40px;font-size:1.35rem;font-weight:750}.scan-stepper input[type=number]{width:46px;text-align:center;min-height:40px;padding:0 2px;border:0;background:transparent;-moz-appearance:textfield}.scan-stepper input::-webkit-inner-spin-button,.scan-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.scan-paid-toggle{display:flex;gap:10px;align-items:center;background:#25394c;padding:5px 9px;border-radius:9px;font-weight:760;font-size:.85rem}.scan-paid-toggle input{width:22px;height:22px;min-height:22px;accent-color:var(--aqua)}
.scan-big-btn{width:100%;min-height:46px;font-size:.99rem;font-weight:850;flex:0 0 auto}
.scan-details-dialog{width:min(92vw,550px);max-height:min(88dvh,750px);border-radius:18px;background:#15263b;color:#fff;border:1px solid #60768d;padding:18px;box-shadow:0 18px 70px #000c;overscroll-behavior:contain}
.scan-details-dialog::backdrop{background:#040c14d6}.scan-details-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.scan-details-head h2{margin:0;font-size:1.15rem}.scan-close{min-height:44px;background:#294158;color:#fff;border:1px solid #6a8099;border-radius:10px;padding:6px 12px}
.scan-details-body{display:flex;flex-direction:column;gap:9px;max-height:calc(85dvh - 84px);overflow-y:auto;padding:12px 2px 4px}.scan-details-body>.scan-portrait{width:120px}.scan-details-body h3{margin:0}.scan-details-body p{margin:0}.scan-feature{display:flex;justify-content:space-between;gap:8px;padding:9px;border:1px solid #51657c;border-radius:9px;flex-wrap:wrap;overflow-wrap:anywhere;background:#1a2939}.scan-feature strong{font-size:.84rem}.scan-feature span{font-size:.78rem;color:var(--muted)}
@media (min-width:800px){
 .scan-camera-root{grid-template-columns:minmax(245px,340px) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;column-gap:18px;row-gap:10px}
 .scan-camera-root>.scan-compact{grid-column:1;grid-row:1;align-content:start;display:flex;flex-direction:column;align-items:stretch;gap:18px;padding:18px 15px;border-radius:14px;background:#152338;border:1px solid #374b61}
 .scan-intro h1{font-size:1.55rem}.scan-eyebrow{font-size:.69rem}.scan-selectors{grid-template-columns:1fr;gap:14px}.scan-field{font-size:.8rem}.scan-field select{min-height:48px;font-size:1rem}
 .scan-camera-root>.scan-camera-shell{grid-column:2;grid-row:1/3}
 .scan-camera-root>.scan-camera-tools{grid-column:1;grid-row:2;display:grid;gap:8px;align-content:end;padding-bottom:5px}
 .scan-camera-shell::after{inset:20% 22%}
 .scan-result-root{display:grid;grid-template-columns:minmax(0,1fr) minmax(285px,.65fr);grid-template-rows:auto auto auto;column-gap:20px;row-gap:14px;align-items:start;align-content:center}
 .scan-result-root>.scan-context{grid-column:1/-1}.scan-result-summary{grid-column:1;grid-row:2}.scan-quick-perks{grid-column:1;grid-row:3;display:flex;flex-direction:column;align-items:flex-start;justify-content:start;gap:15px}.scan-pill-row{gap:9px}.scan-pill{font-size:.91rem;padding:9px 12px}
 .scan-result-spacer{display:none}.scan-result-bottom{grid-column:2;grid-row:2/4;align-self:start;justify-content:flex-start;background:#142238;border:1px solid #3d536b;border-radius:15px;padding:18px;gap:11px}
 .scan-admit-form{gap:12px}.scan-big-btn{min-height:58px;font-size:1.04rem}.scan-person{grid-template-columns:clamp(150px,25dvh,235px) minmax(0,1fr);padding:13px}.scan-person-text h1{font-size:clamp(1.5rem,3vw,2.05rem)}.scan-person-text strong{font-size:1.02rem}.scan-decision{padding:16px}.scan-decision>strong{font-size:1.3rem}.scan-decision>span{font-size:.85rem}
}
@media (max-width:799px){.scan-camera-root>.scan-camera-tools{align-self:end}.scan-quick-perks{min-height:30px}}
@media (max-width:440px){.main-header{min-height:38px}.account span{max-width:80px}.scan-compact{grid-template-columns:1fr;gap:5px}.scan-intro{display:none}.scan-selectors{width:100%}.scan-result-root{gap:7px}.scan-result-summary{gap:6px}.scan-person{grid-template-columns:clamp(94px,min(20dvh,35vw),156px) minmax(0,1fr);padding:6px}.scan-decision>span{font-size:.71rem}.scan-pill{font-size:.73rem;padding:4px 7px}.scan-context{font-size:.7rem}}
@media (max-height:690px){.scan-app{gap:4px}.main-header{min-height:35px;padding-bottom:3px}.brand-icon{width:29px;height:29px;font-size:18px}.brand strong{font-size:.88rem}.brand small{font-size:.61rem}.smallbtn{min-height:34px;padding:5px 8px}.scan-field select{min-height:38px}.scan-camera-root{gap:4px}.scan-result-root{gap:5px}.scan-person{grid-template-columns:clamp(90px,min(19dvh,30vw),132px) minmax(0,1fr);gap:8px}.scan-decision{padding:7px 9px}.scan-pill{padding:3px 7px}.scan-control-row{padding:3px 8px}.scan-stepper button{min-height:38px}.scan-big-btn{min-height:44px}.scan-result-bottom,.scan-admit-form{gap:5px}}
@media (max-height:530px) and (max-width:799px){.scan-app{padding-top:calc(env(safe-area-inset-top) + 2px);padding-bottom:calc(env(safe-area-inset-bottom) + 2px)}.scan-result-root{gap:3px}.scan-context{display:none}.scan-quick-perks{min-height:0}.scan-person{grid-template-columns:clamp(53px,16dvh,77px) minmax(0,1fr);padding:4px}.scan-person-text{gap:1px}.scan-person-text h1{font-size:1rem}.scan-person-text strong{font-size:.73rem}.scan-decision{padding:5px 7px}.scan-decision>span{display:none}.scan-pill-row{gap:3px}.scan-pill{padding:2px 5px;font-size:.68rem}.scan-details-link{font-size:.7rem}.scan-guest-label{font-size:.75rem}.scan-guest-label small{display:none}.scan-stepper input{width:38px}.scan-stepper button{min-height:35px;width:38px}.scan-big-btn{min-height:42px}.scan-paid-toggle{padding:2px 6px}}
@media (orientation:landscape) and (max-height:520px) and (max-width:799px){.scan-camera-root{grid-template-columns:190px minmax(0,1fr);grid-template-rows:1fr auto}.scan-camera-root>.scan-compact{grid-column:1;grid-row:1;align-content:start}.scan-camera-root>.scan-camera-shell{grid-column:2;grid-row:1/3}.scan-camera-root>.scan-camera-tools{grid-column:1;grid-row:2}.scan-selectors{grid-template-columns:1fr}.scan-compact .scan-intro{display:block}.scan-intro h1{font-size:1rem}.scan-result-root{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.8fr);grid-template-rows:auto minmax(0,1fr)}.scan-result-summary{grid-column:1;grid-row:1}.scan-quick-perks{grid-column:1;grid-row:2;align-items:start;align-self:start;display:flex;flex-direction:column}.scan-result-spacer{display:none}.scan-result-bottom{grid-column:2;grid-row:1/3;align-self:end}.scan-decision>span{display:none}}
@media (prefers-reduced-motion:reduce){.spinner,.scan-spinner{animation:none}}

@media (max-width:365px){.brand strong{font-size:.84rem;white-space:nowrap}.brand small,.account span{display:none}.main-header{min-height:35px}.scan-decision>span{display:none}}


/* Larger customer photo: clearly recognizable while preserving admission actions.
   The photo can be enlarged without scrolling the main workflow. */
.scan-photo-button{display:block;position:relative;border:0;padding:0;background:transparent;border-radius:11px;min-width:0;align-self:stretch;overflow:hidden;cursor:zoom-in}
.scan-photo-button .scan-portrait{display:block;width:100%;height:100%;max-height:100%;object-fit:cover;border-radius:10px}
.scan-photo-hint{position:absolute;bottom:4px;right:4px;background:#071625d9;padding:3px 5px;font-size:.66rem;font-weight:700;color:#e7fff6;border-radius:6px;pointer-events:none}
.scan-photo-dialog{width:min(94vw,560px);max-height:92dvh;background:#142237;color:white;border:1px solid #55728f;border-radius:16px;padding:16px;box-shadow:0 20px 80px #000d;text-align:center;overscroll-behavior:contain}
.scan-photo-dialog::backdrop{background:#010811dc}
.scan-photo-dialog img{width:100%;max-height:min(70dvh,660px);object-fit:contain;border-radius:10px;display:block;margin:10px auto}
.scan-photo-dialog strong{display:block;font-size:1.15rem;padding:6px}
.scan-photo-close{display:block;margin-left:auto;min-width:44px;min-height:44px;border-radius:8px;border:1px solid #7086a2;background:#263a51;color:white;font-size:1.15rem}
/* Prefer a visibly larger portrait when the phone has room.
   On very short screens the existing compact rules keep every button in view. */
@media (max-width:799px) and (min-height:540px) and (max-height:699px) and (orientation:portrait){
 .scan-person{grid-template-columns:clamp(115px,min(26dvh,43vw),165px) minmax(0,1fr)}
}
@media (max-width:799px) and (min-height:700px) and (orientation:portrait){
 .scan-person{grid-template-columns:clamp(142px,min(25dvh,45vw),205px) minmax(0,1fr)}
}

/* Kveldens arrangement hentes automatisk – ikke brukeren som bestemmer VIP-reglene. */
.scan-event-status{display:block;line-height:1.25;padding:4px 7px;font-size:.7rem;font-weight:730;background:#203347;border:1px solid #446078;color:#d2edf2;border-radius:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.scan-event-status.restricted,.scan-context-policy.restricted{background:#483b23;color:#ffe1a0;border-color:#ad8340}
.scan-context-policy{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:720;padding:2px 7px;border:1px solid #385569;border-radius:6px}
@media (min-width:800px){.scan-compact .scan-event-status{white-space:normal;line-height:1.45;font-size:.86rem;padding:8px 10px}}
@media (max-height:530px){.scan-event-status{font-size:.66rem;padding:2px 5px}}
.scan-context>span:first-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scan-context .scan-context-policy{flex:0 1 auto;max-width:82%;min-width:0}
@media (max-width:440px){.scan-context{gap:4px}.scan-context .scan-context-policy{max-width:85%;padding:2px 5px}}
