:root{--terracotta:#c9705a;--terracotta-deep:#a85a47;--sage:#7f9c7a;--pine:#5c7a5b;--pine-deep:#4a634a;--cream:#f4ead8;--eggshell:#efe3cc;--gold:#c9a85c;--gold-deep:#a88a44;--plum:#5d4a86;--bg-inner:#2f2d48;--bg-outer:#14131f;--ink:#3b2a26;--radius:18px;--font:"Nunito", "Segoe UI Rounded", "Segoe UI", system-ui, -apple-system, sans-serif;--font-serif:Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--cream);background:radial-gradient(circle at 50% 40%, var(--bg-inner) 0%, var(--bg-outer) 75%);-webkit-font-smoothing:antialiased;overscroll-behavior:none}h1,h2,h3{letter-spacing:-.01em;margin:0 0 .4em;font-weight:800}p{margin:0 0 .8em;line-height:1.5}a{color:var(--gold)}.muted{opacity:.72;font-size:.92em}kbd{font:inherit;background:#f4ead82e;border-radius:6px;padding:1px 7px;font-weight:800}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.screen{min-height:100%;padding:24px 16px}.screen--center{place-items:center;display:grid}.card{border-radius:var(--radius);text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow-wrap:anywhere;background:#f4ead814;border:1px solid #f4ead826;max-width:480px;padding:28px 24px}.btn{font:inherit;cursor:pointer;color:var(--cream);background:#f4ead824;border:0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:10px 18px;font-weight:700;text-decoration:none;transition:transform .15s,background .15s;display:inline-flex}.btn:hover:not(:disabled){background:#f4ead838;transform:translateY(-1px)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--terracotta);color:#fff7ef;box-shadow:0 6px 18px #c9705a59}.btn--primary:hover:not(:disabled){background:var(--terracotta-deep)}.btn--big{padding:16px 30px;font-size:1.15rem}.btn--ghost{color:var(--cream);background:#1e1a1f99}.btn--icon{background:#1e1a1f99;padding:8px 12px;font-size:1.1rem}.btn--soft{background:#f4ead81f;padding:9px 16px;font-size:.92rem}.btn--danger{color:#ffd4c9;background:#c9705a40}.btn--small{padding:6px 12px;font-size:.85rem}.segmented{background:#1e1a1f99;border-radius:999px;gap:2px;padding:3px;display:inline-flex}.segmented__item{font:inherit;cursor:pointer;color:var(--cream);opacity:.7;background:0 0;border:0;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700}.segmented__item.is-active{background:var(--sage);opacity:1;color:#10180f}.segmented--compact .segmented__item{padding:5px 10px;font-size:.78rem}.welcome{z-index:20;color:var(--cream);background:radial-gradient(circle at 50% 30%,#2f2d48e6,#14131ff7);place-items:center;padding:16px;display:grid;position:absolute;inset:0;overflow-y:auto}.welcome__card{text-align:center;width:min(440px,100%);animation:.8s both rise}.welcome__star{color:var(--gold);margin-bottom:8px;font-size:2.4rem;animation:2.4s ease-in-out infinite twinkle;display:block}.welcome__card h1{overflow-wrap:anywhere;font-size:clamp(1.6rem,6vw,2.4rem)}.welcome__message{opacity:.88;white-space:pre-line;overflow-wrap:anywhere;max-height:38vh;margin-bottom:1.6em;overflow-y:auto}.welcome__quality{flex-direction:column;align-items:center;gap:8px;margin-top:26px;display:flex}.install{flex-direction:column;align-items:center;gap:10px;margin-top:20px;display:flex}.install__row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.install__help,.install__done{background:#f4ead81a;border-radius:14px;max-width:360px;margin:0;padding:10px 14px;font-size:.92rem}.install__done{color:#cfe6c8}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes twinkle{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.18)}}.stage{color:var(--cream);position:fixed;inset:0;overflow:hidden}.stage__canvas{touch-action:none;inset:0;position:absolute!important}.stage__loading{place-items:center;margin:0;display:grid;position:absolute;inset:0}.hud{pointer-events:none;color:var(--cream);padding:max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));flex-direction:column;justify-content:space-between;display:flex;position:absolute;inset:0}.hud>*{pointer-events:auto}.hud__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.hud__back{white-space:nowrap}.hud__title{letter-spacing:.06em;text-transform:uppercase;opacity:.75;padding:8px 12px;font-size:.8rem;font-weight:800}.hud__tools{align-items:center;gap:8px;margin-left:auto;display:flex}.hud__day{text-align:center;width:fit-content;max-width:min(560px,100%);max-height:32vh;color:var(--cream);border-radius:var(--radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1e1a1fb8;align-self:center;padding:12px 18px;animation:.5s both rise;overflow-y:auto}.hud__phrase{color:#f6dfa4;overflow-wrap:anywhere;margin:0;font-size:1.05rem;font-weight:700}.hud__empty{opacity:.85;margin:0;font-size:.95rem}.hud__phrase+.hud__empty{margin-top:4px}.hud__loading{color:var(--cream);background:#1e1a1fbf;border-radius:999px;padding:10px 18px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.toast{left:50%;bottom:max(28px, env(safe-area-inset-bottom));background:var(--cream);color:var(--ink);z-index:30;text-align:center;cursor:pointer;border-radius:22px;width:max-content;max-width:calc(100vw - 32px);padding:12px 18px;animation:.35s both toast-in;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000059}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}@media (width<=600px){.hud__title{display:none}.hud__back{padding:9px 13px;font-size:.9rem}.hud__back-more{display:none}.hud__tools{gap:6px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin{background:var(--eggshell);min-height:100%;color:var(--ink)}.admin a{color:var(--terracotta-deep)}.admin__main{max-width:1100px;margin:0 auto;padding:20px}.admin .btn,.dialog .btn,.modal .btn{color:var(--ink);background:#3b2a261a}.admin .btn:hover:not(:disabled),.dialog .btn:hover:not(:disabled),.modal .btn:hover:not(:disabled){background:#3b2a262b}.admin .btn--primary,.dialog .btn--primary{background:var(--terracotta);color:#fff7ef}.admin .btn--primary:hover:not(:disabled),.dialog .btn--primary:hover:not(:disabled){background:var(--terracotta-deep)}.admin .btn--danger{color:#963c2b;background:#c9705a29}.admin .btn--danger:hover:not(:disabled){background:#c9705a47}.dialog .btn--danger-solid{color:#fff7ef;background:#b3402e}.dialog .btn--danger-solid:hover:not(:disabled){background:#96301f}.error{color:#a13a28;font-weight:700}.ok{color:var(--pine-deep);font-weight:700}.code{word-break:break-all;background:#3b2a260f;border-radius:6px;padding:2px 6px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem}.topbar{background:var(--pine-deep);color:var(--cream);z-index:5;justify-content:space-between;align-items:center;gap:12px;padding:8px 20px;display:flex;position:sticky;top:0}.admin .topbar a{color:var(--cream);text-decoration:none}.topbar__brand{white-space:nowrap;align-items:center;gap:8px;font-size:1.1rem;font-weight:800;display:inline-flex}.topbar__nav{gap:6px;min-width:0;display:flex}.topbar__tab{border-radius:999px;align-items:center;gap:7px;min-width:0;padding:9px 14px;font-weight:700;transition:background .15s;display:inline-flex}.topbar__tab:hover{background:#f4ead824}.admin .topbar__tab.is-active{background:var(--cream);color:var(--pine-deep)}.topbar__label{text-overflow:ellipsis;white-space:nowrap;max-width:14ch;overflow:hidden}.page-title{color:var(--pine-deep);overflow-wrap:anywhere;margin:4px 0 14px;font-size:clamp(1.35rem,4vw,1.8rem)}.section-title{color:var(--pine-deep);margin:22px 0 10px;font-size:1.05rem}.panel{border-radius:var(--radius);background:#fff9ef;margin-bottom:18px;padding:18px 20px;box-shadow:0 4px 18px #3b2a260f}.panel h2{color:var(--pine-deep);flex-wrap:wrap;align-items:center;gap:8px;font-size:1.1rem;display:flex}.panel--danger{border:1px solid #b3402e4d}.notice{overflow-wrap:anywhere;border-radius:14px;margin:0 0 14px;padding:10px 14px;font-weight:700}.notice--ok{color:var(--pine-deep);background:#5c7a5b29}.notice--error{color:#96301f;background:#b3402e21}.notice--warn{color:#6b5210;background:#c9a85c3d}.tag{letter-spacing:.03em;white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:800;display:inline-block}.tag--ok{color:var(--pine-deep);background:#5c7a5b33}.tag--warn{color:#7a4d06;background:#d6963242}.tag--info{color:#2c3850;background:#3b4a6329}.tag--muted{color:#3b2a26cc;background:#3b2a261f}.actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.form{gap:12px;display:grid}.form--inline{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end}.form--grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));align-items:start;gap:14px 16px}.form__actions{grid-column:1/-1}.field{align-content:start;gap:5px;min-width:0;font-size:.86rem;font-weight:700;display:grid}.field--wide{grid-column:1/-1}.field input:not([type=checkbox]):not([type=range]):not([type=file]),.field select,.field textarea,.link-box__url{font:inherit;width:100%;min-width:0;color:var(--ink);background:#fff;border:1.5px solid #3b2a2638;border-radius:10px;padding:9px 11px;font-size:.95rem;font-weight:500}.field textarea{resize:vertical;min-height:76px;line-height:1.45}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline-offset:0;border-color:var(--gold-deep);outline:3px solid #c9a85cbf}.field.has-error input,.field.has-error textarea,.field.has-error select,.field [aria-invalid=true]{border-color:#b3402e}.field__label{align-items:center;gap:6px;min-width:0;min-height:22px;display:flex}.field__label>label,.field__label>span:first-child{min-width:0}.field__spacer{flex:1}.field__required{color:#b3402e}.field__optional{opacity:.65;font-weight:500}.field__counter{opacity:.6;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.76rem;font-weight:600}.field__counter.is-near{color:#7a4d06;opacity:1}.field__counter.is-full{color:#b3402e;opacity:1}.field__value{color:var(--terracotta-deep);white-space:nowrap;font-weight:800}.field__error{color:#a13a28;overflow-wrap:anywhere;margin:0;font-size:.84rem;font-weight:700}.field__ok{color:var(--pine-deep);font-size:.82rem;font-weight:700}.field__hint{opacity:.7;font-size:.8rem;font-weight:500}.field__static{overflow-wrap:anywhere;margin:0;padding:9px 0;font-size:.95rem;font-weight:600}.save-badge{white-space:nowrap;font-size:.76rem;font-weight:700}.save-badge--saving{opacity:.65}.save-badge--saved{color:var(--pine-deep);animation:.2s both fade}.help{width:19px;height:19px;color:var(--ink);font:inherit;text-align:center;cursor:help;background:#3b2a2629;border:0;border-radius:50%;flex:none;padding:0;font-size:.74rem;font-weight:800;line-height:19px}.help:hover,.help:focus-visible{background:var(--pine);color:var(--cream)}.help__bubble{z-index:80;width:max-content;max-width:min(300px,100vw - 16px);color:var(--cream);font-family:var(--font);pointer-events:none;background:#2f2a33;border-radius:12px;padding:9px 12px;font-size:.84rem;font-weight:500;line-height:1.4;position:fixed;box-shadow:0 8px 24px #00000059}.toggle{cursor:pointer;align-items:center;gap:10px;width:fit-content;min-height:40px;display:inline-flex;position:relative}.toggle input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.toggle__track{background:#3b2a2640;border-radius:999px;flex:none;width:46px;height:26px;padding:3px;transition:background .15s}.toggle__thumb{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;display:block;box-shadow:0 1px 3px #0000004d}.toggle input:checked+.toggle__track{background:var(--pine)}.toggle input:checked+.toggle__track .toggle__thumb{transform:translate(20px)}.toggle input:focus-visible+.toggle__track{outline-offset:2px;outline:3px solid #c9a85cd9}.toggle__text{font-size:.92rem;font-weight:600}.field input[type=range]{width:100%;accent-color:var(--terracotta);margin:4px 0 0}.slider__ticks{opacity:.75;justify-content:space-between;gap:4px;font-size:.72rem;font-weight:600;display:flex}.slider__ticks span{text-align:center;flex:1}.slider__ticks span:first-child{text-align:left}.slider__ticks span:last-child{text-align:right}.slider__ticks .is-active{opacity:1;color:var(--terracotta-deep);font-weight:800}.login{max-width:400px;margin:clamp(16px,7vh,60px) auto}.login__title{color:var(--pine-deep);font-size:1.45rem}.login__links{flex-wrap:wrap;justify-content:space-between;gap:10px;margin:4px 0 0;display:flex}.google-auth{text-align:center}.google-auth__sep{color:#3b2a268c;align-items:center;gap:10px;margin:2px 0 10px;font-size:.85rem;display:flex}.google-auth__sep:before,.google-auth__sep:after{content:"";border-top:1px solid #3b2a262e;flex:1}.google-auth__button{justify-content:center;min-height:44px;display:flex}.admin .google-auth__placeholder{background:#fff;border:1.5px solid #3b2a2638;width:100%}.google-auth__g{color:#4285f4;font-size:1.1rem;font-weight:800}.google-auth__hint{text-align:left;margin:8px 0 0}.cal-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.cal-card{align-content:start;gap:10px;min-width:0;margin:0;display:grid}.cal-card__head{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.cal-card__name{overflow-wrap:anywhere;min-width:0;font-size:1.1rem;font-weight:800}.cal-card__meta{opacity:.85;overflow-wrap:anywhere;margin:0;font-size:.9rem}.progress{background:#5c7a5b29;border-radius:999px;height:22px;position:relative;overflow:hidden}.progress__bar{background:var(--sage);border-radius:999px;height:100%}.progress__label{color:var(--pine-deep);place-items:center;font-size:.76rem;font-weight:800;display:grid;position:absolute;inset:0}.editor-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px;display:flex}.editor-head>div{min-width:0}.editor-head__back{margin:0 0 4px;font-weight:700}.editor-head .page-title{margin-bottom:2px}.editor-head p{margin-bottom:0}.admin .btn--preview{white-space:nowrap;padding:12px 22px;font-size:1rem;box-shadow:0 6px 18px #c9705a59}.link-box{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.link-box__url{text-overflow:ellipsis;background:#3b2a260d;flex:260px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.stat{background:#5c7a5b1a;border-radius:12px;padding:12px;font-size:.88rem}.stat strong{color:var(--pine-deep);font-size:1.45rem;display:block}.music-file{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.music-file audio{flex:200px;min-width:0;height:40px}.music-file__pick{width:fit-content}.days-grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:8px;display:grid}.days-grid__legend{margin:10px 0 0}.day-chip{font:inherit;color:var(--pine-deep);cursor:pointer;background:#5c7a5b2b;border:2px solid #0000;border-radius:12px;padding:11px 0;font-weight:800;transition:background .15s;position:relative}.day-chip:hover{background:#5c7a5b4d}.day-chip.is-empty{color:#3b2a26b3;background:#3b2a260f}.day-chip.is-active{background:var(--pine);color:var(--cream);border-color:var(--pine-deep)}.day-chip__badge{background:var(--pine-deep);color:#fff;border-radius:999px;min-width:19px;padding:1px 5px;font-size:.68rem;position:absolute;top:-6px;right:-5px}.day-chip__badge.is-warn{background:#d08a1d}.day-chip__opened{font-size:.66rem;position:absolute;bottom:1px;left:4px}.day-editor__head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.day-editor__head h2{margin-bottom:0}.day-editor__top{grid-template-columns:minmax(0,1fr) 250px;align-items:start;gap:18px;margin-top:12px;display:grid}.day-editor__phrase{gap:8px;min-width:0;display:grid}.day-editor__phrase p{margin:0}.day-editor__title{color:var(--pine-deep);margin:22px 0 10px;font-size:1rem}.cell-preview{gap:6px;display:grid}.cell-preview__frame{aspect-ratio:1;border:3px solid var(--pine-deep);background:var(--bg-outer);cursor:zoom-in;border-radius:16px;width:100%;padding:0;display:block;position:relative;overflow:hidden}.cell-preview__frame .cell-preview__canvas{pointer-events:none}.cell-preview__canvas{inset:0;width:100%!important;height:100%!important;position:absolute!important}.cell-preview__zoom{color:var(--cream);font:inherit;background:#14131fb8;border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:700;position:absolute;bottom:6px;right:6px}.cell-preview__empty{color:var(--cream);white-space:nowrap;pointer-events:none;background:#14131fb8;border-radius:999px;padding:5px 12px;font-size:.85rem;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cell-preview__caption{text-align:center;margin:0;font-size:.8rem}.cell-preview__stage{aspect-ratio:1;background:var(--bg-outer);border-radius:16px;width:min(100%,100dvh - 220px);margin:0 auto;position:relative;overflow:hidden}.cell-preview__phrase{color:#f6dfa4;text-align:center;overflow-wrap:anywhere;pointer-events:none;background:#1e1a1fbf;border-radius:14px;width:max-content;max-width:calc(100% - 20px);margin:0;padding:7px 14px;font-weight:700;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.item-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.item-row{background:#3b2a260b;border:2px solid #0000;border-radius:14px;min-width:0}.item-row.is-open{border-color:var(--pine);background:#fff}.item-row__head{align-items:center;gap:8px;padding:6px 10px 6px 6px;display:flex}.item-row__toggle{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;align-items:center;gap:10px;padding:4px;display:flex}.item-row__toggle .kind-icon{flex:none}.item-row__text{flex:1;min-width:0;display:grid}.item-row__kind{font-size:.95rem;font-weight:800}.item-row__summary{opacity:.75;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.item-row__chevron{opacity:.6}.item-row__delete{flex:none}.item-row__body{border-top:1px solid #3b2a261a;padding:4px 14px 16px}.item-row__body>.notice{margin-top:12px}.item-editor{gap:14px;padding-top:12px;display:grid}.item-editor__about{background:#5c7a5b1a;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;font-size:.9rem;display:flex}.item-editor__about p{margin:0}.item-editor__about .kind-icon{flex:none}.kind-picker{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:10px;display:grid}.kind-card{font:inherit;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border:2px solid #3b2a2624;border-radius:14px;grid-template-rows:auto auto;grid-template-columns:56px 1fr;align-items:center;column-gap:12px;padding:12px;transition:border-color .15s,transform .15s;display:grid}.kind-card .kind-icon{grid-row:1/span 2}.kind-card:hover:not(:disabled){border-color:var(--terracotta);transform:translateY(-1px)}.kind-card:disabled{opacity:.5;cursor:not-allowed}.kind-card__label{align-self:end;font-weight:800}.kind-card__hint{opacity:.75;align-self:start;font-size:.8rem;line-height:1.3}.media-drop{gap:8px;min-width:0;display:grid}.media-drop__zone{text-align:center;color:var(--pine-deep);cursor:pointer;background:#5c7a5b12;border:2.5px dashed #5c7a5b99;border-radius:16px;justify-items:center;gap:4px;padding:22px 16px;transition:background .15s,border-color .15s;display:grid}.media-drop__zone:hover,.media-drop__zone.is-dragging,.media-drop__zone:focus-within{border-color:var(--pine-deep);background:#5c7a5b29}.media-drop__zone.is-dragging{border-style:solid}.media-drop__title{font-size:1.02rem;font-weight:800}.media-drop__or{color:var(--ink);font-size:.9rem;font-weight:500}.media-drop__browse{color:var(--terracotta-deep);font-weight:800;text-decoration:underline}.media-drop__limits{color:var(--ink);opacity:.7;margin-top:4px;font-size:.78rem;font-weight:500}.media-drop__input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.media-drop__alt{text-align:center;opacity:.6;margin:0;font-size:.85rem;font-weight:500}.media-drop__default{align-items:center;gap:10px;margin:0;font-weight:500;display:flex}.media-drop__default img{object-fit:cover;border-radius:8px;flex:none}.media-drop--busy{text-align:center;background:#5c7a5b1a;border-radius:16px;justify-items:center;padding:18px 16px;font-weight:500}.media-drop--busy p{margin:0}.media-drop__bar{background:#3b2a261f;border-radius:999px;width:100%;height:10px;overflow:hidden}.media-drop__bar span{background:var(--pine);border-radius:999px;height:100%;transition:width .2s;display:block}.media-drop__bar--endless span{width:35%;animation:1.3s ease-in-out infinite endless}@keyframes endless{0%{transform:translate(-110%)}to{transform:translate(300%)}}.media-drop__name{overflow-wrap:anywhere;margin:0}.media-drop--filled{background:#5c7a5b14;border-radius:16px;grid-template-columns:minmax(0,260px) minmax(0,1fr);align-items:center;gap:14px;padding:10px;font-weight:500}.media-drop--filled .field__error{grid-column:1/-1}.media-drop__preview{background:var(--plum);border-radius:12px;place-items:center;min-height:44px;display:grid;overflow:hidden}.media-drop__preview img,.media-drop__preview video{object-fit:contain;width:100%;max-height:220px;display:block}.media-drop__preview audio{width:100%}.media-drop__preview:has(audio){background:0 0}.media-drop__info{justify-items:start;gap:8px;min-width:0;display:grid}.recorder{justify-items:center;gap:8px;display:grid}.recorder__live{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.recorder__dot{background:#d23b2b;border-radius:50%;width:14px;height:14px;animation:1s ease-in-out infinite pulse}.recorder__time{font-variant-numeric:tabular-nums;font-weight:800}.recorder__unavailable{text-align:center;margin:0;font-weight:500}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}.ticket-picker{gap:10px;font-weight:500;display:grid}.ticket-picker>.notice{margin:0}.ticket-picker__current{background:#5c7a5b1a;border-radius:14px;align-items:center;gap:14px;padding:10px;display:flex}.ticket-picker__current img,.ticket-picker__blank{aspect-ratio:5/8;object-fit:cover;border-radius:8px;flex:none;width:84px;box-shadow:0 4px 12px #0003}.ticket-picker__blank{text-align:center;background:#3b2a261a;place-items:center;padding:4px;font-size:.7rem;display:grid}.ticket-picker__current p{margin:0 0 6px}.ticket-picker__title{margin:4px 0 0;font-size:.9rem;font-weight:800}.ticket-picker__grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;display:grid}.ticket-picker__choice,.ticket-picker__new{font:inherit;color:var(--ink);cursor:pointer;text-align:center;background:#fff;border:2px solid #3b2a2624;border-radius:12px;align-content:start;gap:4px;min-width:0;padding:6px;text-decoration:none;display:grid}.ticket-picker__choice:hover:not(:disabled),.ticket-picker__new:hover{border-color:var(--terracotta)}.ticket-picker__choice:disabled{opacity:.55;cursor:wait}.ticket-picker__choice img{aspect-ratio:5/8;object-fit:cover;border-radius:7px;width:100%}.ticket-picker__caption{text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:800;overflow:hidden}.ticket-picker__origin{opacity:.65;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.admin .ticket-picker__new{color:var(--pine-deep);border-style:dashed;border-color:#5c7a5bb3;align-content:center;justify-items:center;min-height:150px;font-size:.85rem;font-weight:800}.ticket-picker__new span{font-size:1.8rem;line-height:1}.dialog,.modal{z-index:70;background:#14101299;place-items:center;padding:16px;animation:.18s both fade;display:grid;position:fixed;inset:0;overflow-y:auto}.dialog__panel,.modal__panel{width:min(460px,100%);color:var(--ink);background:#fff9ef;border-radius:20px;padding:22px;animation:.25s both rise;box-shadow:0 24px 60px #0006}.dialog__title{color:var(--pine-deep);overflow-wrap:anywhere;margin-bottom:8px;font-size:1.15rem}.dialog__message{overflow-wrap:anywhere;margin:0 0 14px;line-height:1.5}.dialog__actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.modal__panel--preview{gap:10px;width:min(760px,100%);display:grid}.modal__head{justify-content:space-between;align-items:center;gap:10px;display:flex}.modal__head h2{color:var(--pine-deep);margin:0;font-size:1.1rem}.modal__panel p{text-align:center;margin:0}.preview{background:var(--bg-outer);flex-direction:column;display:flex;position:fixed;inset:0}.preview__bar{background:var(--eggshell);color:var(--ink);z-index:25;flex-wrap:wrap;flex:none;align-items:center;gap:10px;padding:8px 12px;display:flex}.preview__bar .btn{color:var(--ink);background:#3b2a261a;text-decoration:none}.preview__name{color:var(--pine-deep);text-overflow:ellipsis;white-space:nowrap;flex:140px;min-width:0;font-weight:800;overflow:hidden}.preview__date{align-items:center;gap:6px;font-size:.82rem;font-weight:700;display:inline-flex}.preview__date input{font:inherit;color:var(--ink);background:#fff;border:1.5px solid #3b2a2638;border-radius:9px;max-width:100%;padding:5px 8px;font-weight:500}.stage--preview{flex:1;min-height:0;position:relative;inset:auto}.table{border-collapse:collapse;width:100%;font-size:.92rem}.table th,.table td{text-align:left;vertical-align:middle;overflow-wrap:anywhere;border-bottom:1px solid #3b2a261a;padding:8px 10px}.ticket-editor{grid-template-columns:minmax(280px,420px) 1fr;align-items:start;gap:18px;display:grid}.ticket-editor__canvas{position:sticky;top:70px}.ticket-canvas{touch-action:none;background:#2a2430;border-radius:14px;width:100%;height:auto;box-shadow:0 10px 30px #00000040}.ticket-editor__tools h3{color:var(--pine-deep);margin-top:0;font-size:1rem}.template-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.template-chip{font:inherit;cursor:pointer;border:3px solid #0000;border-radius:12px;padding:18px 8px;font-weight:800}.template-chip.is-active{border-color:var(--terracotta);box-shadow:0 0 0 2px #fff9ef}.sticker-grid{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.sticker-chip{cursor:pointer;background:#3b2a260f;border:0;border-radius:10px;width:44px;height:44px;font-size:1.5rem}.sticker-chip:hover{background:#3b2a2624}.element-list{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.element-chip{font:inherit;color:var(--pine-deep);cursor:pointer;background:#5c7a5b26;border:2px solid #0000;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700}.element-chip.is-active{border-color:var(--terracotta);background:#fff}.palette{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #3b2a2633;border-radius:50%;width:28px;height:28px}.swatch.is-active{border-color:var(--terracotta);box-shadow:0 0 0 2px #fff}.ticket-result{flex-wrap:wrap;align-items:flex-start;gap:18px;margin-top:12px;display:flex}.ticket-result__img{border-radius:10px;width:150px;box-shadow:0 6px 18px #0003}.ticket-result__qr{flex-direction:column;align-items:center;gap:6px;display:flex}.ticket-result__qr img{border-radius:10px;width:150px}.ticket-thumb{vertical-align:middle;border-radius:4px;width:36px;margin-right:8px}.ticket-result__pass{margin-top:16px}.ticket-result__banner{border-radius:12px;width:100%;max-width:560px;display:block;box-shadow:0 6px 18px #0003}.scanner{background:#000;border-radius:12px;width:min(420px,100%);margin-top:10px;display:none}.scanner.is-on{display:block}.admin .segmented{background:#3b2a261a}.admin .segmented__item{color:var(--ink)}.admin .segmented__item.is-active{background:var(--pine);color:var(--cream)}@media (width<=760px){.ticket-editor{grid-template-columns:1fr}.ticket-editor__canvas{position:static}.day-editor__top{grid-template-columns:1fr}.cell-preview{justify-items:center}.cell-preview__frame{width:min(260px,100%)}}@media (width<=600px){.admin__main{padding:12px}.panel{padding:14px}.topbar{gap:6px;padding:8px 10px}.topbar__name{display:none}.topbar__tab{gap:5px;padding:8px 10px;font-size:.9rem}.topbar__label{max-width:10ch}.media-drop--filled{grid-template-columns:1fr}.item-row__delete{padding:6px 9px}.table th:nth-child(2),.table td:nth-child(2){display:none}.admin .btn--preview{width:100%}}@media (width<=380px){.topbar__tab>span[aria-hidden]{display:none}}.overlay{z-index:40;color:var(--cream);background:#141012db;place-items:center;padding:12px;animation:.25s both fade;display:grid;position:fixed;inset:0;overflow-y:auto}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.viewer{flex-direction:column;align-items:center;gap:10px;width:100%;max-width:100%;animation:.35s both rise;display:flex}.viewer__bar{justify-content:flex-end;gap:8px;width:100%;display:flex}.viewer__button{font:inherit;cursor:pointer;color:var(--cream);background:#f4ead829;border:0;border-radius:999px;align-items:center;gap:6px;padding:9px 15px;font-size:.9rem;font-weight:800;text-decoration:none;transition:background .15s;display:inline-flex}.viewer__button:hover{background:#f4ead847}.viewer__caption{text-align:center;max-width:min(640px,100%);max-height:16dvh;color:var(--cream);opacity:.92;overflow-wrap:anywhere;white-space:pre-line;margin:0;overflow-y:auto}.viewer--media{width:fit-content}.frame{--ratio:1.3333;--moulding:clamp(10px, 2.2vw, 20px);--mat:clamp(8px, 1.8vw, 18px);--window:min(100vw - 24px - 2 * (var(--moulding) + var(--mat) + 3px), 1100px, (100dvh - 190px - 2 * (var(--moulding) + var(--mat) + 3px)) * var(--ratio));padding:var(--moulding);background:linear-gradient(135deg, #ffffff29, #0000002e), var(--terracotta-deep);box-shadow:inset 0 0 0 3px #00000029, inset 0 0 0 calc(var(--moulding) * .45) #c9705abf, 0 22px 60px #0000008c;border-radius:14px;margin:0}.frame--video{box-shadow:inset 0 0 0 3px #0003, inset 0 0 0 calc(var(--moulding) * .45) #3b4a63e6, 0 22px 60px #0000008c;background:linear-gradient(135deg,#ffffff1f,#0003),#2c3850}.frame__mat{padding:var(--mat);background:var(--cream);border:3px solid var(--gold);border-radius:6px;box-shadow:inset 0 2px 6px #3b2a2640}.frame__window{width:max(120px, var(--window));aspect-ratio:var(--ratio);background:var(--plum);border-radius:2px;place-items:center;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #00000040}.frame__window img,.frame__window video{object-fit:contain;width:100%;height:100%;display:block;position:absolute;inset:0}.frame__missing{text-align:center;color:var(--cream);margin:0;padding:16px;font-size:.95rem}.viewer--scroll{width:min(600px,100%)}.scroll{filter:drop-shadow(0 18px 40px #00000080);flex-direction:column;align-items:center;width:100%;display:flex}.scroll__rod{z-index:1;background:linear-gradient(180deg, #e3c682 0%, var(--gold) 45%, var(--gold-deep) 100%);border-radius:11px;width:100%;height:22px;position:relative}.scroll__rod:before,.scroll__rod:after{content:"";background:radial-gradient(circle at 35% 30%, #e3c682, var(--gold-deep) 70%);border-radius:50%;width:32px;height:32px;margin-top:-16px;position:absolute;top:50%}.scroll__rod:before{left:-12px}.scroll__rod:after{right:-12px}.scroll__sheet{transform-origin:top;width:calc(100% - 34px);margin:-6px 0;animation:.7s cubic-bezier(.2,.8,.2,1) both unroll;position:relative}.scroll__paper{color:#4a2f24;scrollbar-color:#7a4e3a80 transparent;background:linear-gradient(90deg,#78543038 0,#78543000 9% 91%,#78543038 100%),radial-gradient(circle at 20% 12%,#fffae8e6,#fffae800 45%),radial-gradient(circle at 85% 80%,#ba966047,#ba966000 50%),#efdcb4;min-height:min(300px,46dvh);max-height:calc(100dvh - 150px);padding:34px clamp(20px,6vw,44px) 40px;overflow-y:auto;box-shadow:inset 0 14px 16px -12px #4a2f248c,inset 0 -14px 16px -12px #4a2f248c}.scroll__title{font-family:var(--font-serif);text-align:center;color:#7a3e2c;overflow-wrap:anywhere;border-bottom:2px solid #a88a4499;margin:0 0 .8em;padding-bottom:.5em;font-size:clamp(1.25rem,4.5vw,1.6rem)}.scroll__text{font-family:var(--font-serif);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:clamp(1.02rem,3.6vw,1.2rem);line-height:1.75}.scroll__seal{color:#f6dfa4;background:radial-gradient(circle at 35% 30%,#d05a50,#9a2f2f 75%);border-radius:50%;place-items:center;width:44px;height:44px;margin:22px 0 0 auto;font-size:1.1rem;display:grid;box-shadow:0 2px 5px #0000004d}.scroll__more{color:#f6dfa4;pointer-events:none;background:#4a2f24c7;border-radius:50%;place-items:center;width:34px;height:34px;animation:1.4s ease-in-out infinite nudge;display:grid;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}@keyframes unroll{0%{clip-path:inset(0 0 100%);opacity:.4}to{clip-path:inset(0);opacity:1}}@keyframes nudge{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,4px)}}.viewer--cassette{width:min(420px,100%)}.tape{background:linear-gradient(160deg, #b9664f, var(--terracotta-deep));border-radius:18px;width:100%;padding:16px 18px 20px;box-shadow:0 18px 44px #00000080,inset 0 0 0 3px #0000001f}.tape__label{background:var(--cream);color:#7a4e3a;border-top:8px solid var(--terracotta);overflow-wrap:anywhere;background-image:repeating-linear-gradient(#0000 0 22px,#5a3d3029 22px 23px);border-radius:8px;min-height:46px;padding:8px 12px;font-weight:800}.tape__window{background:#2a2420;border-radius:12px;justify-content:space-between;width:70%;margin:14px auto 0;padding:10px 22px;display:flex}.tape__reel{border:9px solid var(--eggshell);border-top-color:#cdbf9f;border-radius:50%;width:46px;height:46px}.tape.is-playing .tape__reel{animation:2.2s linear infinite spin}.tape__audio{width:100%}.viewer--gift{width:min(440px,100%)}.gift{--box:min(220px, 52vw);flex-direction:column;align-items:center;width:100%;padding-top:6px;display:flex}.gift__card{z-index:1;width:100%;max-height:calc(100dvh - 150px - var(--box));background:var(--cream);color:var(--ink);text-align:center;border:2px dashed var(--gold);transform-origin:bottom;border-radius:16px;padding:18px 20px;font-size:clamp(1.05rem,4vw,1.25rem);font-weight:700;animation:1.5s cubic-bezier(.2,1.3,.4,1) both gift-card;position:relative;overflow-y:auto;box-shadow:0 12px 30px #0006}.gift__card p{white-space:pre-line;overflow-wrap:anywhere;margin:0}.gift__box{width:var(--box);height:calc(var(--box) * .82);margin-top:calc(var(--box) * .16);position:relative}.gift__body{background:linear-gradient(90deg, transparent 43%, var(--terracotta) 43% 57%, transparent 57%), radial-gradient(circle at 20% 30%, #f1e9d6 0 7%, transparent 8%), radial-gradient(circle at 80% 30%, #f1e9d6 0 7%, transparent 8%), radial-gradient(circle at 20% 75%, #f1e9d6 0 7%, transparent 8%), radial-gradient(circle at 80% 75%, #f1e9d6 0 7%, transparent 8%), var(--sage);border-radius:10px 10px 16px 16px;height:72%;position:absolute;bottom:0;left:6%;right:6%;box-shadow:inset 0 14px 14px -8px #00000059,0 14px 30px #0006}.gift__lid{background:linear-gradient(90deg, transparent 43%, var(--terracotta-deep) 43% 57%, transparent 57%), var(--terracotta);transform-origin:12% 100%;border-radius:10px;height:26%;animation:1.5s cubic-bezier(.3,1.4,.5,1) both gift-lid;position:absolute;top:4%;left:0;right:0;box-shadow:0 6px 12px #0000004d}.gift__bow{width:44%;height:90%;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.gift__bow:before,.gift__bow:after{content:"";border:8px solid var(--terracotta-deep);border-radius:50% 50% 8px;width:46%;height:100%;position:absolute;bottom:-4px}.gift__bow:before{left:2%;transform:rotate(-24deg)}.gift__bow:after{right:2%;transform:scaleX(-1)rotate(-24deg)}@keyframes gift-lid{0%,22%{transform:none}30%{transform:translateY(6px)}60%,to{transform:translate(-46%,18%)rotate(-38deg)}}@keyframes gift-card{0%,34%{opacity:0;transform:translateY(70%)scale(.35)}to{opacity:1;transform:none}}.overlay__panel{background:var(--bg-inner);border-radius:22px;max-width:min(920px,100%);max-height:100%;padding:22px;animation:.35s both rise;position:relative;overflow:auto;box-shadow:0 24px 60px #00000080}.overlay__panel h2{color:var(--gold);overflow-wrap:anywhere;padding-right:40px;font-size:1.2rem}.overlay__close{color:var(--cream);cursor:pointer;z-index:2;background:#f4ead81f;border:0;border-radius:50%;width:38px;height:38px;font-size:1.4rem;position:absolute;top:10px;right:12px}.overlay__panel--ticket-full{background:var(--cream);color:var(--ink);max-width:min(960px,100%);padding-top:54px}.overlay__panel--ticket-full .overlay__close{color:var(--ink);background:#3b2a261a}.overlay__panel--ticket-full .error{color:var(--terracotta-deep);font-weight:700}.overlay__panel--ticket-full .ok{color:var(--pine-deep);font-weight:700}.overlay__panel--ticket-full .btn{color:var(--ink);background:#3b2a261a}.parchment{font-family:var(--font-serif);white-space:pre-wrap;overflow-wrap:anywhere;font-size:1.15rem;line-height:1.7}.ticket__label{text-transform:uppercase;letter-spacing:.12em;opacity:.6;margin:0;font-size:.75rem}.ticket__text{overflow-wrap:anywhere;margin:4px 0 14px;font-size:1.25rem;font-weight:800}.ticket-view{grid-template-columns:minmax(200px,320px) 1fr;align-items:start;gap:22px;display:grid}.ticket-view__card{background:var(--pine-deep);aspect-ratio:5/8;border-radius:16px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 14px 34px #00000040}.ticket-view__card img{object-fit:cover;width:100%;height:100%;display:block}.ticket-view__card.is-stamped img{animation:.6s cubic-bezier(.2,1.4,.4,1) both stampIn}.ticket-view__placeholder,.ticket-view__verso{color:var(--cream);overflow-wrap:anywhere;flex:1;padding:22px 22px 56px;overflow:auto}.ticket-view__verso .ticket__label{color:var(--gold);margin-top:12px}.ticket-view__verso .parchment{color:var(--cream);font-size:1rem}.ticket-view__flip{white-space:nowrap;position:absolute;bottom:10px;left:50%;transform:translate(-50%);color:var(--cream)!important;background:#1e1a1fb3!important}.ticket-view__side{overflow-wrap:anywhere;min-width:0}.ticket-view__side h2{color:var(--terracotta-deep);padding-right:0}.ticket-view__qr{border-radius:12px;width:160px;margin:10px 0;display:block}.ticket-view__wallet{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ticket-view__wallet .btn{background:var(--ink);color:var(--cream)}.slide{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;background:#3b2a261f;border-radius:999px;height:56px;margin:12px 0;position:relative;overflow:hidden}.slide.is-disabled{opacity:.6;cursor:default}.slide__fill{background:linear-gradient(90deg, var(--sage), var(--pine));border-radius:999px;transition:width 80ms linear;position:absolute;inset:0 auto 0 0}.slide__knob{background:var(--terracotta);color:#fff7ef;border-radius:50%;place-items:center;width:48px;height:48px;font-size:1.3rem;display:grid;position:absolute;top:4px;box-shadow:0 4px 12px #0000004d}.slide__label{letter-spacing:.01em;pointer-events:none;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;place-items:center;font-size:.88rem;font-weight:800;display:grid;position:absolute;inset:0 8px 0 60px;overflow:hidden}@keyframes stampIn{0%{filter:brightness(1.3);transform:scale(1.08)}to{filter:none;transform:none}}@media (width<=760px){.ticket-view{grid-template-columns:1fr}.ticket-view__card{width:min(300px,100%);margin:0 auto}}@media (height<=520px){.frame{--moulding:8px;--mat:6px;--window:min(100vw - 24px - 2 * (var(--moulding) + var(--mat) + 3px), (100dvh - 110px - 2 * (var(--moulding) + var(--mat) + 3px)) * var(--ratio))}.viewer__caption{max-height:2.8em;font-size:.9rem}.scroll__paper{min-height:0;max-height:calc(100dvh - 110px);padding-top:20px;padding-bottom:24px}}
