:root{--bg: #ffffff;--bg-soft: #f5f6f9;--bg-sunken: #eef0f5;--ink: #14161d;--ink-soft: #3b414f;--muted: #737a8a;--line: #e6e9f0;--line-strong: #d3d8e3;--accent: #0bcabb;--accent-ink: #06a99c;--accent-wash: #e6faf8;--danger: #e23d5c;--danger-wash: #fdecef;--warn: #b6791f;--warn-wash: #fbf2df;--shadow-sm: 0 1px 2px rgba(20, 22, 29, .06), 0 2px 8px rgba(20, 22, 29, .05);--shadow-md: 0 6px 24px rgba(20, 22, 29, .1);--radius: 14px;--radius-sm: 10px;--maxw: 1080px;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}[hidden]{display:none!important}body{background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{line-height:1.08;margin:0;letter-spacing:-.025em;font-weight:800}p{margin:0}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:700;color:var(--accent-ink)}.muted{color:var(--muted)}.app-nav{position:sticky;top:0;z-index:20;background:#ffffffdb;backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line)}.app-nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px;gap:16px}.brand{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:1.15rem;letter-spacing:-.03em;color:var(--ink)}.brand:hover{text-decoration:none}.brand-dot{color:var(--accent-ink)}.brand-mark{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--accent),#3ad6ff);display:grid;place-items:center;color:#04231f;font-size:15px;box-shadow:var(--shadow-sm)}.nav-right{display:flex;align-items:center;gap:14px}.nav-email{color:var(--muted);font-size:.9rem;max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{--btn-bg: var(--bg);--btn-fg: var(--ink);--btn-bd: var(--line-strong);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:var(--radius-sm);border:1px solid var(--btn-bd);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-size:.95rem;font-weight:650;cursor:pointer;text-decoration:none;transition:transform .12s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease,opacity .12s ease;white-space:nowrap}.btn:hover{text-decoration:none;transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn.primary{--btn-bg: var(--accent);--btn-fg: #04231f;--btn-bd: transparent;box-shadow:0 6px 18px #0bcabb59}.btn.primary:hover{--btn-bg: var(--accent-ink)}.btn.dark{--btn-bg: var(--ink);--btn-fg: #fff;--btn-bd: transparent}.btn.dark:hover{--btn-bg: #000}.btn.ghost{--btn-bg: transparent;--btn-bd: transparent}.btn.danger{--btn-fg: var(--danger);--btn-bd: transparent;--btn-bg: var(--danger-wash)}.btn.big{padding:15px 28px;font-size:1.05rem}.btn.block{width:100%}.btn.sm{padding:8px 14px;font-size:.85rem}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.row.center{justify-content:center}.stack{display:flex;flex-direction:column}.hero{padding:clamp(48px,9vw,104px) 0 clamp(40px,7vw,80px)}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,64px);align-items:center}.hero h1{font-size:clamp(2.6rem,6vw,4.6rem);margin:14px 0 0}.hero h1 .tint{color:var(--accent-ink)}.hero-sub{margin-top:20px;font-size:clamp(1.05rem,2vw,1.28rem);color:var(--ink-soft);max-width:30ch}.hero-cta{margin-top:32px}.hero-art{border-radius:24px;overflow:hidden;aspect-ratio:4 / 3;background:radial-gradient(120% 120% at 0% 0%,#d5fff9,transparent 55%),radial-gradient(120% 120% at 100% 100%,#dfe6ff,transparent 55%),var(--bg-soft);border:1px solid var(--line);display:grid;place-items:center;box-shadow:var(--shadow-md)}.hero-art img{width:62%;border-radius:14px;box-shadow:var(--shadow-md);rotate:-4deg}@media (max-width: 820px){.hero-grid{grid-template-columns:1fr}.hero-art{order:-1;aspect-ratio:16 / 10}.hero-sub{max-width:none}}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:8px 0 64px}.feature{padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg)}.feature .ico{font-size:1.4rem}.feature h3{font-size:1.05rem;margin:12px 0 6px}.feature p{color:var(--muted);font-size:.95rem}@media (max-width: 720px){.features{grid-template-columns:1fr}}.center-page{min-height:calc(100dvh - 64px);display:grid;place-items:center;padding:40px 20px}.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:34px}.auth-card{width:100%;max-width:420px;text-align:center}.auth-card h1{font-size:1.7rem;margin-bottom:8px}.auth-card .muted{margin-bottom:22px}.auth-card form{display:flex;flex-direction:column;gap:14px;text-align:left}.input{width:100%;padding:13px 15px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg);color:var(--ink);font:inherit}.input::placeholder{color:var(--muted)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}label.lbl{display:block;font-weight:650;margin-bottom:8px;font-size:.95rem}.note{border-radius:var(--radius-sm);padding:12px 14px;font-size:.9rem}.note.ok{background:var(--accent-wash);color:var(--accent-ink)}.note.err{background:var(--danger-wash);color:var(--danger)}.note.warn{background:var(--warn-wash);color:var(--warn)}.page{padding:40px 0 80px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:28px;flex-wrap:wrap}.page-head h1{font-size:2rem}.page-head p{color:var(--muted);margin-top:6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}.exp-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.exp-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--line-strong)}.exp-thumb{position:relative;width:100%;aspect-ratio:4 / 3;background:var(--bg-sunken);overflow:hidden}.exp-thumb-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(18px) saturate(1.1) brightness(1.04);transform:scale(1.25);opacity:.85}.exp-thumb-card{position:absolute;inset:12px;width:calc(100% - 24px);height:calc(100% - 24px);object-fit:contain;filter:drop-shadow(0 6px 14px rgba(20,22,29,.35))}.exp-del{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;border:none;background:#ffffffeb;color:var(--ink-soft);font-size:.85rem;cursor:pointer;box-shadow:var(--shadow-sm);opacity:0;transition:opacity .14s ease,background .14s ease,color .14s ease}.exp-card:hover .exp-del,.exp-del:focus-visible{opacity:1}@media (hover: none){.exp-del{opacity:1}}.exp-del:hover{background:var(--danger-wash);color:var(--danger)}.exp-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;flex:1}.exp-body h3{font-size:1.05rem;overflow-wrap:anywhere}.exp-body time{color:var(--muted);font-size:.82rem}.exp-actions{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}@media (max-width: 700px){.grid{grid-template-columns:repeat(2,1fr);gap:12px}.page{padding:20px 0 60px}.page-head{margin-bottom:18px}.page-head h1{font-size:1.5rem}.page-head p{font-size:.9rem}.page-head>.btn{display:none}.app-nav .nav-email{display:none}.exp-thumb{aspect-ratio:1 / 1}.exp-thumb-card{inset:10px;width:calc(100% - 20px);height:calc(100% - 20px)}.exp-body{padding:10px 12px 12px}.exp-body h3{font-size:.95rem}.exp-body time{font-size:.75rem}.exp-actions .btn.sm{padding:6px 12px;font-size:.8rem;flex:1;justify-content:center}}.empty{border:1.5px dashed var(--line-strong);border-radius:var(--radius);padding:56px 28px;text-align:center;color:var(--muted);background:var(--bg-soft)}.empty h3{color:var(--ink);font-size:1.3rem;margin-bottom:8px}.empty p{max-width:44ch;margin:0 auto 20px}.editor-body{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-sunken)}.editor-top{display:flex;align-items:center;gap:14px;height:60px;flex:none;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--line);z-index:30}.editor-top-side{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.editor-top-side.right{justify-content:flex-end}.title-input{flex:0 1 360px;min-width:120px;text-align:center;font:inherit;font-weight:700;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 12px;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.title-input:hover{border-color:var(--line-strong)}.title-input:focus{outline:none;border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 3px var(--accent-wash)}.editor-shell{flex:1;display:flex;min-height:0}.editor-rail{width:300px;flex:none;background:var(--bg);border-right:1px solid var(--line);padding:18px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.rail-label{text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;font-weight:700;color:var(--muted)}.slot{border:1px solid var(--line);border-radius:var(--radius);padding:10px;background:var(--bg);transition:border-color .12s ease,box-shadow .12s ease}.slot.drag,.slot:has(.slot-main:hover){border-color:var(--accent)}.slot.slot-error{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-wash)}.slot-main{display:flex;align-items:center;gap:12px;width:100%;padding:2px;background:none;border:none;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-sm)}.slot-thumb{position:relative;width:64px;height:64px;flex:none;border-radius:10px;border:1.5px dashed var(--line-strong);background:var(--bg-soft);display:grid;place-items:center;overflow:hidden}.slot.filled .slot-thumb{border:1px solid var(--line)}.slot-thumb img,.slot-thumb video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.slot-ico{font-size:1.3rem}.slot-text{min-width:0}.slot-text strong{display:block;font-size:.95rem}.slot-meta{display:block;color:var(--muted);font-size:.8rem;margin-top:2px;overflow-wrap:anywhere}.slot-actions{display:flex;gap:8px;margin-top:10px}.chip{font:inherit;font-size:.8rem;font-weight:650;padding:6px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--bg);color:var(--ink-soft);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.chip:hover{background:var(--bg-soft);color:var(--ink)}.chip.danger:hover{background:var(--danger-wash);border-color:transparent;color:var(--danger)}.add-row{display:flex;gap:8px}.chip.add{flex:1;justify-content:center;display:inline-flex}.layer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.layer-row{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;transition:border-color .12s ease,background .12s ease}.layer-row:hover{border-color:var(--line-strong)}.layer-row.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-wash)}.layer-row-thumb{width:34px;height:34px;flex:none;border-radius:6px;background:var(--bg-soft);border:1px solid var(--line);overflow:hidden;display:grid;place-items:center;font-size:.9rem;position:relative}.layer-row-thumb img,.layer-row-thumb video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.layer-row-label{flex:1;min-width:0;font-size:.85rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-row-kind{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.layer-row-x{flex:none;border:none;background:none;color:var(--muted);font:inherit;font-size:.95rem;cursor:pointer;padding:4px 6px;border-radius:6px}.layer-row-x:hover{background:var(--danger-wash);color:var(--danger)}.tool-swatches{display:inline-flex;align-items:center;gap:6px;padding:0 6px}.swatch{width:20px;height:20px;border-radius:50%;border:2px solid rgba(20,22,29,.15);cursor:pointer;padding:0}.swatch.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-wash)}.rail-tip{margin-top:auto;background:var(--bg-soft);border-radius:var(--radius-sm);padding:14px;font-size:.84rem;color:var(--muted)}.rail-tip ul{margin:8px 0 0;padding-left:18px;display:grid;gap:6px}.msg-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.msg-list:empty{display:none}.msg-list li{font-size:.8rem;padding:8px 10px;border-radius:var(--radius-sm)}.msg-list.warn li{background:var(--warn-wash);color:var(--warn)}.editor-stage{flex:1;position:relative;min-width:0}.stage{position:absolute;inset:0;overflow:hidden;background-image:radial-gradient(var(--line-strong) 1px,transparent 1px);background-size:22px 22px}.stage-toolbar{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:10;display:flex;align-items:center;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:4px 6px;box-shadow:var(--shadow-md)}.tool{border:none;background:transparent;font:inherit;font-size:.85rem;font-weight:650;color:var(--ink-soft);padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap}.tool:hover{background:var(--bg-soft);color:var(--ink)}.tool.danger:hover{background:var(--danger-wash);color:var(--danger)}.tool-sep{width:1px;height:18px;background:var(--line);margin:0 4px}.stage-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;width:max-content;max-width:min(86%,480px);padding:clamp(28px,6vw,56px) clamp(24px,7vw,64px);background:var(--bg);border:1.5px dashed var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:inherit;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.stage-empty:hover,.stage-empty.drag{border-color:var(--accent);box-shadow:var(--shadow-md)}.stage-empty .ico{font-size:2rem}.stage-empty-title{font-weight:800;font-size:1.2rem;letter-spacing:-.02em;text-align:center;text-wrap:balance}.stage-empty-sub{color:var(--muted);font-size:.9rem;text-align:center;text-wrap:balance}.scene-box{position:absolute}.scene-frame{position:absolute;inset:0;border:1.5px dashed var(--line-strong);border-radius:6px;pointer-events:none}.scene-handle{position:absolute;width:14px;height:14px;border-radius:4px;background:var(--bg);border:1.5px solid var(--line-strong);box-shadow:var(--shadow-sm);touch-action:none;z-index:6}.scene-handle:after{content:"";position:absolute;inset:-10px}.scene-handle:hover{border-color:var(--accent)}.scene-handle[data-scene-handle=nw]{left:-7px;top:-7px;cursor:nwse-resize}.scene-handle[data-scene-handle=ne]{right:-7px;top:-7px;cursor:nesw-resize}.scene-handle[data-scene-handle=sw]{left:-7px;bottom:-7px;cursor:nesw-resize}.scene-handle[data-scene-handle=se]{right:-7px;bottom:-7px;cursor:nwse-resize}#stage-card-img{position:absolute;display:block;background:#fff;box-shadow:var(--shadow-md);user-select:none;-webkit-user-drag:none}#layers-root{position:absolute;inset:0}.layer{position:absolute;touch-action:none;cursor:move;outline:none}.layer video,.layer img.media{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;-webkit-user-drag:none}.layer .text-el{white-space:pre;font-weight:700;line-height:1.25;font-family:inherit;pointer-events:none;text-shadow:0 1px 2px rgba(20,22,29,.25)}.layer.editing{cursor:text}.layer.editing .text-el{pointer-events:auto;outline:none}.layer-frame{position:absolute;inset:0;border:2px solid transparent;pointer-events:none}.layer:hover .layer-frame{border-color:#0bcabb8c}.layer.selected .layer-frame{border-color:var(--accent)}.handle{position:absolute;width:14px;height:14px;background:#fff;border:1.5px solid rgba(20,22,29,.2);border-radius:50%;box-shadow:0 1px 4px #14161d4d;display:none;touch-action:none;z-index:2}.handle:after{content:"";position:absolute;inset:-12px}.layer.selected .handle{display:block}.h-nw{left:-8px;top:-8px;cursor:nwse-resize}.h-ne{right:-8px;top:-8px;cursor:nesw-resize}.h-sw{left:-8px;bottom:-8px;cursor:nesw-resize}.h-se{right:-8px;bottom:-8px;cursor:nwse-resize}.h-rot{left:50%;bottom:-38px;transform:translate(-50%);width:26px;height:26px;cursor:grab;font-size:14px;line-height:1;color:var(--ink-soft);display:none;place-items:center}.layer.selected .h-rot{display:grid}.guide{position:absolute;background:#f4c;z-index:5;pointer-events:none}.guide-v{width:1px;top:0;bottom:0}.guide-h{height:1px;left:0;right:0}.rot-badge{position:absolute;z-index:6;transform:translate(-50%,-50%);background:var(--ink);color:#fff;font-size:.75rem;font-weight:650;padding:3px 8px;border-radius:999px;pointer-events:none;white-space:nowrap}.stage-cta-group{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;align-items:center;max-width:92vw}.stage-cta{font:inherit;font-weight:700;padding:12px 20px;border:none;border-radius:999px;background:var(--accent);color:#04231f;cursor:pointer;box-shadow:0 6px 18px #0bcabb73;transition:transform .12s ease,background .12s ease;white-space:nowrap}.stage-cta:hover{background:var(--accent-ink);transform:scale(1.04)}.stage-cta.ghost{background:#fffffff0;color:var(--ink);box-shadow:var(--shadow-md)}.stage-cta.ghost:hover{background:#fff}.stage-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);color:var(--muted);font-size:.8rem;pointer-events:none;white-space:nowrap}.drop-veil{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:#e6faf8e6;backdrop-filter:blur(3px);border:3px dashed var(--accent);pointer-events:none}.drop-veil-inner{text-align:center}.drop-veil-inner .ico{font-size:2.4rem;display:block}.drop-veil-inner strong{display:block;font-size:1.5rem;letter-spacing:-.02em;margin-top:8px}.drop-veil-inner p{color:var(--ink-soft);margin-top:4px}@media (max-width: 860px){.editor-shell{flex-direction:column-reverse}.editor-rail{width:100%;flex-direction:row;align-items:flex-start;gap:10px;padding:10px 12px;border-right:none;border-top:1px solid var(--line);overflow-x:auto;overflow-y:hidden}.editor-rail .slot{min-width:220px;max-width:250px;flex:none}.slot-actions{flex-wrap:wrap}.add-row{flex-direction:column;gap:6px;flex:none}.add-row .chip{padding:6px 10px;font-size:.75rem;white-space:nowrap}.layer-list{flex-direction:row;gap:8px}.layer-row{min-width:185px;max-width:220px;flex:none}.msg-list{min-width:210px;max-width:250px}.rail-label,.rail-tip,.nav-email{display:none}.title-input{flex-basis:200px}.stage-hint{display:none}.editor-top{gap:8px;padding:0 10px}.editor-top .brand{font-size:0;gap:0}#undo-btn,#redo-btn{display:none}.editor-top-side{flex:0 0 auto}.title-input{flex:1 1 auto;min-width:0}}@media (pointer: coarse){.handle{width:18px;height:18px}.h-nw,.h-ne{top:-10px}.h-sw,.h-se{bottom:-10px}.h-nw,.h-sw{left:-10px}.h-ne,.h-se{right:-10px}}@media (max-width: 560px){.stage-toolbar{max-width:calc(100vw - 12px);overflow-x:auto;scrollbar-width:none;justify-content:flex-start}.stage-toolbar::-webkit-scrollbar{display:none}.tool{padding:7px 9px;font-size:.8rem}.tool-swatches{gap:4px}.swatch{width:18px;height:18px}.scene-handle{width:20px;height:20px}}.progress-track{height:10px;border-radius:999px;background:var(--bg-sunken);overflow:hidden}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--accent),#3ad6ff);transition:width .25s ease}.modal-backdrop{position:fixed;inset:0;background:#12141a8c;backdrop-filter:blur(4px);display:grid;place-items:center;padding:20px;z-index:50}.modal{background:var(--bg);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:28px;width:100%;max-width:400px;text-align:center}.modal h2{font-size:1.3rem;margin-bottom:6px}.qr-box{margin:20px auto;width:220px;height:220px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;padding:12px}.qr-box img,.qr-box canvas{width:100%;height:100%}.link-row{display:flex;gap:8px;margin-top:8px}.link-row .input{font-size:.85rem}.corner-mode{position:absolute;inset:0;display:grid;place-items:center;z-index:8}#corner-canvas{display:block;max-width:calc(100% - 96px);max-height:calc(100% - 150px);border-radius:6px;box-shadow:var(--shadow-md);background:#0b0c10;user-select:none;touch-action:none}#corner-svg{position:absolute;pointer-events:none}#corner-mask{fill:#0f11168c}#corner-outline{fill:none;stroke:var(--accent);stroke-width:2}.corner-handle{position:absolute;width:22px;height:22px;transform:translate(-50%,-50%);border-radius:50%;background:#fff;border:2.5px solid var(--accent);box-shadow:0 1px 6px #14161d66;cursor:grab;padding:0;touch-action:none}.corner-handle:after{content:"";position:absolute;inset:-10px}.corner-handle:active{cursor:grabbing}.corner-loupe{position:absolute;border-radius:50%;border:2px solid #fff;box-shadow:var(--shadow-md);pointer-events:none;z-index:3}.corner-preview-float{position:absolute;right:14px;bottom:14px;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:8px 10px}.corner-preview-float span{text-transform:uppercase;letter-spacing:.14em;font-size:.62rem;font-weight:700;color:var(--muted)}#corner-preview{display:block;max-width:110px;max-height:140px;border-radius:4px}.corner-invalid{position:absolute;bottom:16px;left:50%;transform:translate(-50%);font-size:.82rem;color:var(--danger);background:var(--danger-wash);border-radius:999px;padding:8px 14px;box-shadow:var(--shadow-sm)}.tool.primary{background:var(--accent);color:#04231f}.tool.primary:hover{background:var(--accent-ink);color:#04231f}@media (max-width: 640px){#corner-canvas{max-width:calc(100% - 48px)}#corner-preview{max-width:76px;max-height:96px}}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:999px;font-size:.9rem;box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:60}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.spinner{display:inline-block;width:16px;height:16px;border:2.5px solid rgba(255,255,255,.4);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-note{text-align:center;padding:80px 20px;color:var(--muted)}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
