*,:before,:after{box-sizing:border-box}:root{--navbar-height:48px;--sidebar-width:272px;--bg:#e8e8e8;--sidebar-bg:#f7f7f7;--surface:#fff;--border:#d4d4d4;--border-strong:#b8b8b8;--text:#222;--text-muted:#666;--accent:#444;--accent-hover:#111;--focus-ring:#0000002e;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}html,body{overscroll-behavior:none;touch-action:manipulation;width:100%;height:100%;margin:0;padding:0;overflow:hidden}#app{width:100%;height:100%}button,input[type=range],select{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}.app-shell{flex-direction:column;width:100vw;height:100dvh;display:flex;overflow:hidden}.sketch-layout{flex:1;min-height:0;display:flex;overflow:hidden}.sketch-area{background:#1a1a1a;flex:1;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:relative}.navbar{min-height:var(--navbar-height);background:var(--sidebar-bg);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:.75rem;padding:0 1rem;display:flex}.navbar-left,.navbar-right{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.navbar-left{gap:.75rem;min-width:0}.nav-sketch-title{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em;min-width:0;color:var(--text);font-size:.9375rem;font-weight:600;overflow:hidden}.navbar-center{flex:1;justify-content:center;min-width:0;display:flex}.navbar-center-tools{align-items:center;gap:.5rem;max-width:100%;display:flex}.navbar-right{justify-content:flex-end}.nav-brand{letter-spacing:-.01em;color:var(--text);font-size:.9375rem;font-weight:600;text-decoration:none}.nav-brand:hover,.nav-brand:focus-visible{color:var(--accent-hover);outline:none}.nav-brand.active{color:var(--text);background:var(--surface);border-color:var(--border);border:1px solid var(--border);border-radius:4px;padding:.35rem .65rem;font-weight:500}.material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;font-family:Material Symbols Outlined,sans-serif;font-size:22px;font-style:normal;font-weight:400;line-height:1;display:block}.nav-icon-btn{border:1px solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--text);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s;display:flex}.nav-icon-btn:hover,.nav-icon-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px;background:#f0f0f0}.nav-icon-btn.recording{color:#dc2626;background:#fef2f2;border-color:#dc2626}.nav-icon-btn.recording:hover,.nav-icon-btn.recording:focus-visible{background:#fee2e2}.nav-backdrop{inset:0;top:var(--navbar-height);z-index:80;cursor:pointer;background:#00000040;border:none;position:fixed}.nav-drawer{top:var(--navbar-height);z-index:85;width:min(280px,85vw);max-height:calc(100dvh - var(--navbar-height));background:var(--sidebar-bg);border-right:1px solid var(--border);padding:.5rem;position:fixed;left:0;overflow-y:auto;box-shadow:4px 0 24px #0000001f}.nav-drawer-link{color:var(--text);border:1px solid #0000;border-radius:4px;padding:.65rem .75rem;font-size:.9375rem;text-decoration:none;transition:background .15s,border-color .15s;display:block}.nav-drawer-link:hover{background:#ececec}.nav-drawer-link.active{background:var(--surface);border-color:var(--border);font-weight:500}.nav-drawer-section{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:.75rem .75rem .35rem;font-size:.6875rem;font-weight:600}.zoom-control{position:relative}.zoom-trigger{border:1px solid var(--border);background:var(--surface);min-height:36px;color:var(--text);font-variant-numeric:tabular-nums;border-radius:4px;align-items:center;gap:.25rem;padding:.35rem .65rem;font-size:.8125rem;transition:background .15s;display:inline-flex}.zoom-trigger:hover,.zoom-trigger:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px;background:#f0f0f0}.zoom-trigger-label{white-space:nowrap}.zoom-trigger-icon{color:var(--text-muted);font-size:18px}.zoom-menu{z-index:120;border:1px solid var(--border);background:var(--surface);border-radius:6px;min-width:10rem;margin:0;padding:.35rem;list-style:none;position:absolute;top:calc(100% + .35rem);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.zoom-menu button{text-align:left;width:100%;color:var(--text);border-radius:4px;padding:.5rem .65rem;font-size:.875rem;transition:background .15s;display:block}.zoom-menu button:hover,.zoom-menu button:focus-visible{background:#f0f0f0;outline:none}.zoom-menu button.active{background:#ececec;font-weight:500}@media (width<=768px){.navbar{gap:.5rem;padding:0 .75rem}.nav-sketch-title{display:none}.zoom-trigger-label{text-overflow:ellipsis;max-width:7rem;overflow:hidden}}input[type=range]{width:100%;height:24px;accent-color:var(--accent);cursor:pointer}select,input[type=number],input[type=text],input[type=password]{border:1px solid var(--border);background:var(--surface);width:100%;min-height:36px;color:var(--text);font:inherit;border-radius:4px;padding:.4rem .55rem}select:focus-visible,input[type=number]:focus-visible,input[type=text]:focus-visible,input[type=password]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}input[type=text]:disabled,input[type=password]:disabled{opacity:.6;cursor:not-allowed}.control-label{letter-spacing:.01em;color:var(--text-muted);margin-bottom:.4rem;font-size:.75rem;font-weight:500;display:block}.control{margin-bottom:1rem}.control-value{float:right;font-variant-numeric:tabular-nums;color:var(--text);font-weight:400}.control-section{border-bottom:1px solid var(--border);margin-bottom:1.25rem;padding-bottom:1.25rem}.control-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.control-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .75rem;font-size:.6875rem;font-weight:600}.control-row{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.toggle-row{color:var(--text);cursor:pointer;align-items:center;gap:.5rem;margin:0;font-size:.875rem;display:flex}.toggle-row input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.btn{border:1px solid var(--border-strong);background:var(--surface);min-height:36px;color:var(--text);border-radius:4px;justify-content:center;align-items:center;padding:.45rem .75rem;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover,.btn:focus-visible{background:#f0f0f0;outline:none}.btn-block{width:100%}.size-note{color:var(--text-muted);margin:0;font-size:.8125rem}.sidebar-backdrop{z-index:90;cursor:pointer;background:#00000040;border:none;display:none;position:fixed;inset:0}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);border-left:1px solid var(--border);z-index:100;flex-direction:column;flex-shrink:0;max-width:100%;height:100%;transition:width .2s,border-color .2s;display:flex;overflow:hidden}.sidebar:not(.open){border-left-color:#0000;width:0;min-width:0}.sidebar-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:.875rem 1rem;display:flex}.sidebar-header h1{letter-spacing:-.01em;margin:0;font-size:.9375rem;font-weight:600}.sidebar-close{width:36px;height:36px;color:var(--text-muted);border-radius:4px;justify-content:center;align-items:center;font-size:1rem;display:none}.sidebar-close:hover,.sidebar-close:focus-visible{background:#ececec;outline:none}.sidebar-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:1rem;overflow-y:auto}.tool-hint{color:var(--text-muted);margin:0;font-size:.8125rem;line-height:1.45}.tool-color-row{justify-content:space-between;align-items:center;gap:.625rem;display:flex}.tool-color-row input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;width:54px;height:36px;padding:0}.tool-button-row{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.tool-button-row .btn{width:100%}.tool-upload-label{border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:36px;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;align-items:center;padding:.45rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex;overflow:hidden}.tool-upload-label.has-file{color:var(--accent-hover)}.visually-hidden-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn-sm{min-height:32px;padding:.35rem .55rem;font-size:.8125rem}.tool-controls{flex-direction:column;display:flex}.tool-controls .control-section{margin-bottom:1.5rem;padding-bottom:1.5rem}.tool-controls .control-section:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.tool-controls .intro{margin-bottom:1.25rem}.tool-controls .section-gap{margin-top:.75rem}.tool-controls .section-gap-sm{margin-top:.5rem}.tool-controls .toggle-stack{flex-direction:column;gap:.625rem;display:flex}.tool-controls .toggle-stack :global(.toggle-row){margin:0}.tool-controls :global(.control){margin-bottom:.875rem}.tool-controls :global(.control:last-child){margin-bottom:0}.tool-controls .status-note{color:var(--text-muted);border:1px solid var(--border);background:#00000008;border-radius:6px;margin:0 0 .75rem;padding:.625rem .75rem;font-size:.8125rem;line-height:1.45}.tool-button-row.cols-3{grid-template-columns:1fr 1fr 1fr}@media (width<=768px){.sidebar-backdrop{display:block}.sidebar{top:var(--navbar-height);width:var(--sidebar-width);height:calc(100dvh - var(--navbar-height));transition:transform .2s,width .2s;position:fixed;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}.sidebar:not(.open){width:var(--sidebar-width);border-left-color:var(--border)}.sidebar.open{transform:translate(0)}.sidebar-close{display:flex}}.login-shell.svelte-3z0wmw{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.login-card.svelte-3z0wmw{border:1px solid var(--border);background:var(--surface);border-radius:6px;flex-direction:column;width:100%;max-width:360px;padding:1.25rem;display:flex;box-shadow:0 2px 8px #0000000f}.login-header.svelte-3z0wmw{border-bottom:1px solid var(--border);margin-bottom:1rem;padding-bottom:.875rem}.login-title.svelte-3z0wmw{letter-spacing:-.01em;color:var(--text);margin:0;font-size:.9375rem;font-weight:600}.login-mode.svelte-3z0wmw{gap:.25rem;margin-top:.75rem;display:flex}.login-mode-btn.svelte-3z0wmw{border:1px solid var(--border);min-height:32px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border-radius:4px;flex:1;padding:.3rem .5rem;font-size:.8125rem;font-weight:500}.login-mode-btn.svelte-3z0wmw:hover:not(:disabled){color:var(--text);background:#f0f0f0}.login-mode-btn.active.svelte-3z0wmw{background:var(--surface);border-color:var(--border-strong);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong)}.login-mode-btn.svelte-3z0wmw:disabled{opacity:.6;cursor:not-allowed}.login-body.svelte-3z0wmw{margin-bottom:1rem}.login-intro.svelte-3z0wmw{margin-bottom:1rem;line-height:1.5}.login-body.svelte-3z0wmw .control:where(.svelte-3z0wmw):last-of-type{margin-bottom:0}.login-status.svelte-3z0wmw{color:var(--text-muted);margin:.75rem 0 0;font-size:.8125rem;line-height:1.5}.login-status--ok.svelte-3z0wmw{color:#16a34a}.login-status--error.svelte-3z0wmw{color:#dc2626}.btn.svelte-3z0wmw:disabled{opacity:.6;cursor:not-allowed}.access-denied.svelte-12qhfyh{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.access-denied-panel.svelte-12qhfyh{border:1px solid var(--border);background:var(--surface);border-radius:6px;width:100%;max-width:420px;padding:1.25rem}.access-denied-title.svelte-12qhfyh{letter-spacing:-.01em;color:var(--text);margin:0 0 .5rem;font-size:.9375rem;font-weight:600}.access-denied-list.svelte-12qhfyh{flex-direction:column;gap:.35rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.access-denied-list.svelte-12qhfyh a:where(.svelte-12qhfyh){border:1px solid var(--border);color:var(--text);border-radius:4px;padding:.55rem .65rem;font-size:.875rem;text-decoration:none;display:block}.access-denied-list.svelte-12qhfyh a:where(.svelte-12qhfyh):hover{border-color:var(--border-strong);background:#f0f0f0}
