*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;color:#1e332f;background:#f5f7f4}button,input,select,textarea{font:inherit}button,.btn{border:0;border-radius:8px;padding:10px 16px;background:#14534a;color:white;font-weight:650;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.btn:hover{filter:brightness(.91)}button:disabled{opacity:.55;cursor:wait}a{color:#146451}.ghost{background:#e9efea;color:#24483c}aside{width:224px;background:#fff;border-right:1px solid #dce3dc;position:fixed;inset:0 auto 0 0;padding:32px 19px;display:flex;flex-direction:column;gap:6px}.logo{font-size:30px;letter-spacing:-2px;font-weight:800;display:flex;align-items:center;gap:9px}.mark{background:#d3e8a2;color:#144b40;border-radius:11px 11px 11px 2px;width:35px;height:35px;display:grid;place-items:center;font-size:23px}.eyebrow,small{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#536d62}.navlabel{margin:35px 10px 8px}aside button{text-align:left;background:transparent;color:#4c6058}aside .active{background:#dfebdd;color:#173f34}aside footer{margin-top:auto}.shell{margin-left:224px}.bar{padding:15px 5%;background:white;border-bottom:1px solid #dde6dd;display:flex;align-items:center;justify-content:space-between;gap:12px}.bar select{max-width:55%}main{padding:32px 5%;max-width:1460px;margin:auto}.hero{position:relative;isolation:isolate;overflow:hidden;background:var(--accent,#194d47);color:white;border-radius:18px;padding:32px;min-height:195px}.hero:after{content:'';position:absolute;z-index:-1;width:300px;height:300px;right:-82px;top:-150px;border-radius:50%;border:26px double #e3f4b44d;box-shadow:0 0 0 36px #e3f4b418,0 0 0 68px #e3f4b415,0 0 0 99px #e3f4b412}.hero small{color:#e3efc8}.hero h1{max-width:78%;margin:9px 0;font:normal clamp(30px,4vw,52px)/1.1 Georgia,serif}.hero p{max-width:680px}.hero a{color:#fff}h1,h2,h3,p{margin:0 0 12px}h2{letter-spacing:-.05em;font-size:27px}h3{font-size:17px}.row,.sectionhead{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.sectionhead{justify-content:space-between;margin:25px 0 12px}.cards,.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:14px;margin:16px 0}.cols{grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr))}.card,form.panel,.panel{background:white;border:1px solid #dce4db;border-radius:13px;padding:21px}.card b{display:block;font-size:34px;letter-spacing:-.06em}.muted{color:#5c7067}.line{padding:12px 0;border-bottom:1px solid #e4e9e3;display:flex;gap:10px;align-items:center;justify-content:space-between}.line:last-child{border:0}.chip{border-radius:20px;padding:4px 9px;background:#e7f0dd;font-size:12px;color:#254534}.barline{height:9px;background:#e7ece6;border-radius:8px;overflow:hidden;margin:5px 0 13px}.barline i{display:block;background:#709c70;height:100%}label{display:block;font-size:13px;font-weight:650;margin:12px 0}input,textarea,select{max-width:100%;background:white;border:1px solid #bfcfc2;color:#203d31;border-radius:7px;padding:9px}label input:not([type=checkbox]):not([type=radio]),label select,label textarea{display:block;width:100%;margin-top:5px}textarea{min-height:72px}.center{max-width:760px;margin:30px auto}.login{max-width:440px;margin:8vh auto}.login .logo{margin-bottom:32px}.pass{width:156px;height:156px;display:block}.msg,#notice:not(:empty){background:#eff5da;color:#274436;padding:12px;border:1px solid #c4d7ad;border-radius:9px}#notice:not(:empty){position:fixed;bottom:18px;right:16px;max-width:min(440px,92vw);z-index:4}.table{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}td,th{padding:10px;border-bottom:1px solid #e6eae4}th{font-size:12px}.qrgrid{display:flex;flex-wrap:wrap;gap:16px}video{max-width:100%}:focus-visible{outline:3px solid #d59b24;outline-offset:2px}fieldset{border:1px solid #cad7cb;border-radius:8px;margin:12px 0}code{overflow-wrap:anywhere}@media(max-width:780px){aside{position:static;width:100%;padding:10px 4%;flex-direction:row;overflow:auto;align-items:center}.navlabel,aside footer{display:none}aside .logo{font-size:19px}aside button{white-space:nowrap;padding:8px}.shell{margin:0}.bar{font-size:13px}main{padding:20px 4%}.hero{padding:22px}.hero h1{max-width:90%}.center,.login{padding:12px}.cards{grid-template-columns:1fr 1fr}.mark{width:28px;height:28px}.panel,.card{padding:16px}}

