:root{--accent:#e0819c;--accent-strong:#f0a7bd;--panel-bg:rgba(16, 14, 22, 0.70);--pop-bg:rgba(22, 19, 30, 0.95);--panel-border:rgba(255, 255, 255, 0.1);--text:rgba(255, 255, 255, 0.92);--text-dim:rgba(255, 255, 255, 0.62);--chip-bg:rgba(255, 255, 255, 0.07);--chip-bg-hover:rgba(255, 255, 255, 0.13);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--panel-w:clamp(300px, 26vw, 352px);--panel-right:16px;--panel-top:clamp(48px, 7vh, 58px);--gap:clamp(7px, 1.25vh, 14px);--pad:clamp(12px, 1.9vh, 18px);--sw:clamp(18px, 2.6vh, 26px);--tile-h:clamp(26px, 3.5vh, 34px);--thumb:clamp(18px, 2.6vh, 24px);--chip-py:clamp(3px, 0.55vh, 6px);--sheet-h:min(50dvh, 364px)}#editor-header{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:14px 20px;font:15px/1 var(--font);color:var(--text);pointer-events:none;z-index:3}#wordmark{font-weight:600;letter-spacing:.3px}#editor-panel{position:fixed;z-index:3;top:var(--panel-top);right:var(--panel-right);width:var(--panel-w);max-height:calc(100dvh - var(--panel-top) - 12px);display:flex;flex-direction:column;gap:var(--gap);padding:var(--pad);box-sizing:border-box;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:16px;box-shadow:0 10px 50px rgba(0,0,0,.4);font:13.5px/1.4 var(--font);color:var(--text)}#editor-panel[hidden]{display:none}:where(#editor-panel) a:focus-visible,:where(#editor-panel) button:focus-visible,:where(#editor-panel) input:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-label{font-family:"FS Cormorant",Georgia,serif;font-style:italic;font-size:14.5px;font-weight:500;letter-spacing:.2px;line-height:1.1;color:rgba(232,222,228,.52);padding-left:7px}.field-inline{flex-direction:row;align-items:center;gap:10px}.field-inline .field-label{flex:none;width:2.6em}.chip-row{display:flex;flex-wrap:wrap;gap:5px}.chip{pointer-events:auto;border:1px solid transparent;background:var(--chip-bg);color:var(--text);font:inherit;font-size:12.5px;line-height:1.3;padding:var(--chip-py) 10px;border-radius:999px;cursor:pointer;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.chip:hover{background:var(--chip-bg-hover)}.chip[aria-checked=true]{border-color:var(--accent);background:rgba(224,129,156,.18);color:var(--accent-strong)}.swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,var(--sw));justify-content:space-between;gap:5px}.swatch{pointer-events:auto;width:var(--sw);height:var(--sw);padding:0;border-radius:50%;border:1.5px solid rgba(255,255,255,.18);cursor:pointer;transition:filter .12s ease,border-color .12s ease,opacity .15s ease}.swatch:hover{filter:brightness(1.15);border-color:rgba(255,255,255,.7)}.swatch[aria-checked=true]{border-color:#fff;box-shadow:0 0 0 2px rgba(224,129,156,.7)}.species-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.species-tile{pointer-events:auto;display:flex;align-items:center;gap:7px;min-width:0;height:var(--tile-h);padding:0 8px 0 5px;border:1px solid transparent;border-radius:9px;background:var(--chip-bg);color:var(--text);font:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.species-tile:hover{background:var(--chip-bg-hover)}.species-tile[aria-checked=true]{border-color:var(--accent);background:rgba(224,129,156,.18);color:var(--accent-strong)}.species-thumb{flex:none;width:var(--thumb);height:var(--thumb);object-fit:contain;display:block}.species-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip.unfit,.species-tile.unfit{opacity:.26;filter:grayscale(.85)}.swatch.unfit{opacity:.3;filter:grayscale(.55)}.chip.unfit:hover,.species-tile.unfit:hover,.swatch.unfit:hover{opacity:.8;filter:none}.species-tile.unfit[aria-checked=true],.swatch.unfit[aria-checked=true]{opacity:.7;filter:grayscale(.4)}.species-tile.fit{border-color:rgba(255,211,110,.55);background:rgba(255,211,110,.1)}.swatch.fit{box-shadow:inset 0 0 0 2px rgba(255,211,110,.95)}.swatch.fit[aria-checked=true]{box-shadow:inset 0 0 0 2px rgba(255,211,110,.95),0 0 0 2px rgba(224,129,156,.7)}.chip.fit{border-color:rgba(255,211,110,.6)}.chip.fit::after{content:"\2605"/"";margin-left:4px;color:#ffd36e;font-size:10px}.field-head-line{display:flex;align-items:center;justify-content:space-between;gap:8px}.ribbon-toggle{pointer-events:auto;display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;border:1px dashed rgba(255,211,110,.6);background:rgba(255,211,110,.08);color:var(--text);font:500 11.5px/1.5 var(--font);cursor:pointer}.ribbon-toggle.on{border-style:solid}.ribbon-toggle:hover{background:rgba(255,211,110,.18)}.ribbon-dot{width:10px;height:10px;border-radius:50%;background:#d4a644;box-shadow:0 0 0 1px rgba(255,255,255,.35)}.ribbon-toggle:not(.on) .ribbon-dot{display:none}.ribbon-pop{display:flex;flex-direction:column;gap:10px;width:280px}.ribbon-pop[hidden]{display:none}.ribbon-pop-title{margin:0;font-size:14px;font-weight:600}.ribbon-pop-hint{margin:0;font-size:11.5px;color:var(--text-dim)}.ribbon-colors{grid-template-columns:repeat(8,24px);justify-content:start;gap:6px}.ribbon-colors .swatch{width:24px;height:24px}.ribbon-colors[hidden]{display:none}.lore[hidden]{display:none}#editor-panel:has(#caution:not([hidden])) .lore{display:none}.lore-summary{pointer-events:auto;width:100%;display:flex;align-items:center;gap:8px;padding:6px 8px 6px 10px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease}.lore-summary:hover,.lore-summary[aria-expanded=true]{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.16)}.lore-dot{flex:none;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1.5px rgba(255,255,255,.25)}.lore-summary-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lore-summary-text b{font-weight:600}.lore-badge{flex:none;font-size:11px;padding:1px 7px;border-radius:999px}.lore-badge:empty{display:none}.lore-badge.ok{background:rgba(160,210,150,.16);color:#cbe6c0}.lore-badge.warn{background:rgba(240,190,120,.16);color:#f0cf9a}.lore-i{flex:none;display:grid;place-items:center;width:17px;height:17px;border-radius:50%;border:1px solid rgba(255,255,255,.35);font:italic 600 11px/1 Georgia,serif;color:var(--text-dim)}.popover{position:absolute;right:calc(100% + 12px);bottom:0;width:300px;max-height:calc(100dvh - var(--panel-top) - 12px);overflow-y:auto;box-sizing:border-box;padding:14px 16px;border-radius:14px;background:var(--pop-bg);border:1px solid var(--panel-border);box-shadow:0 12px 44px rgba(0,0,0,.5);color:var(--text);z-index:5}.popover[hidden]{display:none}.lore-pop-head{display:flex;align-items:center;gap:9px;margin:0 0 2px}.lore-pop-head .lore-dot{width:12px;height:12px}.lore-pop-title{margin:0;font-size:16px;font-weight:600;color:#f6eef3}.lore-pop-sub{margin:0 0 10px 21px;font-size:12px;color:var(--text-dim)}.lore-rows{margin:0;display:flex;flex-direction:column;gap:9px}.lore-row{margin:0}.lore-row dt{font-size:11.5px;font-weight:600;color:var(--accent-strong);margin:0 0 1px}.lore-row dd{margin:0;font-size:13px;line-height:1.45;color:rgba(240,236,240,.9)}.lore-origin{display:block;margin-top:2px;font-size:12px;font-style:italic;color:rgba(230,210,235,.6)}.lore-row.ok dd{color:#cbe6c0}.lore-row.warn dt{color:#f0cf9a}.lore-row.warn dd{color:#f3dcb6}.lore-row.taboo dt{color:#f0b0a6}.lore-row.bg dd{font-size:12px;color:rgba(240,236,240,.66)}.caution{border:1px solid rgba(240,190,120,.35);background:rgba(240,190,120,.1);border-radius:10px;padding:7px 10px;display:flex;flex-direction:column;gap:6px}.caution[hidden]{display:none}#caution-text{margin:0;color:rgba(255,236,210,.95);font-size:12px;line-height:1.35}.caution-actions{display:flex;align-items:center;gap:10px}.caution-actions .chip-row{flex:1;gap:5px}.caution .swatch{width:18px;height:18px}.caution .linkish{font-size:12px}.linkish,.more-toggle{pointer-events:auto;background:0 0;border:none;color:var(--accent);font:inherit;font-size:12.5px;padding:0;cursor:pointer;white-space:nowrap}.more-toggle::after{content:" \203A"}.more-toggle[aria-expanded=true]{color:var(--accent-strong)}#more-panel{flex-direction:column;gap:12px;width:260px}#more-panel:not([hidden]){display:flex}#more-panel .linkish{align-self:flex-start}.slider-field{display:grid;grid-template-columns:76px 1fr;align-items:center;gap:10px;color:var(--text-dim);font-size:13px}.slider-field input[type=range]{pointer-events:auto;width:100%;accent-color:var(--accent)}.checkbox-field{display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:13px;cursor:pointer}.checkbox-field input{pointer-events:auto;accent-color:var(--accent)}#continue-btn{pointer-events:auto;flex:none;display:flex;align-items:center;justify-content:center;gap:10px;padding:clamp(10px,1.5vh,13px) 18px;border:none;border-radius:12px;background:linear-gradient(135deg,var(--accent),#c96b86);color:#fff;font:600 15px/1 var(--font);cursor:pointer;transition:filter .15s ease}#continue-btn:hover{filter:brightness(1.08)}.send-row{display:flex;gap:8px;flex:none}.send-row #continue-btn{flex:1 1 0;min-width:0}#preview-gift{pointer-events:auto;flex:1.25 1 0;white-space:nowrap;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;padding:clamp(10px,1.5vh,13px) 8px;border:1.5px solid var(--accent);border-radius:12px;background:rgba(224,129,156,.12);color:var(--accent-strong);font:600 13px/1.1 var(--font);cursor:pointer}#preview-gift:hover{background:rgba(224,129,156,.22)}#preview-gift svg{flex:none}#preview-overlay{position:fixed;inset:0;z-index:80;background:#0d0a0e}body[data-loading] #editor-panel{pointer-events:none;opacity:.55;transition:opacity .4s ease}body[data-loading] #continue-btn{cursor:progress}#ready-notice{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:70;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);box-sizing:border-box;padding:8px 10px 8px 16px;border-radius:999px;background:rgba(16,12,18,.9);border:1px solid rgba(255,211,110,.5);color:#f3e9df;font:500 14px/1.2 system-ui,sans-serif}#ready-notice a{padding:6px 12px;border-radius:999px;background:#e0819c;color:#1a0f14;font-weight:600;text-decoration:none}#preview-overlay iframe{width:100%;height:100%;border:0;display:block}.panel-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:-2px}.legal-footer{margin:0;font-size:11px;color:var(--text-dim);white-space:nowrap}.legal-footer a{pointer-events:auto;color:var(--text-dim)}.legal-footer a:hover{color:var(--accent-strong)}#panel-tabs{display:none}.field-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.field-head .linkish{font-size:11.5px}#message-count{font-size:11px;color:var(--text-dim)}#message{pointer-events:auto;display:block;width:100%;box-sizing:border-box;margin:0;padding:7px 10px;min-height:calc(2 * 1.4em + 14px);border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(0,0,0,.22);color:var(--text);font:inherit;font-size:13.5px;line-height:1.4;resize:none;outline:0;transition:border-color .15s ease,background .15s ease}#message::placeholder{color:rgba(255,255,255,.4)}#message:focus{border-color:rgba(224,129,156,.7);background:rgba(0,0,0,.3)}.paper-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.paper-tile{pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:3px 2px 2px;border:1px solid transparent;border-radius:8px;background:0 0;color:var(--text-dim);font:inherit;font-size:10.5px;line-height:1.15;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.paper-tile:hover{background:var(--chip-bg);color:var(--text)}.paper-tile[aria-checked=true]{border-color:var(--accent);background:rgba(224,129,156,.14);color:var(--accent-strong)}.paper-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-swatch{display:grid;place-items:center;width:100%;max-width:40px;height:var(--paper-sw-h,clamp(22px,3vh,28px));border-radius:3px;overflow:hidden;font-size:13px;line-height:1;box-shadow:0 1px 2px rgba(0,0,0,.45)}.paper-swatch[data-paper=card]{border-radius:6px;background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,.03)),rgba(28,24,38,.9);border:1px solid rgba(255,255,255,.2);color:#fff;font-family:var(--font-ui)}.paper-swatch[data-paper=parchment]{background:var(--tex-grain),radial-gradient(ellipse at 50% 45%,#efdcab 30%,#c99a5a 85%,#7a4a1e);box-shadow:inset 0 0 4px rgba(90,45,10,.7),0 1px 2px rgba(0,0,0,.45);color:#3b210d;font:17px/1 var(--font-script)}.paper-swatch[data-paper=notebook]{background:linear-gradient(90deg,transparent 8px,rgba(224,82,96,.8) 8px 9px,transparent 9px),repeating-linear-gradient(180deg,transparent 0 6px,rgba(80,135,205,.6) 6px 7px),#fcfbf5;color:#1f2f6e;font:500 16px/1 var(--font-hand)}.paper-swatch[data-paper=letterhead]{background:linear-gradient(rgba(28,35,51,.45),rgba(28,35,51,.45)) 50% 4px/70% .75px no-repeat,linear-gradient(158deg,#fff,#f1f0ea);color:#1c2333;font:500 14px/1 var(--font-serif)}.paper-swatch[data-paper=kraft]{background:var(--tex-fibre),linear-gradient(175deg,#c49568,#a1713f);background-size:120px 80px,100% 100%;color:#2a1a0c;font:12.5px/1 var(--font-type);clip-path:polygon(7px 0,100% 0,100% 100%,7px 100%,0 calc(100% - 7px),0 7px)}.paper-swatch[data-paper=midnight]{background:radial-gradient(ellipse at 35% 20%,#2a3a74,#0f1634 60%,#070a1d);box-shadow:inset 0 0 0 2px #0f1634,inset 0 0 0 2.75px rgba(214,180,106,.8),0 1px 2px rgba(0,0,0,.45);color:#f0d68a;font:italic 500 15px/1 var(--font-serif)}.paper-swatch[data-paper=watercolor]{background:radial-gradient(ellipse 60% 70% at 15% 25%,rgba(240,150,175,.6),transparent 70%),radial-gradient(ellipse 60% 70% at 90% 85%,rgba(150,168,228,.6),transparent 70%),radial-gradient(ellipse 50% 60% at 85% 10%,rgba(250,205,150,.6),transparent 70%),#fdf9f2;color:#3a1f3d;font:italic 500 15px/1 var(--font-serif)}@media (min-width:641px) and (min-height:880px){.paper-name{visibility:hidden;max-width:none;overflow:visible;text-overflow:clip}.paper-tile:focus-visible .paper-name,.paper-tile:hover .paper-name,.paper-tile[aria-checked=true] .paper-name{visibility:visible}.paper-grid:has(.paper-tile:focus-visible) .paper-tile[aria-checked=true]:not(:focus-visible) .paper-name,.paper-grid:hover .paper-tile[aria-checked=true]:not(:hover) .paper-name{visibility:hidden}}.pose-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pose-ctl{display:flex;flex-direction:column;gap:1px;min-width:0;color:var(--text-dim);font-size:11.5px}.pose-name{white-space:nowrap}.pose-name output{color:var(--text);font-variant-numeric:tabular-nums;margin-left:2px}.pose-ctl input[type=range]{pointer-events:auto;width:100%;height:16px;margin:0;accent-color:var(--accent)}.pose-ctl input[disabled]{opacity:.35}.editor #card-overlay{right:calc(var(--panel-w) + var(--panel-right) + 12px);gap:18px;z-index:2}.editor #message-card{--card-w:28rem}#spin-row{position:absolute;left:18px;right:18px;bottom:40px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}#card-foot-spacer{height:73px;flex:none}.spin-btn{pointer-events:auto;width:64px;height:46px;padding:0;border:none;border-radius:12px;background:0 0;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 3px 3px rgba(0, 0, 0, .45)) drop-shadow(0 8px 10px rgba(0, 0, 0, .28));transition:transform .14s ease,filter .14s ease}.spin-btn svg{display:block;width:100%;height:100%;overflow:visible}.spin-btn:hover{transform:translateY(-1px) scale(1.07);filter:drop-shadow(0 4px 4px rgba(0, 0, 0, .45)) drop-shadow(0 10px 14px rgba(0, 0, 0, .3)) brightness(1.12)}.spin-btn.pressed,.spin-btn:active{transform:translateY(1px) scale(.94);filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .5)) brightness(.95)}.spin-btn:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.spin-btn[disabled]{opacity:.35;cursor:default}@media (max-width:640px),(max-height:879px){#panel-tabs{display:flex;gap:2px;padding:2px;border-radius:10px;background:rgba(0,0,0,.22);flex:none}#panel-tabs button{pointer-events:auto;flex:1;padding:6px 4px;border:none;border-radius:8px;background:0 0;color:var(--text-dim);font:inherit;font-size:12.5px;cursor:pointer}#panel-tabs button[aria-selected=true]{background:rgba(224,129,156,.2);color:var(--accent-strong)}#editor-panel [data-section]{display:none}#editor-panel[data-tab=colour] [data-section=colour],#editor-panel[data-tab=flower] [data-section=flower],#editor-panel[data-tab=message] [data-section=message],#editor-panel[data-tab=occasion] [data-section=occasion],#editor-panel[data-tab=scene] [data-section=scene]{display:flex}#editor-panel[data-tab=colour] [data-section=colour],#editor-panel[data-tab=flower] [data-section=flower]{display:block}#editor-panel [data-section]>.field-label,#field-message .field-head .field-label{display:none}#field-message .field-head{justify-content:flex-end}#field-message #message-count:empty{display:none}#editor-panel[data-tab=scene]{--gap:14px}#message{min-height:calc(3 * 1.4em + 14px)}.paper-grid{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:6px}.paper-swatch{max-width:56px}.paper-tile{font-size:11px}.species-grid{grid-template-columns:repeat(3,minmax(0,1fr))}:root{--sw:24px;--tile-h:28px;--thumb:20px;--chip-py:4px;--gap:8px;--pad:12px}}@media (max-width:640px){#editor-panel{top:auto;bottom:0;left:0;right:0;width:100%;height:var(--sheet-h);max-height:none;border-radius:18px 18px 0 0;border-bottom:none;padding-bottom:max(var(--pad),env(safe-area-inset-bottom))}#editor-panel [data-section]{flex:1 1 auto;min-height:0}.caution,.lore,.panel-foot,.send-row{flex:none}.species-tile{font-size:11.5px;letter-spacing:-.1px;gap:4px;padding:0 4px 0 3px}:root{--sw:28px}.popover{right:10px;left:10px;bottom:calc(100% + 10px);width:auto;max-height:calc(100dvh - var(--sheet-h) - 70px)}#more-panel{width:auto}.editor #card-overlay{right:0;bottom:calc(var(--sheet-h) + 10px);top:auto;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:4px;padding:0 6px}.editor #message-card{grid-column:2;grid-row:1;justify-self:center}#message{font-size:16px}#editor-panel[data-tab=message] :is(.lore,.caution){display:none}#spin-row{display:contents}#spin-left{grid-column:1;grid-row:1}#spin-right{grid-column:3;grid-row:1}.spin-btn{width:46px;height:38px}#card-foot-spacer{display:none}}@media (max-width:640px) and (max-height:600px){#editor-panel :is(#paper-row,.lore,.caution,.panel-foot){display:none}#message{min-height:calc(2 * 1.4em + 14px)}}canvas.can-pluck{cursor:grab}canvas.is-grabbing,canvas.is-spinning{cursor:grabbing}