:root{--bg:#eef5fb;--panel:#ffffffdb;--ink:#1f2a44;--muted:#6b7690;--line:#1f2a441a;--accent:#1a74ee;--shadow:0 10px 30px #1f2a4424, 0 2px 6px #1f2a4414;color:var(--ink);font-family:Fredoka,ui-rounded,SF Pro Rounded,system-ui,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%;margin:0;overflow:hidden}#app,#app canvas{touch-action:none;display:block;position:fixed;inset:0}.brand{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);pointer-events:none;border-radius:999px;align-items:center;gap:10px;padding:8px 16px 8px 10px;font-size:20px;display:flex;position:fixed;top:16px;left:16px}.brand .logo{font-size:24px}.brand b{background:linear-gradient(90deg,#e6223a,#ff7417,#ffcc12,#22b84a,#1a74ee,#8b3cf7);color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:700}.brand .count{color:var(--muted);border-left:1px solid var(--line);padding-left:10px;font-size:13px}.toolbar{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);border-radius:18px;align-items:center;gap:4px;padding:6px;display:flex;position:fixed;top:16px;right:16px}.toolbar button{font:inherit;min-width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:18px;transition:background .15s,transform .1s;display:inline-flex}.toolbar button span{font-size:15px;font-weight:500}.toolbar button:hover{background:#1a74ee1a}.toolbar button:active{transform:scale(.92)}.toolbar button:disabled{opacity:.35;cursor:default;background:0 0}.toolbar button.crash{color:#fff;background:linear-gradient(135deg,#ff7417,#e6223a)}.toolbar button.crash.rebuild{background:linear-gradient(135deg,#22b84a,#1a74ee);animation:1.2s ease-in-out infinite pulse}.toolbar button.off{opacity:.4;filter:grayscale()}.toolbar .sep{background:var(--line);width:1px;height:24px;margin:0 4px}@keyframes pulse{50%{transform:scale(1.07)}}.menu-wrap{position:relative}.menu{box-shadow:var(--shadow);z-index:10;background:#fff;border-radius:16px;min-width:200px;padding:6px;position:absolute;top:48px;right:0}.menu.hidden{display:none}.menu button{justify-content:flex-start;width:100%;gap:10px!important;font-size:16px!important}.hint{color:#fff;white-space:nowrap;pointer-events:none;text-overflow:ellipsis;background:#1f2a44c7;border-radius:999px;max-width:calc(100vw - 32px);padding:8px 16px;font-size:14px;transition:opacity .25s;position:fixed;bottom:132px;left:50%;overflow:hidden;transform:translate(-50%)}.hint:empty{opacity:0}.tray{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow);touch-action:none;border-radius:26px;align-items:center;gap:14px;max-width:calc(100vw - 32px);padding:12px 18px;transition:box-shadow .2s,background .2s;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.tray.trash{box-shadow:0 0 0 3px #e6223a, var(--shadow);background:#ffe4e6f2}.tray.trash:after{content:"Drop here to put it away";color:#e6223a;white-space:nowrap;font-size:13px;font-weight:600;position:absolute;top:-30px;left:50%;transform:translate(-50%)}.divider{background:var(--line);align-self:stretch;width:1px}.colors{grid-template-columns:repeat(5,26px);gap:6px;display:grid}.swatch{width:26px;height:26px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border:3px solid #fff;border-radius:50%;padding:0;transition:transform .12s}.swatch:hover{transform:scale(1.12)}.swatch.on{box-shadow:0 0 0 2.5px var(--ink);transform:scale(1.12)}.shapes{gap:8px;display:flex}.shape{cursor:grab;touch-action:none;background:#1f2a440a;border:0;border-radius:18px;justify-content:center;align-items:center;width:74px;height:74px;transition:transform .12s,background .15s;display:flex;position:relative}.shape:hover{background:#1a74ee1a;transform:translateY(-3px)rotate(-4deg)}.shape.on{box-shadow:inset 0 0 0 2px var(--accent);background:#1a74ee29}.shape svg{pointer-events:none;filter:drop-shadow(0 3px 3px #00000026)}.shape .size{color:var(--muted);background:#ffffffe6;border-radius:6px;padding:0 4px;font-size:11px;font-weight:600;position:absolute;bottom:3px;right:7px}.shape .key{color:var(--muted);font-size:11px;position:absolute;top:4px;left:8px}.toast{box-shadow:var(--shadow);opacity:0;pointer-events:none;background:#fff;border-radius:14px;padding:10px 18px;font-size:15px;transition:opacity .2s,transform .2s;position:fixed;top:84px;left:50%;transform:translate(-50%,-12px)}.toast.show{opacity:1;transform:translate(-50%)}body.grab #app canvas{cursor:grab}body.pick #app canvas{cursor:pointer}body.grabbing #app canvas,body.grabbing{cursor:grabbing}.hud{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);opacity:0;pointer-events:none;border-radius:18px;align-items:center;gap:4px;padding:6px 6px 6px 14px;transition:opacity .15s,transform .15s;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%,-8px)}.hud.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.selbar .hud-label{min-width:0;color:var(--accent);margin-right:4px}.hud:not(.snapped) .snap-only{display:none}.hud-label{font-variant-numeric:tabular-nums;min-width:92px;font-weight:600}.hud button,.views button,.help button{font:inherit;min-width:38px;height:38px;color:var(--ink);cursor:pointer;background:#1f2a440d;border:0;border-radius:12px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:17px;display:inline-flex}.hud button span{font-size:14px}.hud button b{font-size:20px;line-height:1}.hud button[data-act=ccw] span,.hud button[data-act=cw] span{color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:0 4px;font-size:11px}.hud button:hover,.views button:hover{background:#1a74ee24}.hud button:active,.views button:active{transform:scale(.92)}.hud button.on{background:var(--accent);color:#fff}.hud button.on.manual{color:var(--ink);background:#1a74ee29}.views{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);border-radius:18px;flex-direction:column;gap:4px;padding:6px;display:flex;position:fixed;top:50%;right:16px;transform:translateY(-50%)}.views button{background:0 0}.vsep{background:var(--line);height:1px;margin:2px 4px}.help{opacity:0;pointer-events:none;z-index:20;background:#fff;border-radius:22px;width:min(720px,100vw - 32px);max-height:calc(100vh - 32px);padding:22px 26px;transition:opacity .18s,transform .18s;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-48%);box-shadow:0 30px 80px #1f2a444d}.help.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}.help h3{margin:0 0 10px;font-size:22px}.help h4{color:var(--muted);margin:6px 0;font-weight:600}.help .cols{grid-template-columns:1fr 1fr;gap:24px;display:grid}.help p{margin:0 0 8px;font-size:14px;line-height:1.5}.help kbd{background:#f0f3f8;border:1px solid #d9dfe9;border-bottom-width:2px;border-radius:6px;padding:1px 6px;font-family:inherit;font-size:12px}.help button{background:var(--accent);color:#fff;margin-top:8px;padding:0 18px}.toolbar button.ai-btn{color:#fff;background:linear-gradient(135deg,#8b3cf7,#1a74ee)}.ai-panel{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:380px;max-width:calc(100vw - 32px);box-shadow:var(--shadow);z-index:15;-webkit-user-select:text;user-select:text;background:#fffffff2;border-radius:22px;flex-direction:column;transition:transform .25s;display:flex;position:fixed;top:84px;bottom:16px;left:16px;overflow:hidden;transform:translate(calc(-100% - 24px))}.ai-panel.show{transform:none}.ai-panel.drop{box-shadow:0 0 0 3px #8b3cf7, var(--shadow)}.ai-panel header{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:12px 12px 10px 18px;font-size:17px;font-weight:600;display:flex}.ai-panel header span{flex:1}.ai-panel header button,.ai-status button{font:inherit;color:var(--ink);cursor:pointer;background:#1f2a440f;border:0;border-radius:10px;padding:5px 10px;font-size:13px}.ai-log{flex-direction:column;flex:1;gap:10px;padding:14px;display:flex;overflow-y:auto}.ai-msg{border-radius:16px;max-width:92%;padding:10px 13px;font-size:14.5px;line-height:1.45}.ai-msg.claude{background:#f1ecfe;border-bottom-left-radius:6px;align-self:flex-start}.ai-msg.user{background:var(--accent);color:#fff;border-bottom-right-radius:6px;align-self:flex-end}.ai-msg.note{background:#fff6e0;font-size:13.5px}.ai-msg.error{color:#8a1020;background:#ffe8ea;font-size:13.5px}.ai-msg code{background:#0000000f;border-radius:4px;padding:0 4px;font-size:12.5px}.ai-chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.ai-chips button{font:inherit;color:#5b21b6;cursor:pointer;background:#fff;border:1px solid #8b3cf74d;border-radius:999px;padding:5px 11px;font-size:13px}.ai-chips button:hover{background:#f5f0ff}.ai-plan{border:1px solid var(--line);background:#f6f8fc;border-radius:12px;padding:8px 12px;font-size:13px;line-height:1.5}.ai-plan summary{cursor:pointer;margin-bottom:4px;font-weight:600}.ai-activity{color:var(--muted);padding-left:4px;font-size:12.5px}.ai-look{border-radius:12px;width:70%;box-shadow:0 2px 8px #0000001f}.ai-thumbs{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.ai-thumbs img,.ai-pending img{object-fit:cover;border-radius:8px;width:48px;height:48px}.ai-pending{flex-wrap:wrap;gap:6px;padding:0 14px;display:flex}.ai-pending:not(:empty){padding-bottom:8px}.ai-pending img{cursor:pointer;outline:2px solid #8b3cf7}.ai-status{color:#5b21b6;align-items:center;gap:8px;padding:8px 16px;font-size:13.5px;display:none}.ai-status.show{display:flex}.ai-status .txt{flex:1}.spin{border:2.5px solid #d8c8fb;border-top-color:#8b3cf7;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ai-input{border-top:1px solid var(--line);align-items:flex-end;gap:6px;padding:10px;display:flex}.ai-input textarea{resize:none;font:inherit;border:1px solid var(--line);border-radius:14px;outline:none;flex:1;max-height:120px;padding:9px 12px;font-size:14.5px}.ai-input textarea:focus{border-color:#8b3cf7}.ai-attach,.ai-send{cursor:pointer;background:#1f2a440f;border:0;border-radius:12px;place-items:center;width:40px;height:40px;font-size:18px;display:grid}.ai-send{color:#fff;background:linear-gradient(135deg,#8b3cf7,#1a74ee)}.ai-send:disabled{opacity:.4}@media (width<=1180px) and (width>=761px){#ideas span,#crash span{display:none}}@media (width<=1040px) and (width>=761px){.brand .count,.brand .credit{display:none}}@media (width<=880px) and (width>=761px){.toolbar{gap:2px}.toolbar button{min-width:36px;padding:0 6px}.toolbar button span{display:none}.toolbar .menu button span{display:inline}}@media (width<=760px){.ai-panel{width:auto;height:58vh;inset:56px 8px auto}.hud{max-width:calc(100vw - 24px);top:60px}.hud button span{display:none}.hud-label{min-width:0;font-size:13px}.views{padding:4px;top:42%;right:10px}.views button{min-width:34px;height:34px;font-size:15px}.help .cols{grid-template-columns:1fr;gap:4px}.brand{padding:6px 12px 6px 8px;font-size:16px;top:12px;left:12px}.brand .count{display:none}.toolbar{gap:0;padding:4px;top:auto;bottom:120px;right:50%;transform:translate(50%)}.toolbar button{min-width:36px;height:36px;padding:0 6px;font-size:16px}.toolbar button span{display:none}.toolbar .menu button span{display:inline}.menu{inset:auto auto 46px 0}.hint{white-space:normal;text-align:center;border-radius:14px;width:max-content;font-size:12px;top:112px;bottom:auto}.tray{gap:10px;padding:10px 12px;bottom:12px;overflow-x:auto}.colors{grid-template-columns:repeat(3,24px);gap:4px}.swatch{width:24px;height:24px}.shape{flex:none;width:58px;height:58px}.shape .key{display:none}}.ai-setup-card ol{margin:6px 0 4px;padding-left:20px}.ai-setup-card li{margin:4px 0}.ai-setup-card button,.ai-keyrow button{font:inherit;background:var(--accent,#4f6bff);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:4px 10px;font-size:13px}.ai-setup-card hr{border:0;border-top:1px solid #1f2a441f;margin:10px 0}.ai-hint{opacity:.75;font-size:12px}.ai-keyrow{gap:6px;margin:6px 0;display:flex}.ai-keyrow input{min-width:0;font:inherit;border:1px solid #1f2a4433;border-radius:8px;flex:1;padding:5px 8px;font-size:13px}.brand .credit{color:var(--muted);border-left:1px solid var(--line);pointer-events:auto;padding-left:10px;font-size:13px;text-decoration:none}.brand .credit:hover{color:var(--accent)}.lib-panel{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:360px;max-width:calc(100vw - 32px);box-shadow:var(--shadow);z-index:15;-webkit-user-select:text;user-select:text;background:#fffffff5;border-radius:22px;flex-direction:column;transition:transform .25s;display:flex;position:fixed;top:84px;bottom:100px;right:16px;overflow:hidden;transform:translate(calc(100% + 24px))}.lib-panel.show{transform:none}.lib-panel header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 12px 10px 18px;font-size:17px;font-weight:600;display:flex}.lib-panel header button{font:inherit;cursor:pointer;background:#1f2a440f;border:0;border-radius:10px;padding:5px 10px;font-size:13px}.lib-body{flex:1;padding:12px 16px 16px;font-size:14px;overflow-y:auto}.lib-body p{margin:6px 0}.lib-body button,.lib-signin button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:9px;padding:6px 11px;font-size:13px}.lib-body button:disabled{opacity:.5}.lib-signin{gap:6px;margin:8px 0;display:flex}.lib-signin input{min-width:0;font:inherit;border:1px solid #1f2a4433;border-radius:9px;flex:1;padding:6px 9px}.lib-hint{color:var(--muted);font-size:12px}.lib-ok{word-break:break-all;background:#eef7ee;border-radius:10px;padding:8px 10px}.lib-who a{color:var(--accent)}.lib-actions{margin:8px 0}.lib-follow{align-items:center;gap:6px;margin:6px 0 10px;font-size:13px;display:flex}.lib-list{margin:0 0 8px;padding:0;list-style:none}.lib-list li{align-items:stretch;gap:4px;margin-bottom:4px;display:flex}.lib-list .lib-open{text-align:left;color:var(--ink);background:#1f2a440d;flex-direction:column;flex:1;display:flex}.lib-list li.open .lib-open{box-shadow:inset 0 0 0 2px var(--accent);background:#1a74ee1f}.lib-list small{color:var(--muted);font-size:11px}.lib-list .lib-rename,.lib-list .lib-del,.lib-keylist button{color:var(--ink);background:#1f2a440d}.lib-connect,.lib-api{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.lib-connect summary,.lib-api summary{cursor:pointer;font-weight:600}.lib-connect ol{margin:8px 0;padding-left:18px}.lib-connect li{margin:6px 0}.lib-body code{word-break:break-all;background:#1f2a440f;border-radius:4px;padding:1px 4px;font-size:12px}.lib-body pre{white-space:pre-wrap;word-break:break-all;background:#1f2a440f;border-radius:8px;padding:8px;font-size:11px}.lib-keylist{padding:0;list-style:none}.lib-keylist li{align-items:center;gap:6px;margin:4px 0;display:flex}