/* The awards palette follows the invitation and is scoped to this event. */
body.awards{background:#f4f6fa;color:#152c51}
.awards .panel,.awards .card,.awards aside,.awards .bar{border-color:#dbe1eb}
.awards .mark{color:#f4cf78;background:#122b59}
.awards button,.awards .btn{background:#153568;color:#fff}
.awards aside button,.awards button.ghost,.awards .btn.ghost{color:#1d385d;background:#eaf0f7}
.awards aside button{background:transparent}
.awards aside button.active{background:#e9eef8;border-left:3px solid #b28639}
.awards .card{border-top:3px solid #b6934b}
.awards small,.awards .muted{color:#526584}
.awards .barline i{background:#416ba5}
.awards .chip,.awards .msg{background:#faf2dd;color:#634d20}
.awards-hero{background:linear-gradient(125deg,#0f2044,#183767 75%,#294b76);border-radius:16px;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) clamp(112px,18vw,185px);align-items:center;gap:18px;padding:22px 24px;border-bottom:4px solid #c9a859;color:#fff}
.awards-hero img{width:100%;display:block;border-radius:6px}
.awards-hero h1{font:normal clamp(27px,3.5vw,48px)/1.08 Georgia,serif;margin:10px 0}
.awards-hero small,.awards-hero strong,.theme-line{color:#f4d58a}
.awards-hero strong{font-size:13px}.theme-line{font-family:Georgia,serif;font-style:italic;font-size:1.18em}
.guest-counter{padding:12px 16px;margin:20px 0}.guest-counter legend{font-weight:650}.guest-counter .row{gap:18px;margin:4px 0 8px}.guest-counter button{height:44px;width:44px;padding:0;font-size:24px}.guest-counter button:disabled{opacity:.35;cursor:default}.guest-counter output{font-size:22px;font-weight:700;min-width:2ch;text-align:center}.party-total{margin:6px 0 0}
@media(max-width:540px){.awards-hero{padding:16px;gap:12px;grid-template-columns:minmax(0,1fr) 88px}.awards-hero h1{font-size:26px}.awards-hero p{font-size:14px}}
.name-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.center{max-width:1080px}.center>.logo{margin-bottom:22px}
.awards-hero{grid-template-columns:minmax(0,1fr) minmax(240px,42%);padding:28px;gap:32px;align-items:center}
.awards-hero h1{font-size:clamp(30px,4vw,52px)}.awards-hero img{max-height:610px;object-fit:contain;width:100%}
.panel{margin-bottom:16px}details{margin-top:22px}summary{cursor:pointer;color:#24416c;font-weight:650}
.client-view{max-width:1440px}.client-view>.logo{margin-bottom:30px}
dialog{max-width:600px;width:90vw;border:1px solid #c8d3e4;border-radius:14px;padding:26px}
dialog a,#share-output a,#voter-output a{overflow-wrap:anywhere;display:block;margin:15px 0}
dialog::backdrop{background:#0b1e4055}.question-editor{padding:18px}
td{vertical-align:middle}aside button{font-size:14px}aside .logo{margin-bottom:8px}
@media(max-width:620px){.name-fields{grid-template-columns:1fr;gap:0}.awards-hero{grid-template-columns:1fr;padding:20px;gap:20px}.awards-hero img{max-height:520px}.awards-hero h1{font-size:34px}}
/* Shared registration and client table controls. */
.table-tools{display:flex;flex-wrap:wrap;gap:14px;align-items:end;margin:18px 0 10px}.table-tools label{flex:1 1 145px;margin:0;font-size:12px;min-width:0}.table-tools label:first-child{flex:2 1 240px}.table-tools input,.table-tools select{width:100%;min-height:44px}.table-tools>button{margin-bottom:0}.table-count{font-size:12px;color:#53667b;margin:12px 0}.sort-column{background:transparent!important;color:inherit!important;padding:8px 0;text-align:left;font-size:inherit;white-space:nowrap;border:0;box-shadow:none!important}.sort-column:focus-visible{outline:2px solid #6350d9;outline-offset:4px}th[aria-sort=ascending],th[aria-sort=descending]{color:#6350d9}tr[hidden]{display:none!important}td[data-date]{white-space:nowrap}.home-link{display:block;margin:0 0 30px;font-size:14px}.login{max-width:520px;margin:70px auto}.login .panel{box-shadow:0 15px 55px #152d4c0d}.login h2{font-size:32px}.table{overflow-x:auto}td{max-width:440px;overflow-wrap:anywhere}
.table-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.table-tools>button{justify-self:start;align-self:end}.table table{min-width:900px}.table td:first-child{white-space:nowrap}td[data-date]{font-size:12px}@media(max-width:900px){.table-tools{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:540px){.table-tools{grid-template-columns:1fr}.table-tools>button{width:100%}}
/* Partiivo product branding, shared with the public website. */
:root{--ink:#102746;--muted:#56677e;--purple:#6350d9;--line:#e0e5ed;--paper:#f5f4fa}
body,body.awards{color:var(--ink);background:var(--paper)}
.logo{color:var(--ink);font-size:28px;letter-spacing:-1.2px;gap:10px;line-height:1.2}.brand-icon{width:40px;height:40px;flex-shrink:0;display:block}
button,.btn,.awards button,.awards .btn{background:var(--purple);color:white;min-height:44px;padding:12px 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.35;text-align:center}
a{color:#5140bc}.ghost,.awards button.ghost,.awards .btn.ghost{background:#eeebfa;color:#483b95}
aside,.bar,.panel,.card,.awards aside,.awards .bar,.awards .panel,.awards .card{border-color:var(--line)}
aside{gap:8px;overflow-y:auto}aside button,.awards aside button{justify-content:flex-start;text-align:left;background:transparent;color:var(--muted);border:0}aside button.active,.awards aside button.active{background:#eeebfa;color:#5140bc;border:0;box-shadow:inset 3px 0 var(--purple)}
.card,.awards .card{border-top:3px solid #c6bcf6}.barline{background:#ebe8f5}.barline i,.awards .barline i{background:var(--purple)}
small,.muted,.awards small,.awards .muted,.eyebrow{color:var(--muted)}
.chip,.msg,.awards .chip,.awards .msg,#notice:not(:empty){color:#493a91;background:#f0edfc;border-color:#dcd4f8}
input,textarea,select{color:var(--ink);border-color:#cdd5e1}fieldset{border-color:var(--line)}:focus-visible{outline:3px solid #8c7be8;outline-offset:3px}input[type=checkbox],input[type=radio]{accent-color:var(--purple)}
.awards-hero{background:linear-gradient(125deg,#33276a,#6350d9);border-bottom-color:#b5a6f0}.awards-hero small,.awards-hero strong,.theme-line{color:#f0ebff}
.row,.sectionhead{gap:12px}.actions{margin:18px 0;gap:12px}.bar{flex-wrap:wrap}.bar button{flex-shrink:0}.panel>button,.panel>.btn{margin-top:16px}.panel>button+.btn,.panel>.btn+button,.panel>button+button{margin-left:12px}.row>button,.row>.btn{margin:0}.line{gap:16px}.line>button{flex-shrink:0}.guest-counter button{display:inline-flex;min-width:44px}.sort-column{min-height:44px}.table-tools>button{margin:0}dialog .actions a{display:inline-flex;margin:0}dialog::backdrop{background:#15102f70}
.feedback-page{max-width:840px}.feedback-page>.eyebrow{margin:16px 0 24px}.feedback-page h1{font-size:clamp(28px,4vw,40px);line-height:1.15;letter-spacing:-1px;margin:8px 0 16px}.feedback-page form{padding:30px}.rating{padding:16px;margin:24px 0}.rating legend{font-size:17px;font-weight:700;padding:0 6px}.rating-options{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.rating-options label{margin:0;position:relative;cursor:pointer}.rating-options input{position:absolute;opacity:0;width:1px;height:1px}.rating-options span{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;padding:16px 5px;min-height:84px;background:#faf9fe;gap:6px}.rating-options b{font-size:24px}.rating-options small{font-size:10px;letter-spacing:0;text-transform:none;text-align:center}.rating-options input:checked+span{background:var(--purple);border-color:var(--purple);color:white;box-shadow:0 0 0 2px #d2caf3}.rating-options input:checked+span small{color:white}.rating-options input:focus-visible+span{outline:3px solid #a291f4;outline-offset:3px}.feedback-page button[type=submit],.feedback-page form>button{width:100%}.thank-mark{display:grid;place-items:center;background:#eeebfa;color:var(--purple);border-radius:50%;width:72px;height:72px;font-size:36px;margin:24px auto}.feedback-qr{display:block;width:min(100%,300px);height:auto;margin:20px auto;image-rendering:pixelated}.kiosk .feedback-page{max-width:900px}.kiosk .rating-options span{min-height:100px}.kiosk .feedback-page .panel{text-align:center}
@media(max-width:780px){aside{overflow-y:visible;overflow-x:auto;gap:8px}aside .logo{font-size:23px;flex-shrink:0}aside button{min-height:44px;padding:10px 14px;flex-shrink:0}.bar select{max-width:100%;flex:1 1 100%}.brand-icon{width:36px;height:36px}}
@media(max-width:540px){.feedback-page form{padding:18px}.rating{padding:10px}.rating-options{gap:6px}.rating-options span{padding:12px 2px}.rating-options small{font-size:9px}.rating-options b{font-size:21px}.panel>button+.btn,.panel>.btn+button,.panel>button+button{margin-left:0}.row.actions>*{flex:1 1 auto}}

dialog{color:var(--ink);background:white}

/* Semantic states: colour always accompanies a readable label. */
.state{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;font-weight:650;font-size:14px;border:1px solid transparent;white-space:normal}
.state-ok,.awards .state-ok{background:#dcfce7;color:#166534;border-color:#86d5a4}
.state-idle,.awards .state-idle{background:#eef2f6;color:#475569;border-color:#cbd5e1}
.state-pending,.awards .state-pending{background:#fff4d6;color:#854d0e;border-color:#e8c76a}
.state-error,.awards .state-error{background:#fee2e2;color:#991b1b;border-color:#f3aaaa}
.attendance-actions,.state-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
button.check-action,.awards button.check-action{background:#16733c;color:white}
button.undo-action,.awards button.undo-action{background:white;color:#475569;border:1px solid #aab6c7}
.state-legend{padding:14px 0}.desk-page{max-width:1120px;padding:24px;margin:0 auto}.desk-page h1{overflow-wrap:anywhere}.desk-page .line{gap:16px;flex-wrap:wrap}.desk-page .line>span{flex:1;min-width:160px}.desk-page .row{gap:12px;flex-wrap:wrap}.desk-page button{min-height:48px}.desk-page [hidden]{display:none!important}.desk-page form{margin:20px 0}.desk-page #outbox:not(:empty){margin:16px 0;padding:16px;border:1px solid #d8d2ef;border-radius:12px;background:white}

/* Guest confirmation and share controls, v0.6.1 */
.brand-home{color:inherit;text-decoration:none;width:fit-content}.brand-home:hover{color:#6350d9}.ticket-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:22px 0 8px}.copy-button{display:inline-flex;gap:10px;align-items:center;justify-content:center;min-height:48px}.share-link-box{max-width:min(640px,92vw);border:1px solid #ded9ef;border-radius:20px;padding:28px;color:#102746}.share-link-box::backdrop{background:#10274666}.share-link-box h2{margin-top:0;font-size:21px}.share-url{display:block;overflow-wrap:anywhere;line-height:1.7;background:#f6f4ff;border:1px solid #e4dff5;border-radius:10px;padding:14px;text-decoration:none}.registration-result{max-width:720px;padding-top:24px}.registration-result .logo{margin-bottom:28px}.confirmation-card{text-align:center;padding:42px 28px!important;border-top:4px solid #6350d9!important;box-shadow:0 12px 40px #30245709}.confirmation-card h1{font-size:clamp(26px,4vw,36px);margin:18px 0 12px;line-height:1.2}.success-medallion{height:68px;width:68px;border-radius:50%;display:grid;place-items:center;background:#dcfce7;color:#166534;font-size:34px;margin:0 auto 20px}.pending-medallion{background:#f0ecff;color:#6350d9}.registration-reference{display:inline-block;padding:9px 16px;border-radius:8px;background:#f5f3ff;font-weight:700;overflow-wrap:anywhere}.registration-ticket{background:#fff;border:1px solid #ded9ef;border-radius:20px;padding:28px;margin:24px 0}.registration-ticket>.panel{border:0;padding:0}.registration-ticket h3{text-align:center;font-size:25px}.registration-ticket details{margin-top:24px;border-top:1px solid #e4e7ef;padding-top:20px}.registration-ticket summary{cursor:pointer;font-weight:650}.guest-save-status{max-width:720px;padding:0 20px;color:#58667b;font-size:14px}.confirmation-fallback{display:inline-block;margin-top:10px}.registration-ticket .ticket-actions{justify-content:center}@media(max-width:600px){.registration-ticket{padding:20px}.confirmation-card{padding:30px 20px!important}.ticket-actions>button{width:100%}}

.registration-loading{min-height:65vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;text-align:center}.registration-loading p{color:var(--muted,#536580);font-size:16px}.loading-ring{width:32px;height:32px;border:3px solid #e8e3fc;border-top-color:#6350d9;border-radius:50%;animation:loading-spin 1s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loading-ring{animation:none}}

/* Workspace surfaces: quiet contrast and compact operational labels. */
.shell{background:#f0f2f8;min-height:100vh}
.shell .bar{background:#f8f7fc;border-bottom-color:#dcdfea}
.shell .panel,.shell .card{border-radius:8px;border-color:#dce1ec}
.shell .card{background:#f7f8fc;border-top:3px solid #b8afe7}
.shell .panel>h3{padding-bottom:12px;border-bottom:1px solid #e2e5ef;margin-bottom:16px}
.shell .table-tools{background:#f0eef9;border:1px solid #ded9ef;border-radius:6px;padding:16px;gap:12px 16px;margin-bottom:12px}
.shell .table-tools label{margin:0;color:#354463}
.shell .table-tools input,.shell .table-tools select{background:#fff;border-color:#cbd2e2;border-radius:5px}
.shell .table-tools button{align-self:end;justify-self:start;min-height:42px;border-radius:5px}
.shell .table-count{color:#52617b;padding:4px 2px 10px;margin:0}
.shell table thead{background:#e9edf5}
.shell table th{border-bottom:1px solid #ccd4e3;padding-top:12px;padding-bottom:12px}
.shell table td{border-bottom:1px solid #e0e5ee;vertical-align:middle}
.shell table tbody tr:nth-child(even){background:#f5f7fb}
.shell table tbody tr:hover{background:#eeedf9}
.shell .sort-column{border-radius:3px}
.state.shift-review,.awards .state.shift-review{border-radius:4px;border-width:0 0 0 3px;padding:7px 10px;font-size:13px;font-weight:600;line-height:1.45;letter-spacing:0;min-width:168px;max-width:220px;text-align:left;white-space:normal;display:inline-block}
.state.shift-review.state-idle,.awards .state.shift-review.state-idle{background:#edf2f8;color:#354b66;border-color:#8da5c4}
.state.shift-review.state-pending,.awards .state.shift-review.state-pending{background:#fff5e2;color:#765014;border-color:#c99d48}
.desk-page .panel{border-radius:8px}.desk-page .line:nth-child(even),#list .guest:nth-child(even){background:#f5f7fb}
@media(max-width:780px){.shell .table-tools{padding:12px;gap:12px}.state.shift-review{min-width:150px}.shell .card{padding:16px}}
