:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--green);background:var(--page);color-scheme:light;font-synthesis:none;line-height:1.5;--green:#173e36;--muted:#67756e;--border:#dce2d9;--page:#f8f7f2;--surface:#fff;--input:#fdfdfa;--soft:#e9eee5;--gold:#8c692e;--danger:#855347;--notice:#fff4d9}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button{transition:background .15s,transform .15s}button:hover{transform:translateY(-1px)}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #c18a35;outline-offset:4px}input:focus,textarea:focus{outline:2px solid #558578;outline-offset:1px}a{color:inherit;text-decoration:none}.header,main,footer{max-width:1120px;margin:auto}.header{display:flex;justify-content:space-between;align-items:center;padding:25px 32px;border-bottom:1px solid var(--border);gap:16px}.brand{font-weight:750;font-size:22px;letter-spacing:-1px;white-space:nowrap}.brand-icon{color:#aa7534;padding-right:6px}.language{display:flex;align-items:center;gap:10px;font-size:13px}.language select{border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--surface);color:var(--green)}main{padding:0 32px}.intro{padding:54px 0 30px;max-width:780px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:750;color:var(--gold);margin:0 0 12px}h1{font-family:Georgia,serif;font-size:clamp(36px,5.2vw,58px);font-weight:400;line-height:1.1;letter-spacing:-1.5px;margin:0 0 20px}h2{font-size:23px;letter-spacing:-.6px;line-height:1.3;margin:0}h3{line-height:1.4}.intro-copy{color:var(--muted);font-size:17px;margin:0 0 20px}.badge{font-size:11px;font-weight:600;padding:7px 11px;background:var(--soft);border-radius:30px;display:inline-block}.summary{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:24px 0;margin:10px 0 40px}.summary>div{padding:0 26px;border-right:1px solid var(--border)}.summary>div:last-child{border:0}.summary-label{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.summary strong{font-size:27px;letter-spacing:-1px;font-weight:650}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:36px;align-items:start}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.small-mark{font-size:32px;color:#a77c38}.section-heading .eyebrow{margin-bottom:5px}.empty-state{border:1px dashed #c8d3c6;border-radius:14px;min-height:310px;padding:38px 26px;text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.empty-icon{font-size:44px;color:#9a773c}.empty-state h3{font-size:18px;margin:10px 0}.empty-state p{font-size:14px;color:var(--muted);max-width:300px;margin:0 0 24px}.primary,.secondary{border-radius:8px;padding:12px 17px;font-size:14px;font-weight:650}.primary{background:var(--green);color:var(--page);border:1px solid var(--green);width:100%;margin-top:20px}.primary:hover{filter:brightness(1.12)}.secondary{background:transparent;color:var(--green);border:1px solid #bac9bd}.secondary:hover{background:var(--soft)}.form-panel{padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:14px}.form-panel h2{margin-bottom:24px}form label{display:block;font-size:12px;font-weight:650;margin:16px 0 7px}input,textarea{border:1px solid #cfd8ce;border-radius:7px;width:100%;padding:10px 11px;background:var(--input);color:var(--green);min-width:0}#number{font-size:28px;letter-spacing:8px;font-weight:650}small{color:var(--muted);font-size:11px}#number-hint{display:block;margin-top:6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.local-note{font-size:11px;color:var(--muted);margin:16px 0 0}.ticket-list{display:grid;gap:18px}.ticket{background:var(--surface);border:1px solid var(--border);border-left:4px solid #b88c43;border-radius:12px;padding:22px;min-width:0}.ticket-top,.ticket-bottom{display:flex;justify-content:space-between;gap:12px;align-items:center}.ticket-caption{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;font-weight:700}.ticket-year{font-size:12px;color:var(--muted)}.ticket-number{font-size:38px;letter-spacing:7px;margin:18px 0 10px;overflow-wrap:anywhere}.ticket-details,.ticket-notes{font-size:12px;color:var(--muted);overflow-wrap:anywhere;white-space:pre-wrap}.ticket-notes:empty,.ticket-details:empty{display:none}.ticket-bottom{border-top:1px dashed var(--border);margin-top:20px;padding-top:14px}.delete-button{font-size:12px;color:var(--danger);border:0;background:transparent;border-radius:5px;padding:7px}.delete-button:hover{background:#f8eeea}.roadmap{background:#eaf0e7;border-radius:14px;display:flex;gap:22px;padding:28px;margin:36px 0}.roadmap>span{font-size:28px}.roadmap h2{font-size:20px}.roadmap p{font-size:14px;color:#51665a;margin:8px 0}.roadmap small{display:block}#status:empty{display:none}#status{border-left:3px solid #a77c38;background:var(--notice);padding:12px 16px;font-size:14px;position:fixed;bottom:18px;left:50%;transform:translateX(-50%);width:min(90vw,540px);box-shadow:0 3px 20px #173e3620;z-index:5}footer{display:flex;justify-content:space-between;gap:12px;padding:24px 32px 35px;color:var(--muted);font-size:11px;border-top:1px solid var(--border)}footer>span:first-child{font-weight:750;color:var(--green)}[hidden]{display:none!important}
@media(max-width:800px){.workspace{grid-template-columns:1fr 310px;gap:22px}.summary>div{padding:0 18px}.form-panel{padding:20px}}
@media(max-width:650px){.header{padding:20px}.language>span{display:none}main{padding:0 20px}.intro{padding-top:36px}.intro-copy{font-size:15px}h1{letter-spacing:-1px}.summary{margin-bottom:30px;padding:20px 0}.summary>div{padding:0 12px}.summary strong{font-size:23px}.summary-label{font-size:10px}.workspace{grid-template-columns:1fr}.form-panel{margin-top:6px}.empty-state{min-height:245px;padding:24px 18px}.roadmap{padding:22px;gap:16px;margin-top:26px}footer{padding:22px 20px;flex-wrap:wrap}.ticket-number{font-size:34px}}

