:root{--font-sans: "Geist", system-ui, -apple-system, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--accent: oklch(.68 .15 162);--accent-hover: oklch(.62 .15 162);--accent-soft: oklch(.95 .04 162);--accent-fg: #ffffff;--accent-ring: oklch(.68 .15 162 / .32);--radius-sm: 6px;--radius: 9px;--radius-lg: 14px;--shadow-sm: 0 1px 2px oklch(.2 .02 250 / .06);--shadow-md: 0 4px 14px oklch(.2 .02 250 / .1), 0 1px 3px oklch(.2 .02 250 / .06);--shadow-lg: 0 18px 50px oklch(.2 .02 250 / .18), 0 4px 12px oklch(.2 .02 250 / .08);--dur: .16s;--ease: cubic-bezier(.32, .72, 0, 1)}[data-theme=light]{--bg: oklch(.985 .002 250);--bg-sunken: oklch(.955 .003 250);--panel: oklch(1 0 0);--panel-2: oklch(.985 .002 250);--surface: oklch(1 0 0);--border: oklch(.915 .004 250);--border-strong: oklch(.86 .005 250);--text: oklch(.22 .012 255);--text-2: oklch(.46 .012 255);--text-3: oklch(.63 .01 255);--hover: oklch(.96 .003 250);--active: oklch(.93 .004 250);--canvas: oklch(.94 .004 255);--code-bg: oklch(.965 .004 255)}[data-theme=dark]{--bg: oklch(.205 .008 260);--bg-sunken: oklch(.17 .008 260);--panel: oklch(.235 .009 260);--panel-2: oklch(.255 .009 260);--surface: oklch(.26 .009 260);--border: oklch(.32 .01 260);--border-strong: oklch(.4 .012 260);--text: oklch(.96 .004 260);--text-2: oklch(.72 .01 260);--text-3: oklch(.56 .01 260);--hover: oklch(.29 .01 260);--active: oklch(.33 .011 260);--canvas: oklch(.155 .007 260);--code-bg: oklch(.28 .01 260);--accent-soft: oklch(.32 .05 162);--shadow-sm: 0 1px 2px oklch(0 0 0 / .3);--shadow-md: 0 4px 14px oklch(0 0 0 / .4), 0 1px 3px oklch(0 0 0 / .3);--shadow-lg: 0 18px 50px oklch(0 0 0 / .55), 0 4px 12px oklch(0 0 0 / .35)}*{box-sizing:border-box}.ke-app{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.ke-app button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0;margin:0}.ke-app input,.ke-app textarea{font-family:inherit}.ke-app .mono{font-family:var(--font-mono)}.ke-app ::selection{background:var(--accent-ring)}.ke-app ::-webkit-scrollbar{width:10px;height:10px}.ke-app ::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:3px solid transparent;background-clip:padding-box}.ke-app ::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:padding-box;border:3px solid transparent}.ke-app ::-webkit-scrollbar-track{background:transparent}.ke-app [contenteditable]{outline:none}.ke-app .panel,.ke-app .topbar,.ke-app .canvas-area,.ke-app .libcard,.ke-app .insp-field,.ke-app .btn{transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.ke-app .fade-in{animation:ke-fadeIn .22s var(--ease)}@keyframes ke-fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.ke-app .logo-btn{display:flex;align-items:center;border-radius:8px;padding:3px;transition:background var(--dur)}.ke-app .logo-btn:hover{background:var(--hover)}.ke-app .mode-tab{color:var(--text-3);transition:all var(--dur) var(--ease)}.ke-app .mode-tab:hover{color:var(--text-2)}.ke-app .mode-tab[data-active]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.ke-app .icon-toggle{display:flex;padding:6px 10px;border-radius:6px;color:var(--text-3)}.ke-app .icon-toggle[data-active]{background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm)}.ke-app .tb-btn{display:flex;align-items:center;gap:7px;padding:8px;border-radius:8px;color:var(--text-2);transition:all var(--dur)}.ke-app .tb-btn:hover{background:var(--hover);color:var(--text)}.ke-app .tb-btn[disabled]{opacity:.32;cursor:default}.ke-app .tb-btn[disabled]:hover{background:none;color:var(--text-2)}.ke-app .tb-btn[data-active]{background:var(--accent-soft);color:var(--accent-hover)}.ke-app .tb-btn.wlabel{padding:8px 12px;font-size:13px;font-weight:500}@media (max-width: 1100px){.ke-app .tb-btn.wlabel span{display:none}.ke-app .tb-btn.wlabel{padding:8px}}.ke-app .btn-accent{display:inline-flex;align-items:center;gap:7px;background:var(--accent);color:#06281d;padding:9px 16px;border-radius:9px;font-size:13.5px;font-weight:600;transition:background var(--dur)}.ke-app .btn-accent:hover{background:var(--accent-hover);color:#fff}.ke-app .ghost-btn{display:flex;padding:6px;border-radius:7px;color:var(--text-3);transition:all var(--dur)}.ke-app .ghost-btn:hover{background:var(--hover);color:var(--text)}.ke-app .btn-soft{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;border-radius:8px;background:var(--bg-sunken);border:1px solid var(--border);color:var(--text-2);font-size:13px;font-weight:500;transition:all var(--dur)}.ke-app .btn-soft:hover{background:var(--hover);color:var(--text)}.ke-app .btn-soft.danger:hover{color:#ef4444;border-color:color-mix(in oklch,#ef4444 40%,transparent)}.ke-app .libcard{display:flex;flex-direction:column;gap:9px;padding:13px 11px;border:1px solid var(--border);border-radius:10px;background:var(--panel-2);cursor:grab;align-items:flex-start;transition:all .13s var(--ease);-webkit-user-select:none;user-select:none}.ke-app .libcard:hover{border-color:color-mix(in oklch,var(--accent) 55%,var(--border));background:var(--hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.ke-app .libcard:active{cursor:grabbing;transform:scale(.97)}.ke-app .libcard-ic{color:var(--text-2)}.ke-app .libcard:hover .libcard-ic{color:var(--accent)}.ke-app .blockview>.bv-ring{box-shadow:inset 0 0 0 1px transparent;transition:box-shadow .12s}.ke-app .blockview:hover>.bv-ring{box-shadow:inset 0 0 0 1.5px color-mix(in oklch,var(--accent) 55%,transparent)}.ke-app .blockview:has(.blockview:hover)>.bv-ring{box-shadow:inset 0 0 0 1px transparent}.ke-app .blockview[data-selected]>.bv-ring{box-shadow:inset 0 0 0 2px var(--accent)!important}.ke-app .bv-tools{opacity:0;transition:opacity .12s;pointer-events:none}.ke-app .blockview:hover>.bv-tools{opacity:1;pointer-events:auto}.ke-app .blockview:has(.blockview:hover)>.bv-tools{opacity:0;pointer-events:none}.ke-app .blockview[data-selected]>.bv-tools{opacity:1!important;pointer-events:auto!important}.ke-app .bv-tools{background:var(--accent);border-radius:7px;padding:2px;box-shadow:var(--shadow-md);color:#06281d}.ke-app .bv-btn{display:flex;align-items:center;padding:5px;border-radius:5px;color:#06281d;transition:background .12s}.ke-app .bv-btn:hover{background:#00000021}.ke-app .bv-label{font-size:11px;font-weight:600;padding:0 6px;color:#06281d;white-space:nowrap}.ke-app .new-card{display:flex;align-items:center;gap:12px;padding:15px;border:1px solid var(--border);border-radius:13px;background:var(--panel);transition:all .14s var(--ease)}.ke-app .new-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:var(--shadow-md)}.ke-app .new-ic{display:flex;width:38px;height:38px;flex-shrink:0;border-radius:9px;align-items:center;justify-content:center;background:var(--bg-sunken)}.ke-app .new-card>div{min-width:0}.ke-app .proj-card{border:1px solid var(--border);border-radius:13px;background:var(--panel);overflow:hidden;transition:all .15s var(--ease);text-align:left}.ke-app .proj-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--border-strong)}.ke-app .mode-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;padding:3px 7px;border-radius:6px;text-transform:uppercase;letter-spacing:.03em}.ke-app input:focus,.ke-app textarea:focus,.ke-app select:focus{outline:2px solid var(--accent-ring);outline-offset:0;border-color:var(--accent)!important}.ke-app input::placeholder,.ke-app textarea::placeholder{color:var(--text-3)}.ke-app .ke-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);color:var(--text);font-size:13.5px;line-height:1.45;transition:border-color var(--dur),background var(--dur)}.ke-app .ke-input.mono{font-size:12.5px}.ke-app .ke-input.sm{padding:6px 8px;font-size:12.5px}.ke-app textarea.ke-input{resize:vertical}.ke-app select.ke-input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:30px}.ke-app .ke-field{display:flex;flex-direction:column;gap:7px}.ke-app .ke-field-label{font-size:11.5px;font-weight:500;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}.ke-app .ke-seg{display:flex;gap:3px;background:var(--bg-sunken);padding:3px;border-radius:var(--radius);border:1px solid var(--border)}.ke-app .ke-seg-btn{flex:1;display:flex;align-items:center;justify-content:center;padding:6px 4px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:500;color:var(--text-3);transition:all var(--dur)}.ke-app .ke-seg-btn:hover{color:var(--text-2)}.ke-app .ke-seg-btn[data-active]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.ke-app .ke-slider{display:flex;align-items:center;gap:10px}.ke-app .ke-slider input[type=range]{flex:1;accent-color:var(--accent)}.ke-app .ke-slider-val{font-family:var(--font-mono);font-size:12px;color:var(--text-2);min-width:42px;text-align:right}.ke-app .ke-color-trigger{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);transition:border-color var(--dur)}.ke-app .ke-color-trigger:hover{border-color:var(--border-strong)}.ke-app .ke-color-chip{width:18px;height:18px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);flex-shrink:0}.ke-app .ke-color-pop{position:absolute;top:110%;left:0;z-index:91;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:10px;box-shadow:var(--shadow-lg);width:210px}.ke-app .ke-swatch-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.ke-app .ke-swatch{aspect-ratio:1;border-radius:var(--radius-sm);border:1px solid var(--border-strong);transition:transform var(--dur)}.ke-app .ke-swatch:hover{transform:scale(1.08)}.ke-app .ke-swatch[data-active]{border:2px solid var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.ke-app .ke-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f171f66;z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.ke-app .ke-drawer{position:fixed;top:0;right:0;bottom:0;background:var(--panel);border-left:1px solid var(--border);z-index:101;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.ke-app .ke-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);z-index:101;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);max-height:86vh;overflow:hidden}.ke-app .ke-modal-head,.ke-app .ke-drawer-head{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.ke-app .ke-modal-title{font-size:14.5px;font-weight:600}.ke-app .ke-modal-body{overflow-y:auto;flex:1;min-height:0}.ke-app .ke-empty{padding:16px;border:1px dashed var(--border-strong);border-radius:var(--radius-lg);text-align:center;color:var(--text-3);font-size:12.5px;line-height:1.5}.ke-app .ke-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:11px 18px;border-radius:var(--radius);font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);z-index:200;display:flex;align-items:center;gap:8px}.ke-app .ke-dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);padding:28px 18px;text-align:center;color:var(--text-3);transition:all var(--dur);cursor:pointer;background:var(--panel-2)}.ke-app .ke-dropzone:hover,.ke-app .ke-dropzone[data-drag]{border-color:var(--accent);color:var(--accent-hover);background:var(--accent-soft)}.ke-app .ke-media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ke-app .ke-media-tile{position:relative;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-sunken);aspect-ratio:1;cursor:pointer;transition:all var(--dur)}.ke-app .ke-media-tile:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.ke-app .ke-media-tile[data-active]{border:2px solid var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.ke-app .ke-media-tile img{width:100%;height:100%;object-fit:cover;display:block}.ke-app .ke-media-del{position:absolute;top:5px;right:5px;display:flex;padding:4px;border-radius:6px;background:#0f171f8c;color:#fff;opacity:0;transition:opacity var(--dur)}.ke-app .ke-media-tile:hover .ke-media-del{opacity:1}
