.badge-page{--lp-paper:#f5f7fa;--lp-slate:#8fa3b8;--lp-card:#10233a;--lp-line:rgba(143,163,184,0.16);--bd-royal:#0a3bb0;--bd-royal-deep:#072e93;--bd-orange:#ff8a12;--bd-amber:#ffb81c;--bd-field:color-mix(in srgb,var(--lp-paper) 5%,transparent);--bd-field-line:color-mix(in srgb,var(--lp-paper) 18%,transparent);--bd-error:#ff8a80;--bd-success:#4ade80}[data-theme=light] .badge-page{--lp-paper:#0d1b2a;--lp-slate:#51637a;--lp-card:#fbfcfe;--lp-line:rgba(13,27,42,0.12);--bd-field:#f5f7fa;--bd-field-line:rgba(13,27,42,0.18);--bd-error:#c62828;--bd-success:#15803d}.badge-page .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.badge-workspace{position:relative;padding-block:clamp(48px,7vw,96px);color:var(--lp-paper);background:var(--bg-alt)}.badge-studio{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,440px);grid-template-areas:"form preview" "result preview";align-items:start;gap:28px}.badge-card{min-width:0;padding:clamp(22px,3vw,34px);border-radius:22px;background:var(--lp-card);border:1px solid var(--lp-line);box-shadow:0 24px 60px rgba(2,12,40,.35)}[data-theme=light] .badge-card{box-shadow:0 24px 60px rgba(13,27,42,.12)}.badge-form{grid-area:form}.badge-preview{grid-area:preview;position:sticky;top:96px}.badge-result{grid-area:result;border-color:color-mix(in srgb,var(--bd-amber) 55%,transparent);animation:badge-rise .6s var(--cc-ease) both}@keyframes badge-rise{0%{opacity:0;transform:translateY(16px)}}.badge-card-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:26px}.badge-card-head h2{margin:0;font-size:1.3rem;font-weight:700}.badge-card-head p{margin:4px 0 0;color:var(--lp-slate);font-size:.93rem}.badge-step{flex:0 0 auto;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--bd-orange),var(--bd-amber));color:#0b2a7a;font-weight:800}.badge-field{position:relative;display:grid;gap:8px;min-width:0;margin-bottom:20px}.badge-field>label,.badge-label{font-size:.85rem;font-weight:600}.badge-field input[type=email],.badge-field input[type=tel],.badge-field input[type=text],.badge-field select{width:100%;min-height:52px;padding:12px 16px;border-radius:12px;border:1.5px solid var(--bd-field-line);background:var(--bd-field);color:var(--lp-paper);font:inherit;font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease}.badge-field select option{color:#0d1b2a}.badge-field input::placeholder{color:color-mix(in srgb,var(--lp-slate) 80%,transparent)}.badge-field input:focus,.badge-field select:focus{outline:none;border-color:var(--bd-amber);box-shadow:0 0 0 4px rgba(255,184,28,.2)}.badge-field [aria-invalid=true]{border-color:var(--bd-error)}.badge-input-wrap{position:relative}.badge-input-wrap input{padding-right:48px}.badge-input-check,.badge-input-wrap>.badge-spinner{position:absolute;right:16px;top:50%;margin-top:-10px}.badge-input-check{color:var(--bd-success)}.badge-hint{color:var(--lp-slate);font-size:.82rem}.badge-field-error{font-size:.84rem}.badge-field-error,.badge-form-error{color:var(--bd-error);font-weight:500}.badge-form-error{margin:0 0 16px;padding:12px 14px;border-radius:12px;border:1px solid var(--bd-error);background:color-mix(in srgb,var(--bd-error) 8%,transparent)}.badge-suggestions{position:absolute;z-index:20;top:86px;left:0;right:0;margin:0;padding:6px;list-style:none;border-radius:14px;background:var(--lp-card);border:1px solid var(--bd-field-line);box-shadow:0 22px 44px rgba(2,12,40,.45);max-height:320px;overflow-y:auto}.badge-suggestion{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 10px;border-radius:10px;cursor:pointer}.badge-suggestion:hover,.badge-suggestion[aria-selected=true]{background:color-mix(in srgb,var(--bd-amber) 16%,transparent)}.badge-suggestion strong{display:block;font-weight:600}.badge-suggestion small{display:block;color:var(--lp-slate);font-size:.8rem}.badge-suggestion-avatar{flex:0 0 auto;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--bd-royal);color:#ffffff;font-size:.8rem;font-weight:700}.badge-suggestion-empty{padding:12px;color:var(--lp-slate);font-size:.88rem}.badge-registered{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;color:var(--bd-success);font-size:.86rem;font-weight:600}.badge-registered button{min-height:32px;padding:0 4px;border:0;background:none;color:var(--lp-slate);font:inherit;font-weight:500;text-decoration:underline;cursor:pointer}.badge-dropzone{display:flex;align-items:center;gap:16px;min-height:92px;padding:18px;border-radius:16px;border:2px dashed var(--bd-field-line);background:var(--bd-field);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.badge-dropzone.is-dragging,.badge-dropzone:hover,.badge-field input[type=file]:focus-visible+.badge-dropzone{border-color:var(--bd-amber);background:color-mix(in srgb,var(--bd-amber) 8%,transparent)}.badge-dropzone strong{display:block;font-weight:600}.badge-dropzone small{color:var(--lp-slate)}.badge-dropzone-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:14px;background:var(--bd-royal);color:#ffffff}.badge-photo-actions,.badge-result-actions{display:flex;flex-wrap:wrap;gap:10px}.badge-register{margin:8px 0 22px;padding:20px;border-radius:18px;border:1px solid color-mix(in srgb,var(--bd-amber) 40%,transparent);background:color-mix(in srgb,var(--bd-amber) 5%,transparent)}.badge-register legend{padding:0 8px;font-weight:700}.badge-register>p{margin:0 0 18px;color:var(--lp-slate);font-size:.9rem}.badge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}.badge-field-wide{grid-column:1/-1}.badge-consent{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;color:var(--lp-slate);font-size:.88rem}.badge-consent input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--bd-orange)}.badge-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:12px 22px;border-radius:999px;border:2px solid transparent;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .2s ease,background-color .2s ease,border-color .2s ease,color .2s ease}.badge-button:hover:not(:disabled){transform:translateY(-1px)}.badge-button:disabled{cursor:wait;opacity:.75}.badge-button-primary{background:linear-gradient(90deg,#f7701d,var(--bd-orange));color:#ffffff;box-shadow:0 10px 24px rgba(247,112,29,.35)}.badge-button-accent{background:var(--bd-royal);color:#ffffff}.badge-button-ghost{border-color:var(--bd-field-line);background:transparent;color:var(--lp-paper)}.badge-button-ghost:hover{border-color:var(--bd-amber)}.badge-submit{width:100%;min-height:58px;font-size:1.05rem}.badge-icon-button{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--bd-field-line);background:transparent;color:inherit;font-size:1.4rem;line-height:1;cursor:pointer}.badge-canvas-frame{position:relative;aspect-ratio:2/3;border-radius:16px;overflow:hidden;background:var(--bd-royal);box-shadow:0 18px 40px rgba(2,20,72,.4)}.badge-canvas-frame canvas{display:block;width:100%;height:100%}.badge-canvas-loading{position:absolute;inset:0;display:grid;place-items:center;padding:24px;color:#ffffff;text-align:center;background:var(--bd-royal)}.badge-result-head{display:flex;gap:16px;align-items:flex-start}.badge-result-head h2{margin:0;font-size:1.45rem}.badge-result-head p{margin:6px 0 0;color:var(--lp-slate)}.badge-result-icon{flex:0 0 auto;display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:var(--bd-success);color:#06301a}.badge-ticket{display:grid;gap:14px;justify-items:start;margin:24px 0 0}.badge-ticket figcaption{font-weight:700}.badge-ticket-frame{position:relative;width:100%;min-height:140px;aspect-ratio:2140/950;border-radius:14px;overflow:hidden;background:var(--bd-field);border:1px solid var(--lp-line)}.badge-ticket-frame img{display:block;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .4s ease}.badge-ticket-frame.is-loaded img{opacity:1}.badge-ticket-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--lp-slate)}.badge-share-hint{margin:20px 0 14px;color:var(--lp-slate);font-size:.9rem}.badge-spinner{display:inline-block;width:20px;height:20px;border-radius:50%;border:2.5px solid color-mix(in srgb,var(--bd-amber) 30%,transparent);border-top-color:var(--bd-amber);animation:badge-spin .8s linear infinite}.badge-spinner-light{border-color:#ffffff rgba(255,255,255,.35) rgba(255,255,255,.35)}@keyframes badge-spin{to{transform:rotate(1turn)}}.badge-cropper{width:min(520px,calc(100vw - 24px));max-height:calc(100svh - 24px);padding:22px;border:1px solid var(--lp-line);border-radius:22px;background:var(--lp-card);color:var(--lp-paper);box-shadow:0 40px 80px rgba(2,12,40,.6)}.badge-cropper::backdrop{background:rgba(3,12,36,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.badge-cropper-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.badge-cropper-head h2{margin:0;font-size:1.2rem}.badge-cropper-hint{margin:6px 0 16px;color:var(--lp-slate);font-size:.88rem}.badge-cropper-stage canvas{display:block;width:100%;aspect-ratio:1;border-radius:16px;cursor:grab;touch-action:none}.badge-cropper-stage canvas:active{cursor:grabbing}.badge-cropper-stage canvas:focus-visible{outline:3px solid var(--bd-amber);outline-offset:3px}.badge-cropper-zoom{display:flex;align-items:center;gap:12px;margin-top:16px}.badge-cropper-zoom label{flex:1 1;display:flex}.badge-cropper-zoom input[type=range]{width:100%;accent-color:var(--bd-orange)}.badge-cropper-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}@media (max-width:900px){.badge-studio{grid-template-columns:minmax(0,1fr);grid-template-areas:"form" "preview" "result"}.badge-preview{position:static}.badge-canvas-frame{max-width:420px;margin-inline:auto}}@media (max-width:560px){.badge-grid{grid-template-columns:minmax(0,1fr)}.badge-cropper{padding:16px}}@media (prefers-reduced-motion:reduce){.badge-button,.badge-result,.badge-spinner{animation:none;transition:none}}