/* The ticket keeps its paper palette in both themes, like a photographed ticket. */
:root[data-theme="dark"] {
  color-scheme: dark;
  --page: #101c19;
  --surface: #192b25;
  --input: #12211c;
  --soft: #283d31;
  --green: #e0eee3;
  --muted: #acbfb3;
  --border: #395045;
  --gold: #d4b77b;
  --danger: #efb1a3;
  --notice: #3c3320;
}
.header-controls { display:flex; align-items:center; gap:18px; }
.profile-menu { position:relative; }
.profile-menu summary { display:grid; place-items:center; width:44px; height:44px; border:1px solid var(--border); border-radius:50%; color:var(--green); background:var(--surface); cursor:pointer; list-style:none; }
.profile-menu summary::-webkit-details-marker { display:none; }
.profile-menu summary:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.profile-menu summary:hover, .profile-menu[open] summary { background:var(--soft); }
.profile-popover { position:absolute; z-index:10; top:calc(100% + 12px); right:0; width:min(240px,calc(100vw - 40px)); padding:10px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:0 12px 32px #0002; }
.profile-popover p { margin:6px 10px 10px; font-size:12px; color:var(--muted); }
.profile-popover button { display:flex; align-items:center; gap:12px; width:100%; padding:12px 10px; text-align:left; border:0; border-radius:7px; background:transparent; color:var(--green); font-size:14px; }
.profile-popover button:hover { background:var(--soft); transform:none; }
.settings-dialog { width:min(420px,calc(100vw - 32px)); max-height:calc(100dvh - 48px); padding:26px; overflow:auto; border:1px solid var(--border); border-radius:16px; background:var(--surface); color:var(--green); box-shadow:0 20px 70px #0004; }
.settings-dialog::backdrop { background:#07140fb3; }
.settings-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:26px; }
.icon-button { display:grid; place-items:center; flex-shrink:0; width:40px; height:40px; padding:0; border:1px solid var(--border); border-radius:50%; background:var(--soft); color:var(--green); }
.settings-options { display:grid; gap:20px; }
.settings-options .language { justify-content:space-between; font-size:14px; }
.settings-options .language>span { display:block; }
.settings-options .language select { width:150px; max-width:60%; padding:10px; }
.settings-dialog p { margin:24px 0; font-size:12px; color:var(--muted); }
.settings-dialog form { display:flex; justify-content:flex-end; }
@media(prefers-reduced-motion:reduce) { button { transition:none; } }
main { padding-top:24px; }
.summary > div { text-align:center; }
.draw-countdown { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; margin:0 0 18px; color:var(--muted); }
.countdown-heading { display:flex; align-items:center; gap:6px; }
.countdown-heading>svg { width:14px; height:14px; flex-shrink:0; }
.countdown-heading h2 { font-size:12px; font-weight:500; letter-spacing:0; }
.countdown-heading p { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.countdown-clock { display:flex; gap:9px; }
.countdown-clock>div { display:flex; align-items:baseline; gap:2px; }
.countdown-clock strong { font-size:13px; line-height:1.3; font-weight:600; color:var(--green); font-variant-numeric:tabular-nums; }
.countdown-clock span { font-size:11px; }
#countdown-ended { flex-basis:100%; margin:0; font-size:11px; }
.language select { max-width:125px; }
.brand-icon, .small-mark, .empty-icon { color:var(--gold); }
.empty-state, input, textarea, .secondary { border-color:var(--border); }
.roadmap { background:var(--soft); }
.roadmap p { color:var(--muted); }
.delete-button:hover { background:var(--soft); }
.ticket-preview { margin:0 0 24px; }
.ticket-preview figcaption { font-size:11px; color:var(--muted); margin-top:8px; text-align:center; }
.ticket-preview svg, .ticket-art svg { display:block; width:100%; height:auto; border-radius:8px; }
.ticket-art { margin:-10px -10px 18px; }
.ticket-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.download-button { border:1px solid var(--border); border-radius:6px; background:var(--soft); color:var(--green); padding:7px 10px; font-size:12px; }
.download-button:hover { border-color:var(--gold); }
.workspace { display:block; }
.collection { min-width:0; max-width:760px; margin-inline:auto; }
.add-ticket-fab { display:grid; place-items:center; position:fixed; right:max(24px,env(safe-area-inset-right)); bottom:calc(24px + env(safe-area-inset-bottom)); z-index:20; width:60px; height:60px; padding:0; border:1px solid var(--border); border-radius:50%; background:var(--green); color:var(--page); box-shadow:0 7px 22px #0004; }
.add-ticket-fab:hover { transform:translateY(-2px); }
.add-methods { display:grid; gap:14px; }
.add-method { display:flex; align-items:center; gap:16px; width:100%; padding:18px 14px; border:1px solid var(--border); border-radius:12px; background:var(--input); color:var(--green); text-align:left; }
.add-method>svg { flex-shrink:0; }
.add-method>span:first-of-type { flex:1; }
.add-method strong { display:block; font-size:14px; }
.add-method small { display:block; margin-top:4px; }
.add-method:not(:disabled):hover { background:var(--soft); transform:none; }
.manual-dialog { width:min(480px,calc(100vw - 32px)); }
.manual-dialog #ticket-form { display:block; }
.manual-dialog .settings-heading { margin-bottom:8px; }
.manual-dialog .local-note { font-size:11px; margin:16px 0 0; }
.scanner-dialog { width:min(560px,calc(100vw - 32px)); }
.scanner-dialog .settings-heading { margin-bottom:12px; }
.scanner-dialog p { margin:14px 0; }
.scanner-source-buttons,.scanner-tools { display:flex; flex-wrap:wrap; gap:10px; }
.scanner-source-buttons button { flex:1; }
.scanner-tools button { padding:8px 12px; font-size:12px; }
.scanner-photo-stage { text-align:center; margin-top:18px; }
.scanner-image-wrap { position:relative; display:inline-block; max-width:100%; overflow:hidden; touch-action:none; user-select:none; cursor:crosshair; }
#scanner-image { display:block; max-width:100%; max-height:38dvh; width:auto; height:auto; }
.scanner-crop { position:absolute; inset:0; border:2px solid #d2a852; box-shadow:0 0 0 2000px #0007; pointer-events:none; }
.scanner-dialog .scanner-crop-hint { font-size:11px; }
.scanner-dialog .scanner-privacy { font-size:11px; }
#scanner-status:empty { display:none; }
#scanner-status { padding:10px; background:var(--soft); border-radius:7px; }
#scanner-progress { display:block; width:100%; margin:18px 0 0; accent-color:var(--gold); }
.scanner-manual-link { display:block; margin:10px auto 0; padding:8px; border:0; background:transparent; color:var(--green); text-decoration:underline; font-size:12px; }
#manual-status:empty { display:none; }
#status { bottom:calc(100px + env(safe-area-inset-bottom)); }
footer { padding-bottom:110px; }
.wallet-track { display:flex; position:relative; gap:16px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-padding-inline-start:8px; scrollbar-width:none; padding:14px calc(6% + 8px) 22px 8px; -webkit-overflow-scrolling:touch; }
.wallet-track::-webkit-scrollbar { display:none; }
.wallet-track.wallet-single { padding-right:8px; }
.wallet-card { flex:0 0 100%; min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
.ticket-open { display:block; width:100%; padding:10px; border:0; border-radius:14px; background:#fff; box-shadow:0 8px 18px #0002; }
.ticket-open:hover { transform:none; box-shadow:0 10px 24px #0003; }
.ticket-open:focus-visible { outline-offset:3px; }
.wallet-card .ticket-art { display:block; margin:0; }
.wallet-card .ticket-art svg { border-radius:2px; }
.wallet-navigation { display:flex; align-items:center; gap:8px; }
.wallet-navigation .icon-button { width:36px; height:36px; }
#wallet-position { min-width:42px; text-align:center; font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; }
.ticket-dialog { width:min(620px,calc(100vw - 32px)); }
#ticket-dialog-art { padding:10px; border-radius:12px; background:#fff; }
#ticket-dialog-art svg { display:block; width:100%; height:auto; border-radius:2px; }
.ticket-dialog-details { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:24px 0; }
.ticket-dialog-details dt { font-size:12px; color:var(--muted); }
.ticket-dialog-details dd { margin:4px 0 0; font-size:16px; font-weight:600; overflow-wrap:anywhere; }
#ticket-dialog-notes { white-space:pre-wrap; overflow-wrap:anywhere; }
#ticket-dialog-status:empty { display:none; }
.ticket-dialog-actions { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.template-admin { margin:36px 0; padding:24px; background:var(--surface); border:1px solid var(--border); border-radius:14px; }
.template-admin summary { cursor:pointer; font-size:18px; font-weight:650; }
.template-admin p { font-size:13px; color:var(--muted); }
.template-admin .admin-local { background:var(--soft); padding:12px; border-radius:8px; }
.admin-workspace { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px; }
.admin-preview { position:sticky; top:24px; align-self:start; min-width:0; }
.admin-preview h2 { font-size:18px; margin:22px 0 16px; }
.admin-preview svg { display:block; width:100%; height:auto; border-radius:8px; }
.template-admin fieldset { border:1px solid var(--border); border-radius:8px; margin:18px 0; padding:12px; min-width:0; }
.template-admin legend { font-size:13px; font-weight:650; padding:0 6px; }
.position-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.position-grid label { font-size:10px; margin:0; }
.position-grid input { padding:8px; margin-top:6px; }
.checkbox-label { display:flex; align-items:center; gap:8px; }
.checkbox-label input { width:auto; accent-color:var(--gold); }
input[type="color"] { height:42px; padding:4px; }
input[type="file"] { font-size:12px; }
.template-admin .secondary { margin-top:12px; width:100%; }
button:disabled { cursor:not-allowed; opacity:.5; transform:none; }
#template-message:not(:empty) { padding:12px; background:var(--soft); border-left:3px solid var(--gold); }
@media(max-width:650px) {
  .header { flex-wrap:wrap; }
  .header-controls { gap:8px; }
  .header-controls select { font-size:12px; padding:8px 6px; max-width:105px; }
  .ticket-bottom { align-items:flex-start; }
  .template-admin { padding:18px; }
  .admin-workspace { grid-template-columns:1fr; gap:12px; }
  .admin-preview { position:static; grid-row:1; }
}

.scanner-live { position:relative; width:100%; height:min(54dvh,480px); min-height:220px; overflow:hidden; border-radius:12px; background:#111; margin:16px 0 12px; }
#scanner-video { width:100%; height:100%; object-fit:cover; display:block; }
.scanner-guide { position:absolute; width:min(90%,calc(1.67 * (max(220px,min(54dvh,480px)) - 72px))); aspect-ratio:1.67; left:50%; top:50%; transform:translate(-50%,-50%); border:2px solid #f4d584; border-radius:5px; box-shadow:0 0 0 1000px #0008; pointer-events:none; }
.scanner-live-hint { position:absolute; bottom:16px; left:12px; right:12px; text-align:center; font-size:12px; color:#fff; text-shadow:0 1px 3px #000; }
#scanner-capture { width:100%; margin-bottom:12px; }

.account-dialog { width:min(440px,calc(100vw - 32px)); }
.account-dialog #account-form { display:block; }
#account-submit { width:100%; margin-top:24px; }
.account-text-button { display:block; border:0; background:transparent; color:var(--green); font-size:13px; padding:14px 0 0; margin:auto; }
#account-status:empty { display:none; }
#account-status { padding:12px; border-radius:8px; background:var(--soft); }
#account-display-name,#account-display-email,#profile-name { overflow-wrap:anywhere; }
#account-import-panel { border-top:1px solid var(--border); padding-bottom:22px; }
#account-import { width:100%; }
button:disabled { opacity:.55; cursor:wait; }

.access-screen { max-width:560px; padding-top:clamp(50px,12vh,120px); padding-bottom:70px; text-align:center; }
.access-screen h1 { font-size:clamp(32px,6vw,44px); margin:22px 0 16px; }
.access-screen>p:not(.eyebrow) { color:var(--muted); font-size:15px; line-height:1.6; }
.access-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:28px; }
.access-actions button { min-width:145px; }
#access-status:empty { display:none; }

.account-dialog #account-login-form { display:block; }
.password-field { position:relative; }
.password-field input { padding-right:52px; }
.password-toggle { position:absolute; right:3px; top:50%; transform:translateY(-50%); display:grid; place-items:center; width:42px; height:40px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--muted); }
.password-toggle:hover { transform:translateY(-50%); background:var(--soft); }
#account-login-submit { width:100%; margin-top:24px; }

.account-dialog #account-recovery-form,.account-dialog #account-reset-form { display:block; }
#account-recovery-form .primary,#account-reset-form .primary,#account-confirm-email { width:100%; margin-top:24px; }
#account-email-state { font-weight:600; }
#account-resend { margin-bottom:8px; }
