:root{--bg: #0a0a0c;--bg-2: #111114;--panel: #141418;--panel-2: #1a1a1f;--border: #26262d;--border-2: #34343d;--text: #e8e8ea;--text-2: #b3b3ba;--text-dim: #6e6e78;--accent: #f2f0e4;--accent-blue: #00b3d9;--accent-pink: #e6007e;--rec: #ff5a52;--serif: "Andada Pro", Georgia, "Times New Roman", serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;background:var(--bg);color:var(--text-2);font-family:var(--serif);font-size:15px;-webkit-font-smoothing:antialiased}#root{height:100%}.app{height:100vh;height:100dvh;display:flex;flex-direction:column;background:radial-gradient(ellipse at top right,oklch(.15 .02 75 / .4),transparent 60%),radial-gradient(ellipse at bottom left,oklch(.13 .02 220 / .3),transparent 60%),var(--bg)}.topbar{flex:0 0 auto;height:52px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 14px;border-bottom:1px solid var(--border);background:color-mix(in oklch,var(--bg) 80%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.brand{display:flex;align-items:center;gap:11px;color:var(--accent);min-width:0}.brand-mark{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--border);border-radius:7px;flex:0 0 auto}.brand-text{min-width:0}.brand-name{font-weight:700;font-size:14px;letter-spacing:.16em;color:var(--text);line-height:1.1}.brand-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.body{flex:1 1 auto;display:flex;min-height:0}.viewport{flex:1 1 auto;position:relative;display:flex;align-items:center;justify-content:center;padding:28px;min-width:0;overflow:hidden;background-color:var(--bg-2);background-image:linear-gradient(45deg,#0e0e12 25%,transparent 25%),linear-gradient(-45deg,#0e0e12 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#0e0e12 75%),linear-gradient(-45deg,transparent 75%,#0e0e12 75%);background-size:22px 22px;background-position:0 0,0 11px,11px -11px,-11px 0}.viewport.dropping{outline:2px dashed var(--accent);outline-offset:-12px}.viewport-frame{max-width:100%;max-height:100%;display:flex}.output-canvas{max-width:100%;max-height:calc(100vh - 108px);width:auto;height:auto;display:block;border-radius:3px;box-shadow:0 24px 60px #0000008c,0 2px #ffffff08}.vp-controls{position:absolute;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:7px 9px;background:color-mix(in oklch,var(--panel) 88%,transparent);border:1px solid var(--border-2);border-radius:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.vp-controls-label{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);padding-right:6px}.drop-overlay{position:absolute;top:12px;right:12px;bottom:12px;left:12px;display:flex;align-items:center;justify-content:center;border:2px dashed var(--accent);border-radius:10px;background:color-mix(in oklch,var(--bg) 70%,transparent);font-family:var(--mono);font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);pointer-events:none;z-index:5}.panel{flex:0 0 320px;width:320px;border-left:1px solid var(--border);background:var(--panel);overflow-y:auto;overflow-x:hidden;padding:4px 0 0}.panel::-webkit-scrollbar{width:10px}.panel::-webkit-scrollbar-thumb{background:#2a2a32;border-radius:10px;border:3px solid var(--panel)}.panel-section{padding:16px 18px;border-bottom:1px solid var(--border)}.panel-title{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);margin-bottom:12px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-2);background:var(--panel-2);color:var(--text);font-family:var(--serif);font-size:14px;font-weight:600;padding:10px 12px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .12s,border-color .12s,color .12s,transform .05s;line-height:1.1}.btn:hover{border-color:#45454f;background:#202026}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:#15140e;border-color:var(--accent)}.btn-primary:hover{background:#fffefa;border-color:#fffefa}.btn-accent{background:transparent;color:var(--accent);border-color:var(--border-2)}.btn-accent:hover{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 8%,transparent)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-record{background:transparent;color:var(--text)}.btn-record .rec-dot{width:9px;height:9px;border-radius:50%;background:var(--rec);box-shadow:0 0 #ff5a5280}.btn-record.on{border-color:var(--rec);color:var(--rec);background:color-mix(in oklch,var(--rec) 10%,transparent)}.btn-record.on .rec-dot{animation:recpulse 1s ease-in-out infinite}@keyframes recpulse{0%,to{box-shadow:0 0 #ff5a528c}50%{box-shadow:0 0 0 6px #ff5a5200}}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.source-tabs{display:flex;gap:8px}.src-tab{flex:1 1 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-2);background:var(--panel-2);color:var(--text-2);font-family:var(--serif);font-size:13.5px;font-weight:600;padding:9px 10px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .12s,border-color .12s,color .12s}.src-tab:hover{border-color:#45454f;color:var(--text)}.src-tab.on{background:var(--accent);color:#15140e;border-color:var(--accent)}.src-glyph{font-size:13px;line-height:1}.source-meta{display:flex;align-items:center;gap:7px;margin-top:12px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--text-dim);flex-wrap:wrap}.src-label{color:var(--text-2)}.src-dot{opacity:.5}.src-live{color:var(--accent-blue)}.src-static{color:var(--text-dim)}.preset-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.preset-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-2);background:var(--panel-2);border-radius:6px;padding:7px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;transition:border-color .12s,transform .05s}.preset-card:hover{border-color:#50505a}.preset-card:active{transform:translateY(1px)}.preset-swatch{position:relative;width:100%;height:34px;border-radius:4px;overflow:hidden;display:block}.preset-dot{position:absolute;width:14px;height:14px;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.preset-dot-2{transform:translate(-115%,-50%);width:11px;height:11px;mix-blend-mode:multiply}.preset-dot-3{transform:translate(15%,-50%);width:11px;height:11px;mix-blend-mode:multiply}.preset-name{font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--text-2);text-transform:uppercase}.segmented{display:flex;gap:4px;background:var(--panel-2);border:1px solid var(--border-2);border-radius:7px;padding:4px}.seg{flex:1 1 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-2);font-family:var(--serif);font-size:13.5px;font-weight:600;padding:7px 8px;border-radius:5px;cursor:pointer;transition:background .12s,color .12s}.seg:hover{color:var(--text)}.seg-on{background:var(--accent);color:#15140e}.seg-icon{margin-right:5px}.shape-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.shape-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-2);background:var(--panel-2);border-radius:6px;padding:8px 4px 6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--text-dim);transition:border-color .12s,color .12s,background .12s}.shape-btn svg{width:18px;height:18px}.shape-btn span{font-family:var(--mono);font-size:8.5px;letter-spacing:.02em;text-transform:uppercase}.shape-btn:hover{border-color:#50505a}.shape-btn.on{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 9%,transparent);color:var(--text)}.slider{display:block;margin-bottom:14px}.slider:last-child{margin-bottom:0}.slider-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}.slider-label{font-size:14px;color:var(--text-2)}.slider-value{font-family:var(--mono);font-size:12px;color:var(--text)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;border-radius:999px;background:#2c2c34;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);box-shadow:0 1px 4px #00000080;cursor:pointer}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);cursor:pointer}.check{display:flex;align-items:center;gap:9px;margin-top:12px;font-size:14px;color:var(--text-2);cursor:pointer}.check input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.swatch{display:flex;align-items:center;gap:11px;margin-bottom:10px;cursor:pointer}.swatch:last-child{margin-bottom:0}.swatch-dot{position:relative;width:26px;height:26px;border-radius:6px;border:1px solid var(--border-2);flex:0 0 auto;overflow:hidden}.swatch-dot input[type=color]{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;width:calc(100% + 8px);height:calc(100% + 8px);border:0;padding:0;background:transparent;cursor:pointer;opacity:0}.swatch-label{flex:1 1 auto;font-size:14px;color:var(--text-2)}.swatch-hex{font-family:var(--mono);font-size:11px;color:var(--text-dim);letter-spacing:.04em}.cmyk-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}.cmyk-grid .swatch{margin-bottom:6px}.panel-footer{padding:18px}.privacy-line{font-size:12.5px;line-height:1.6;color:var(--text-dim)}.privacy-line strong{color:var(--text-2);font-weight:600}.footer-formats{margin-top:14px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--text-dim)}.about-drop{margin-top:14px}.about-drop>summary.footer-about{list-style:none;display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid var(--border-2);border-radius:5px;padding:8px 14px;cursor:pointer;transition:border-color .12s,color .12s;-webkit-user-select:none;user-select:none}.about-drop>summary.footer-about::-webkit-details-marker{display:none}.about-drop>summary.footer-about:hover{border-color:var(--accent)}.about-caret{font-size:9px;transition:transform .15s}.about-drop[open]>summary.footer-about{border-color:var(--accent)}.about-drop[open] .about-caret{transform:rotate(180deg)}.about-drop-body{margin-top:14px;border-top:1px solid var(--border);padding-top:14px;font-size:13px;line-height:1.62;color:var(--text-dim);animation:aboutIn .18s ease}@keyframes aboutIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.about-lede{color:var(--text-2);margin:0}.about-block{margin-top:16px}.about-block:first-child{margin-top:0}.about-block-title{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);margin-bottom:8px}.about-block p{margin:0}.about-credits{list-style:none;margin:0;padding:0}.about-credits li{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.about-credits li:last-child{border-bottom:0}.about-credits b{color:var(--text-2);font-weight:600}.about-credits i{font-style:normal;font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--text-dim);white-space:nowrap}.about-license{margin:8px 0 0;padding:12px;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;font-family:var(--mono);font-size:10.5px;line-height:1.6;color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:170px;overflow-y:auto}@media (max-width: 720px){body{overflow:auto}.app{height:auto;min-height:100dvh}.body{flex-direction:column}.viewport{min-height:46vh;padding:18px}.output-canvas{max-height:60vh}.panel{flex:1 1 auto;width:100%;border-left:0;border-top:1px solid var(--border)}.brand-sub{display:none}}
