:root{--color-paper:#fbfcfd;--color-paper-2:#f4f5f7;--color-paper-3:#e9ebee;--color-ink:#0f1217;--color-ink-2:#2d3038;--color-neutral:#4a4d54;--color-muted:#5b5e63;--color-rule:#d5d7db;--color-rule-2:#b5b7bd;--color-accent:#7f2827;--color-accent-hover:#651818;--color-accent-soft:#ffe9e6;--color-accent-ink:#fbfcfd;--color-focus:#0077cd;--color-error:#ac1922;--color-success:#00572f;--color-warning:#8d5e00;--font-display:"Noto Sans CJK SC", "Source Han Sans SC", "PingFang SC", sans-serif;--font-body:"PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;--font-outlier:"SFMono-Regular", "Noto Sans Mono CJK SC", monospace;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4.5rem;--space-4xl:7rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.375rem;--text-xl:1.75rem;--text-2xl:2.25rem;--text-3xl:3rem;--text-display:clamp(2.25rem, 4vw, 4.25rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.18s;--dur-long:.32s;--rule-hair:1px;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-pill:999px;--shadow-panel:0 1px 2px #0f12170a, 0 12px 28px #0f121709;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-modal:400;--z-toast:500;--z-tooltip:600}@supports (color:lab(0% 0 0)){:root{--color-paper:lab(98.8339% -.108749 -.74997);--color-paper-2:lab(96.5108% -.162244 -1.12437);--color-paper-3:lab(93.0276% -.214875 -1.49835);--color-ink:lab(5.21957% -.048168 -3.7641);--color-ink-2:lab(19.8905% -.168502 -5.21137);--color-neutral:lab(32.6639% -.205323 -4.4957);--color-muted:lab(39.6346% -.194505 -3.75847);--color-rule:lab(86.0542% -.141829 -2.26909);--color-rule-2:lab(74.4452% -.18096 -3.02074);--color-accent:lab(30.3617% 37.8298 22.5637);--color-accent-hover:lab(22.3321% 34.76 21.2236);--color-accent-soft:lab(93.9694% 7.65815 4.12705);--color-accent-ink:lab(98.8339% -.108749 -.74997);--color-focus:lab(48.0669% -2.68361 -53.5562);--color-error:lab(37.8417% 57.0877 36.6463);--color-success:lab(31.6866% -32.1921 16.6439);--color-warning:lab(44.1912% 15.11 51.9037);--shadow-panel:0 1px 2px lab(5.21957% -.048168 -3.7641/.04), 0 12px 28px lab(5.21957% -.048168 -3.7641/.035)}}
@font-face{font-family:Zhi Mang Xing;src:url(/fonts/ZhiMangXing-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Knewave;src:url(/fonts/Knewave-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Trade Winds;src:url(/fonts/TradeWinds-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Ma Shan Zheng;src:url(/fonts/MaShanZheng-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}*{box-sizing:border-box}html,body{min-height:100%;overflow-x:clip}html{background:var(--color-paper-2)}body{background:var(--color-paper-2);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);margin:0;line-height:1.55}::selection{background:var(--color-accent-soft);color:var(--color-ink)}button,input,select,textarea{font:inherit}button,a,.button{-webkit-tap-highlight-color:transparent}a{color:inherit}img{max-width:100%;display:block}h1,h2,h3,p{margin-block:0}h1,h2,h3{overflow-wrap:anywhere;min-width:0;font-family:var(--font-display);font-style:normal;line-height:1.18}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.topbar{background:var(--color-paper);color:var(--color-ink);border-block-end:var(--rule-hair) solid var(--color-rule)}.nav-edge{justify-content:space-between;align-items:center;gap:var(--space-lg);width:min(100%,76rem);min-height:4rem;padding-inline:clamp(var(--space-md), 4vw, var(--space-2xl));margin-inline:auto;display:flex}.wordmark{align-items:center;gap:var(--space-sm);min-width:0;color:var(--color-ink);white-space:nowrap;text-decoration:none;display:inline-flex}.wordmark strong{font-size:var(--text-sm);letter-spacing:.04em;font-weight:650}.wordmark span{border-inline-start:var(--rule-hair) solid var(--color-rule-2);color:var(--color-muted);font-size:var(--text-sm);padding-inline-start:var(--space-sm)}.session-action{border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-sm);min-width:3.5rem;min-height:2.75rem;padding-inline:var(--space-md);background:var(--color-paper);color:var(--color-neutral);cursor:pointer;white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out)}.main{width:min(100%,76rem);padding:clamp(var(--space-xl), 5vw, var(--space-3xl)) clamp(var(--space-md), 4vw, var(--space-2xl)) var(--space-3xl);flex:1;margin-inline:auto}.app-shell--wide .nav-edge,.app-shell--wide .main{width:min(100%,94rem)}.page-heading{gap:var(--space-md);border-block-end:var(--rule-hair) solid var(--color-rule);align-items:end;margin-block-end:clamp(var(--space-xl), 5vw, var(--space-2xl));padding-block-end:var(--space-xl);display:grid}.page-heading h1{max-width:18ch;font-size:clamp(var(--text-2xl), 3.8vw, var(--text-3xl));letter-spacing:-.035em;font-weight:650}.page-heading p{max-width:52ch;color:var(--color-muted);font-size:var(--text-sm)}.type-index{border-block-start:var(--rule-hair) solid var(--color-rule)}.type-row{gap:var(--space-lg);min-width:0;padding:var(--space-xl) var(--space-md);border-block-end:var(--rule-hair) solid var(--color-rule);color:var(--color-muted);display:grid}.type-row--active{background:var(--color-paper);color:var(--color-ink);box-shadow:inset .2rem 0 0 var(--color-accent)}.type-row__meta{gap:var(--space-xs);min-width:0;display:grid}.type-row h2{font-size:var(--text-lg);letter-spacing:-.015em;font-weight:600}.type-row p{max-width:58ch;color:var(--color-muted);font-size:var(--text-sm)}.type-row__status{width:fit-content;color:var(--color-neutral);font-size:var(--text-xs);font-weight:600}.type-row--active .type-row__status{color:var(--color-accent)}.button{justify-content:center;align-items:center;gap:var(--space-xs);width:fit-content;min-height:3rem;padding-inline:var(--space-lg);border:var(--rule-hair) solid var(--color-ink);border-radius:var(--radius-md);background:var(--color-ink);color:var(--color-paper);cursor:pointer;white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out);font-weight:600;text-decoration:none;display:inline-flex}.button--secondary{border-color:var(--color-rule-2);background:var(--color-paper);color:var(--color-ink)}.button:disabled,.button[aria-disabled=true],.button[aria-busy=true],.session-action:disabled{opacity:.5;cursor:not-allowed}.file-drop:has(input:disabled){opacity:.5;cursor:not-allowed}.radio-card:has(input:disabled){opacity:.5;cursor:not-allowed}.button:active,.session-action:active{transform:translateY(1px)}.button:focus-visible,.session-action:focus-visible,.wordmark:focus-visible,.input:focus-visible,.range-input:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.file-drop:has(input:focus-visible){outline:2px solid var(--color-focus);outline-offset:1px}.radio-card:has(input:focus-visible){outline:2px solid var(--color-focus);outline-offset:1px}.wordmark:active{color:var(--color-accent)}.form-layout{gap:var(--space-xl);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.form-panel{min-width:0;padding:clamp(var(--space-lg), 4vw, var(--space-2xl));border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper);color:var(--color-ink);box-shadow:var(--shadow-panel)}.field-stack{gap:var(--space-xl);display:grid}.field{gap:var(--space-xs);min-width:0;display:grid}.field label,.field legend{color:var(--color-ink-2);font-size:var(--text-sm);font-weight:600}.field legend{padding:0}.field-hint,.field-error{min-height:1.55em;font-size:var(--text-xs);color:var(--color-muted)}.field-error{color:var(--color-error);font-weight:600}.input{border:var(--rule-hair) solid var(--color-rule-2);outline-offset:1px;border-radius:var(--radius-md);background:var(--color-paper);width:100%;min-height:3rem;color:var(--color-ink);padding-inline:var(--space-md) 2.75rem;font-variant-numeric:tabular-nums;outline:2px solid #0000}.input::placeholder{color:var(--color-muted)}.input[aria-invalid=true]{border-color:var(--color-error)}.input:active{border-color:var(--color-neutral)}.input:disabled{opacity:.55;cursor:not-allowed}.radio-grid{gap:var(--space-xs);border:0;grid-template-columns:minmax(0,1fr);margin:0;padding:0;display:grid}.radio-card{align-items:center;gap:var(--space-sm);min-width:0;min-height:3rem;padding:var(--space-sm) var(--space-md);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper);color:var(--color-ink-2);cursor:pointer;display:flex}.radio-card:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.radio-card input{width:1.1rem;height:1.1rem;accent-color:var(--color-accent)}.radio-card:active,.file-drop:active{background:var(--color-paper-3)}.file-drop{align-content:center;place-items:center;gap:var(--space-xs);min-height:7.5rem;padding:var(--space-lg);border:var(--rule-hair) solid var(--color-rule-2);border-radius:var(--radius-md);background:var(--color-paper-2);color:var(--color-ink);text-align:center;cursor:pointer;display:grid;position:relative}.file-drop strong{font-size:var(--text-base);font-weight:600}.file-drop span{color:var(--color-muted);font-size:var(--text-xs);font-weight:400}.file-drop input{opacity:0;block-size:1px;inline-size:1px;position:absolute}.file-list{gap:var(--space-2xs);color:var(--color-ink-2);font-size:var(--text-xs);display:grid}.form-action-bar{justify-content:space-between;align-items:center;gap:var(--space-md);border-block-start:var(--rule-hair) solid var(--color-rule);padding-block-start:var(--space-lg);display:flex}.form-action-bar p{color:var(--color-muted);font-size:var(--text-xs)}.celebration-workbench{gap:var(--space-xl);grid-template-columns:minmax(0,1fr);align-items:start;min-width:0;display:grid}.celebration-controls .field-stack{gap:var(--space-lg)}.celebration-history{gap:var(--space-md);padding:var(--space-lg);border:var(--rule-hair) solid var(--color-rule-2);background:var(--color-paper-3);display:grid}.celebration-history__intro{gap:var(--space-2xs);display:grid}.celebration-history__intro h2{font-size:var(--text-md)}.celebration-history__intro p,.celebration-history__empty{color:var(--color-muted);font-size:var(--text-xs)}.celebration-history__list{gap:var(--space-sm);max-height:25rem;display:grid;overflow-y:auto}.celebration-history__card{gap:var(--space-md);min-width:0;padding:var(--space-sm);border:var(--rule-hair) solid var(--color-rule);background:var(--color-paper);display:flex}.celebration-history__card>img{border:var(--rule-hair) solid var(--color-rule-2);flex:none;align-self:start;width:4.25rem;height:auto}.celebration-history__detail{align-content:start;gap:var(--space-2xs);min-width:0;display:grid}.celebration-history__detail strong{overflow-wrap:anywhere}.celebration-history__detail time,.celebration-history__detail p{color:var(--color-muted);font-size:var(--text-xs);overflow-wrap:anywhere}.celebration-history__links{gap:var(--space-sm);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.celebration-history__links button{color:var(--color-accent);cursor:pointer;background:0 0;border:0;padding:0}.celebration-history__links a,.celebration-history__links button{text-underline-offset:.15em;text-decoration:underline}.celebration-history__links :is(a,button):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.celebration-avatar-upload{min-height:6.75rem}.avatar-adjustment{gap:var(--space-md);padding-block:var(--space-lg);border-block:var(--rule-hair) solid var(--color-rule);display:grid}.field-label-row{justify-content:space-between;align-items:baseline;gap:var(--space-md);min-width:0;display:flex}.field-label-row>span,.field-label-row>output{color:var(--color-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;flex:none}.range-input{width:100%;min-height:2.75rem;accent-color:var(--color-accent);cursor:pointer;margin:0}.button--compact{min-height:2.75rem;padding-inline:var(--space-md);font-size:var(--text-sm);justify-self:start}.celebration-style-editor{gap:var(--space-lg);padding:var(--space-lg);border:var(--rule-hair) solid var(--color-rule-2);background:var(--color-paper-3);display:grid}.celebration-style-editor__intro{justify-content:space-between;align-items:start;gap:var(--space-md);display:flex}.celebration-style-editor__intro>div{gap:var(--space-2xs);display:grid}.celebration-style-editor__intro h3{font-size:var(--text-md)}.celebration-style-editor__intro p{color:var(--color-muted);font-size:var(--text-xs)}.celebration-style-editor__intro .button{flex:none}.celebration-color-control,.celebration-swatches{align-items:center;gap:var(--space-sm);display:flex}.celebration-color-control{flex-wrap:wrap}.celebration-swatch{border:2px solid var(--color-paper-3);outline:var(--rule-hair) solid var(--color-rule-2);cursor:pointer;border-radius:50%;width:2.25rem;height:2.25rem;padding:0}.celebration-swatch.is-selected{outline:2px solid var(--color-accent)}.celebration-color-control input[type=color]{border:var(--rule-hair) solid var(--color-rule-2);background:var(--color-paper);cursor:pointer;width:2.75rem;height:2.75rem;padding:.15rem}.celebration-color-control output{color:var(--color-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.celebration-action{flex-direction:column;align-items:stretch;min-width:0}.celebration-action p{overflow-wrap:anywhere;min-width:0}.celebration-action .button{width:100%}.celebration-action__fallback{gap:var(--space-sm);grid-template-columns:minmax(0,1fr);min-width:0;display:grid}.celebration-preview{gap:var(--space-md);min-width:0;display:grid}.celebration-controls:focus-visible,.celebration-preview:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.celebration-preview__head{justify-content:space-between;align-items:end;gap:var(--space-md);min-width:0;border-block-end:var(--rule-hair) solid var(--color-rule);padding-block-end:var(--space-md);display:flex}.celebration-preview__head>div{gap:var(--space-2xs);min-width:0;display:grid}.celebration-preview__head h2{font-size:var(--text-md);font-weight:600}.celebration-preview__head p,.celebration-preview__head>span{color:var(--color-muted);font-size:var(--text-xs)}.celebration-preview__head>span{white-space:nowrap;flex:none}.celebration-preview__surface{min-width:0;padding:var(--space-md);border:var(--rule-hair) solid var(--color-rule);background:var(--color-paper-3);color:var(--color-ink);justify-content:center;display:flex}.celebration-canvas{border:var(--rule-hair) solid var(--color-rule-2);background:var(--color-paper);width:min(100%,29rem);height:auto;box-shadow:var(--shadow-panel);touch-action:none;-webkit-user-select:none;user-select:none;display:block}.celebration-canvas.is-draggable{cursor:grab}.celebration-canvas.is-draggable:active{cursor:grabbing}.mentor-canvas-wrap{width:min(100%,29rem);position:relative}.mentor-canvas{touch-action:pan-y;width:100%}.mentor-avatar-hit-area{aspect-ratio:1;cursor:grab;touch-action:none;border-radius:50%;position:absolute}.mentor-avatar-hit-area:active{cursor:grabbing}.mentor-avatar-hit-area:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.guardrail-panel{gap:var(--space-lg);min-width:0;border-block-start:var(--rule-hair) solid var(--color-ink);color:var(--color-ink);padding-block-start:var(--space-lg);display:grid}.guardrail-panel h2{font-size:var(--text-md);font-weight:600}.guardrail-panel>p{color:var(--color-muted);font-size:var(--text-xs)}.guardrail-list,.qa-list{gap:var(--space-sm);color:var(--color-ink-2);font-size:var(--text-sm);margin:0;padding-inline-start:var(--space-md);display:grid}.guardrail-list li::marker{color:var(--color-accent)}.qa-list li::marker{color:var(--color-accent)}.result-grid{gap:var(--space-xl);grid-template-columns:minmax(0,1fr);display:grid}.result-card{min-width:0;padding:var(--space-md);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper);color:var(--color-ink)}.result-card__head,.result-actions{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.result-card__head{margin-block-end:var(--space-md)}.result-card__head h2{font-size:var(--text-md);font-weight:600}.poster-frame{border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper-3);margin:0;overflow:clip}.poster-frame img{aspect-ratio:9/16;object-fit:contain;width:100%;height:auto}.result-actions{margin-block-start:var(--space-md)}.confirmation-check{align-items:flex-start;gap:var(--space-sm);max-width:22rem;color:var(--color-ink-2);font-size:var(--text-xs);cursor:pointer;line-height:1.5;display:flex}.confirmation-check input{accent-color:var(--color-accent);flex:none;margin-block-start:.2em}.button.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.regenerate-panel{gap:var(--space-md);padding:var(--space-lg);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper);margin-block-start:var(--space-xl);display:grid}.regenerate-panel .button{justify-self:start}.textarea{resize:vertical;min-height:7rem}.result-actions p,.qa-pass,.qa-fail{font-size:var(--text-xs)}.qa-pass{color:var(--color-success);font-weight:600}.qa-fail{color:var(--color-error);font-weight:600}.login-page{align-items:center;gap:var(--space-2xl);width:min(100%,70rem);min-height:100dvh;padding:clamp(var(--space-xl), 6vw, var(--space-4xl)) clamp(var(--space-md), 5vw, var(--space-2xl));margin-inline:auto;display:grid}.login-intro{align-content:space-between;gap:var(--space-3xl);min-width:0;display:grid}.login-brand{color:var(--color-muted);font-size:var(--text-sm);letter-spacing:.08em;font-weight:600}.login-intro h1{white-space:nowrap;letter-spacing:-.05em;max-width:none;font-size:clamp(2rem,5vw,4.5rem);font-weight:650}.login-intro p{color:var(--color-muted);margin-block-start:var(--space-md)}.login-panel{gap:var(--space-xl);width:100%;min-width:0;border-block-start:var(--rule-hair) solid var(--color-ink);padding-block-start:var(--space-xl);display:grid}.login-panel__head{gap:var(--space-xs);display:grid}.login-panel__head h2{font-size:var(--text-lg);font-weight:600}.login-panel__head p{color:var(--color-muted);font-size:var(--text-sm)}.login-form{gap:var(--space-lg);display:grid}.login-form .button{width:100%}@media (hover:hover) and (pointer:fine){.button:not(.button--secondary):hover{background:var(--color-ink-2)}.button--secondary:hover,.session-action:hover{background:var(--color-paper-3)}.input:hover,.file-drop:hover,.radio-card:hover,.type-row--active:hover{background:var(--color-paper-2)}}@media (min-width:40rem){.page-heading{grid-template-columns:minmax(0,1.1fr) minmax(16rem,.9fr)}.type-row{padding-inline:var(--space-lg);grid-template-columns:minmax(0,1fr) auto;align-items:center}.radio-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-page{grid-template-columns:minmax(0,1.2fr) minmax(18rem,.8fr)}.login-panel{padding:var(--space-xl);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper);color:var(--color-ink);box-shadow:var(--shadow-panel)}}@media (min-width:60rem){.form-layout{gap:var(--space-2xl);grid-template-columns:minmax(0,1.65fr) minmax(15rem,.55fr)}.guardrail-panel{position:sticky;inset-block-start:var(--space-xl)}.celebration-workbench{gap:var(--space-2xl);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);height:100%;min-height:0;overflow:hidden}.celebration-controls{overscroll-behavior-y:contain;scrollbar-gutter:stable;height:100%;min-height:0;overflow-y:auto}}@media (pointer:coarse){.button,.session-action,.input,.radio-card{min-height:3rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.button:active,.session-action:active{transform:none}}.library-dialog{border:1px solid var(--color-rule);background:var(--color-paper);width:min(480px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--color-ink);border-radius:6px;padding:24px;overflow-y:auto}.library-dialog::backdrop{background:#0006}.library-dialog h2{margin:0 0 16px;font-size:22px}.library-dialog__choices{gap:10px;margin:20px 0 14px;display:grid}.library-dialog .button{white-space:normal;width:100%;min-height:44px}.library-dialog>.button{margin-top:16px}.library-status{border-top:1px solid var(--color-rule);padding-top:8px}.library-status p{margin:4px 0}.library-status button,.library-status a{align-items:center;min-height:44px;display:inline-flex}.poster-text-input{gap:var(--space-xs);min-width:0;display:grid}.poster-text-input.is-active>.input{border-color:var(--color-accent)}.poster-format{gap:var(--space-sm);padding:var(--space-md);background:var(--color-paper-3);border:1px solid var(--color-rule-2);border-radius:var(--radius-sm);display:grid}.poster-format__selection{color:var(--color-muted);font-size:var(--text-xs);overflow-wrap:anywhere}.poster-format__selection strong{color:var(--color-ink)}.poster-format__row{align-items:end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.poster-format__row>.button[aria-pressed=true],.poster-preview-modes .button[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper)}.poster-format__font{gap:var(--space-2xs);flex:1;min-width:7rem;display:grid}.poster-format__font .input{min-height:2.75rem}.poster-format__color{gap:var(--space-2xs);display:grid}.poster-format__color input{background:var(--color-paper);border:1px solid var(--color-rule-2);cursor:pointer;width:2.75rem;height:2.75rem;padding:3px}.poster-format__size{gap:0 var(--space-sm);grid-template-columns:1fr 5rem;align-items:center;display:grid}.poster-format__size>label{grid-column:1/-1;justify-content:space-between;display:flex}.poster-format__size output{color:var(--color-muted);font-weight:400}.poster-format__number{min-height:2.75rem;padding-inline:var(--space-xs)}.poster-text-link{min-height:44px;padding:0 var(--space-xs);color:var(--color-ink-2);text-underline-offset:3px;cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;text-decoration:underline}.poster-text-link:disabled{opacity:.45;cursor:default}.poster-preview-editor{gap:var(--space-sm);flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.poster-preview-tools{gap:var(--space-xs);width:100%;padding-bottom:var(--space-sm);display:grid}.poster-preview-toolbar{justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;display:flex}.poster-preview-modes{gap:var(--space-xs);flex-wrap:wrap;display:flex}.poster-preview-tools p,.poster-alignment-status{color:var(--color-muted);font-size:var(--text-xs)}.poster-preview-actions{align-items:center;column-gap:var(--space-sm);flex-wrap:wrap;display:flex}.poster-preview-actions>span{font-size:var(--text-xs);flex:1}.poster-alignment-status{min-height:1.5em;color:var(--color-accent)}.poster-preview-viewport{overscroll-behavior:contain;min-width:0;height:clamp(24rem,65dvh,44rem);display:flex;overflow:hidden}.poster-preview-viewport.is-detail{overflow-y:auto}.poster-canvas-wrap{isolation:isolate;flex:none;margin:auto;position:relative}.poster-preview-viewport.is-detail .poster-canvas-wrap{margin-block:0}.poster-editor-canvas{touch-action:pan-y;width:100%;max-width:none;height:100%}.poster-element{cursor:grab;touch-action:none;border:1px solid #0000;border-radius:2px;min-height:12px;position:absolute}.poster-element:hover,.poster-element.is-selected{background:#1887e80a;border-color:#1887e8}.poster-element:active{cursor:grabbing}.poster-element.is-inactive{pointer-events:none}.poster-element:focus-visible,.poster-text-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.poster-guide{pointer-events:none;z-index:2;background:#1887e8;position:absolute}.poster-guide--x{width:1px;height:100%;top:0}.poster-guide--y{width:100%;height:1px;left:0}.app-shell--studio{padding-block:env(safe-area-inset-top,0px) env(safe-area-inset-bottom,0px);padding-inline:env(safe-area-inset-left,0px) env(safe-area-inset-right,0px);inset-inline:0;top:var(--studio-top,0px);height:var(--studio-height,100dvh);min-height:0;position:fixed;overflow:hidden}.app-shell--studio .topbar{flex:none}.app-shell--studio .nav-edge{min-height:3rem;padding-inline:var(--space-md)}.app-shell--studio .main{gap:var(--space-sm);min-height:0;padding:var(--space-sm) var(--space-sm) var(--space-sm);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.app-shell--studio .page-heading{justify-content:space-between;align-items:center;gap:var(--space-sm);margin:0;padding-block-end:var(--space-xs);display:flex}.app-shell--studio .page-heading h1{font-size:var(--text-md);flex:none}.app-shell--studio .page-heading p{display:none}.app-shell--studio .celebration-workbench{gap:var(--space-sm);grid-template:"preview"minmax(10rem,38%)"controls"minmax(0,1fr)/minmax(0,1fr);height:100%;min-height:0;overflow:hidden}.app-shell--studio .celebration-controls{overscroll-behavior-y:contain;scrollbar-gutter:stable;height:100%;min-height:0;padding:var(--space-md);grid-area:controls;overflow-y:auto}.app-shell--studio .celebration-preview{gap:var(--space-xs);flex-direction:column;grid-area:preview;height:100%;min-height:0;display:flex;overflow:hidden}.app-shell--studio .celebration-preview__head{padding:0 var(--space-xs) var(--space-xs);flex:none}.app-shell--studio .celebration-preview__head h2{font-size:var(--text-sm)}.app-shell--studio .celebration-preview__head p{display:none}.app-shell--studio .celebration-preview__surface{min-height:0;padding:var(--space-xs);flex:1}.app-shell--studio .celebration-preview>.field-error{max-height:2.8rem;font-size:var(--text-xs);flex:none;overflow-y:auto}.app-shell--studio .poster-preview-editor{gap:var(--space-xs);height:100%}.app-shell--studio .poster-preview-tools{gap:var(--space-2xs);flex:none;padding-bottom:0}.app-shell--studio .poster-preview-viewport{flex:1;height:auto;min-height:0}.poster-preview-toolbar{flex-wrap:nowrap;align-items:center}.poster-preview-status{justify-content:space-between;gap:var(--space-xs);font-size:var(--text-xs);color:var(--color-muted);flex-wrap:wrap;display:flex}.poster-position-menu{flex:none;position:relative}.poster-position-menu>summary{cursor:pointer;min-height:44px;padding-inline:var(--space-sm);border:1px solid var(--color-rule-2);border-radius:var(--radius-sm);background:var(--color-paper);font-size:var(--text-xs);white-space:nowrap;align-items:center;display:flex}.poster-position-menu>summary:after{content:"▾";padding-left:var(--space-xs)}.poster-position-menu[open]>summary:after{content:"▴"}.poster-position-menu>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.poster-position-panel{top:calc(100% + var(--space-xs));z-index:5;gap:var(--space-sm);width:min(19rem,100vw - 2rem);max-height:min(24rem,60dvh);padding:var(--space-md);background:var(--color-paper);border:1px solid var(--color-rule-2);box-shadow:var(--shadow-panel);display:grid;position:absolute;right:0;overflow-y:auto}.poster-position-panel p{font-size:var(--text-xs);color:var(--color-muted)}@media (min-width:48rem){.app-shell--studio .nav-edge{min-height:3.5rem;padding-inline:clamp(var(--space-md), 2vw, var(--space-xl))}.app-shell--studio .main{gap:var(--space-md);padding:var(--space-md) clamp(var(--space-md), 2vw, var(--space-xl)) var(--space-md)}.app-shell--studio .page-heading{gap:var(--space-lg);padding-block-end:var(--space-sm)}.app-shell--studio .page-heading h1{font-size:var(--text-xl)}.app-shell--studio .celebration-workbench{gap:var(--space-md);grid-template:"controls preview"minmax(0,1fr)/minmax(0,1.05fr) minmax(0,.95fr)}.app-shell--studio .celebration-controls{padding:var(--space-lg)}.app-shell--studio .celebration-preview__head h2{font-size:var(--text-md)}.app-shell--studio .celebration-preview__surface{padding:var(--space-sm)}}@media (min-width:75rem){.app-shell--studio .page-heading p{max-width:48rem;font-size:var(--text-xs);display:block}}@media (max-height:30rem){.app-shell--studio .celebration-preview__head{display:none}.app-shell--studio .celebration-workbench{grid-template-rows:minmax(8rem,40%) minmax(0,1fr)}}@media (min-width:48rem) and (max-height:30rem){.app-shell--studio .celebration-workbench{grid-template-rows:minmax(0,1fr)}}.poster-format__swatches{flex-wrap:wrap}.poster-format__swatches .celebration-swatch{width:2.75rem;height:2.75rem}.poster-format__swatches .celebration-swatch[aria-pressed=true]{outline:2px solid var(--color-accent)}@media (max-width:47.999rem){.app-shell--studio[data-compact-viewport=true] .topbar,.app-shell--studio[data-compact-viewport=true] .page-heading,.app-shell--studio[data-compact-viewport=true] .celebration-preview__head{display:none}.app-shell--studio[data-compact-viewport=true] .main{grid-template-rows:minmax(0,1fr)}.app-shell--studio[data-compact-viewport=true] .poster-preview-status{display:none}.app-shell--studio[data-compact-viewport=true] .celebration-workbench{grid-template-rows:minmax(5rem,40%) minmax(0,1fr)}}
