*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font:"Inter", system-ui, -apple-system, sans-serif;--bg:oklch(98.18% .0054 95.0986);--sidebar-bg:oklch(96.63% .008 98.8792);--field-bg:oklch(100% 0 0);--border:oklch(88.47% .0069 97.3627);--border-hover:oklch(76.21% .0156 98.3528);--text:oklch(34.38% .0269 95.7226);--text-muted:oklch(60.59% .0075 97.4233);--text-light:oklch(75% .01 97);--accent:oklch(61.71% .1375 39.0427);--accent-hover:oklch(53% .1375 39.0427);--accent-light:oklch(92.45% .0138 92.9892);--danger:oklch(63.68% .2078 25.3313);--success:#4a7a50;--field-hover:oklch(93.41% .0153 90.239);--radius:.5rem;--radius-lg:.75rem;--shadow:0 1px 2px #0000000d;--shadow-md:0 2px 16px #0000001a;--sidebar-w:280px}html,body,#root{height:100%;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:11px}.layout{height:100vh;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--border);flex-direction:column;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);flex-shrink:0;padding:13px 13px 10px}.sidebar-header h1{color:var(--text);letter-spacing:-.01em;font-size:12px;font-weight:600}.sidebar-header p{color:var(--text-muted);margin-top:2px;font-size:9px}.sidebar-body{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;padding:10px 4px 6px;overflow-y:auto}.sidebar-footer{border-top:1px solid var(--border);flex-shrink:0;padding:9px 11px}.preview-panel{background:var(--bg);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:32px;display:flex;overflow:hidden}.preview-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:9px;font-weight:600}.preview-player-wrapper{height:calc(100vh - 180px);max-height:560px;box-shadow:var(--shadow-md);border-radius:var(--radius);background:var(--border);flex-shrink:0;overflow:hidden}.form-section{padding:0 11px 4px}.form-section+.form-section{border-top:1px solid var(--border);margin-top:9px;padding-top:9px}.section-title{text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);cursor:pointer;text-align:left;width:100%;font-size:9px;font-weight:600;font-family:var(--font);background:0 0;border:none;align-items:center;gap:5px;margin-bottom:6px;padding:0;display:flex}.section-title:hover{color:var(--text)}.section-chevron{color:var(--text-light);flex-shrink:0;font-size:11px;line-height:1;transition:transform .18s;transform:rotate(-90deg)}.section-chevron.open{transform:rotate(0)}.section-body{max-height:0;transition:max-height .22s;overflow:hidden}.section-body--open{max-height:1500px}.section-body-inner{padding-bottom:2px}.field{background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:6px;min-height:27px;margin-bottom:4px;padding:0 12px 0 8px;transition:background .12s;display:flex;overflow:hidden}.field:hover{background:var(--field-hover)}.field>label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;width:38%;margin:0;font-size:10px;font-weight:400;overflow:hidden}.field>input[type=text],.field>input[type=number],.field>select{text-align:right;color:var(--text-muted);background:0 0;border:none;flex:1;padding:6px 0;font-size:10px}.field>input[type=text]:focus,.field>input[type=number]:focus,.field>select:focus{color:var(--text);outline:none}.field>.range-row,.field>.color-row,.field>.radio-group,.field>.city-slider-row{flex:1}.field>.upload-area{flex:1;margin:4px 0}.field-row{grid-template-columns:1fr 1fr;gap:4px;display:grid}.field-row .field>label{flex-shrink:0;width:auto;font-size:10px}input[type=text],input[type=number],select,input[type=email],input[type=password]{border:1px solid var(--border);border-radius:var(--radius);width:100%;font-family:var(--font);color:var(--text);background:var(--field-bg);appearance:none;outline:none;padding:5px 8px;font-size:10px;transition:border-color .15s,box-shadow .15s}input[type=text]:focus,input[type=number]:focus,select:focus,input[type=email]:focus,input[type=password]:focus{border-color:var(--accent);box-shadow:0 0 0 3px oklch(61.71% .1375 39.0427/.18)}select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c7e6e' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding-right:28px}.field>select{background-position:right 0 center;padding-right:18px}.range-row{align-items:center;gap:6px;padding:2px 0;display:flex}.range-row input[type=range],.city-slider-row input[type=range]{box-shadow:none;cursor:pointer;appearance:none;background:0 0;border:none;outline:none;flex:1;height:20px;padding:0}.range-row input[type=range]:focus,.city-slider-row input[type=range]:focus{outline:none}.range-row input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--range-fill,0%), var(--border) var(--range-fill,0%));border-radius:2px;height:3px}.city-slider-row input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--range-fill,0%), var(--border) var(--range-fill,0%));border-radius:2px;height:3px}.range-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:13px;height:13px;margin-top:-5px;box-shadow:0 1px 3px #00000047}.city-slider-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:13px;height:13px;margin-top:-5px;box-shadow:0 1px 3px #00000047}.range-row input[type=range]::-moz-range-track{background:var(--border);border-radius:2px;height:3px}.city-slider-row input[type=range]::-moz-range-track{background:var(--border);border-radius:2px;height:3px}.range-row input[type=range]::-moz-range-progress{background:var(--accent);border-radius:2px;height:3px}.city-slider-row input[type=range]::-moz-range-progress{background:var(--accent);border-radius:2px;height:3px}.range-row input[type=range]::-moz-range-thumb{background:var(--accent);cursor:pointer;border:none;border-radius:50%;width:13px;height:13px;box-shadow:0 1px 3px #00000047}.city-slider-row input[type=range]::-moz-range-thumb{background:var(--accent);cursor:pointer;border:none;border-radius:50%;width:13px;height:13px;box-shadow:0 1px 3px #00000047}.color-row{flex:1;align-items:center;gap:8px;padding:2px 0;display:flex}.cp-swatch{cursor:pointer;border:1px solid #0000002e;border-radius:3px;flex-shrink:0;width:16px;height:16px;transition:transform .12s}.cp-swatch:hover{transform:scale(1.12)}.color-hex{font-family:var(--font);text-transform:uppercase;text-align:right;color:var(--text-muted);pointer-events:none;-webkit-user-select:none;user-select:none;flex:1;font-size:10px}.cp-panel{z-index:1001;background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-user-select:none;user-select:none;width:224px;padding:10px;position:fixed;box-shadow:0 6px 24px #00000029}.cp-sq{cursor:crosshair;touch-action:none;border-radius:5px;width:100%;height:156px;margin-bottom:10px;position:relative;overflow:hidden}.cp-sq-cur{pointer-events:none;border:2px solid #fff;border-radius:50%;width:13px;height:13px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0000008c}.cp-hue{cursor:pointer;touch-action:none;background:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:6px;width:100%;height:11px;margin-bottom:8px;position:relative}.cp-alpha{cursor:pointer;touch-action:none;background-image:linear-gradient(45deg,#ccc 25%,#0000 25%),linear-gradient(-45deg,#ccc 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#ccc 75%),linear-gradient(-45deg,#0000 75%,#ccc 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-size:8px 8px;border-radius:6px;width:100%;height:11px;margin-bottom:10px;position:relative}.cp-alpha-fill{border-radius:inherit;position:absolute;inset:0}.cp-bar-cur{pointer-events:none;border:2px solid #fff;border-radius:50%;width:15px;height:15px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 1px 5px #00000073}.cp-inputs{align-items:center;gap:6px;display:flex}.cp-hex-row{background:var(--sidebar-bg);border:1px solid var(--border);border-radius:var(--radius);flex:1;align-items:center;gap:2px;padding:4px 7px;display:flex}.cp-hash{color:var(--text-muted);flex-shrink:0;font-family:SF Mono,Fira Code,monospace;font-size:9px}.cp-hex-in{min-width:0;color:var(--text);text-transform:uppercase;letter-spacing:.05em;background:0 0;border:none;outline:none;flex:1;padding:0;font-family:SF Mono,Fira Code,monospace;font-size:9px}.cp-alpha-display{background:var(--sidebar-bg);border:1px solid var(--border);border-radius:var(--radius);flex-shrink:0;align-items:center;gap:2px;width:52px;padding:4px 6px;display:flex}.cp-alpha-in{width:0;font-family:var(--font);color:var(--text);-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:9px}.cp-alpha-in::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cp-alpha-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cp-pct{color:var(--text-muted);flex-shrink:0;font-size:9px}.radio-group{border:1px solid var(--border);background:var(--sidebar-bg);border-radius:6px;display:flex;overflow:hidden}.radio-group input[type=radio]{display:none}.radio-group label{text-align:center;color:var(--text-muted);cursor:pointer;flex:1;margin:0;padding:4px 0;font-size:10px;font-weight:500;transition:background .15s,color .15s}.radio-group input[type=radio]:checked+label{background:var(--accent);color:#fff}.radio-group label:hover{background:var(--border);color:var(--text)}.field>.radio-group{background:0 0;border:none;border-radius:0}.field>.radio-group label{border-right:1px solid var(--border);padding:0 8px;font-weight:400}.field>.radio-group label:last-child{border-right:none;padding-right:0}.field>.travel-mode-group label{justify-content:center;align-items:center;padding:3px 7px;display:flex}.field>.travel-mode-group label:last-child{padding-right:7px}.field>.travel-mode-group .material-symbols-outlined{font-size:20px;line-height:1}.field>.travel-mode-group label[for=travel-cycling] .material-symbols-outlined,.field>.travel-mode-group label[for=travel-walking] .material-symbols-outlined{font-size:15px}.field>.radio-group input[type=radio]:checked+label{color:var(--accent);background:0 0;font-weight:600}.field>.radio-group label:hover{color:var(--text);background:0 0}.city-tier-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin:6px 0 3px;font-size:9px;font-weight:600}.city-tier-label:first-of-type{margin-top:2px}.city-tier-label span{text-transform:none;letter-spacing:0;opacity:.75;font-size:8px;font-weight:400}.city-slider-row{flex:1;align-items:center;gap:6px;padding:2px 0;display:flex}.field>.ls-picker{flex:1}.ls-picker{width:100%;position:relative}.ls-trigger{cursor:pointer;width:100%;font-family:var(--font);color:var(--text-muted);text-align:left;background:0 0;border:none;align-items:center;gap:7px;padding:4px 0;font-size:10px;display:flex}.ls-label{flex:1}.ls-font-preview{flex:1;font-size:11px;line-height:1}.ls-arrow{color:var(--text-light);font-size:8px;line-height:1}.ls-panel{background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);z-index:1000;position:fixed;overflow:hidden;box-shadow:0 4px 20px #00000021}.ls-option{border:none;border-bottom:1px solid var(--border);cursor:pointer;width:100%;font-family:var(--font);color:var(--text-muted);text-align:left;background:0 0;align-items:center;gap:10px;padding:7px 12px;font-size:10px;transition:background .1s;display:flex}.ls-option:last-child{border-bottom:none}.ls-option:hover{background:var(--field-hover)}.ls-option.selected{background:var(--accent-light);color:var(--accent)}.upload-area{border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--text-muted);cursor:pointer;padding:7px 10px;font-size:9px;transition:border-color .15s,background .15s;position:relative}.upload-area:hover{border-color:var(--accent);background:var(--accent-light);color:var(--accent)}.upload-area input[type=file]{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.upload-status{margin-top:3px;padding:0 2px;font-size:9px}.upload-status.ok{color:var(--success)}.upload-status.error{color:var(--danger)}.btn{border-radius:var(--radius);font-family:var(--font);cursor:pointer;white-space:nowrap;border:none;outline:none;justify-content:center;align-items:center;gap:5px;padding:6px 12px;font-size:10px;font-weight:500;transition:background .15s,opacity .15s,transform 80ms;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:#fff;width:100%}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-ghost{background:var(--field-bg);color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{background:var(--border);color:var(--text)}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.render-error{color:var(--danger);margin-top:5px;font-size:9px;line-height:1.4}.render-info{color:var(--text-muted);margin-top:5px;font-size:9px}.login-page{background:var(--sidebar-bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:360px;box-shadow:var(--shadow-md);padding:36px 32px}.login-card h1{color:var(--text);margin-bottom:4px;font-size:20px;font-weight:600}.login-card .subtitle{color:var(--text-muted);margin-bottom:28px;font-size:13px}.login-field{margin-bottom:14px}.login-field label{color:var(--text);margin-bottom:5px;font-size:13px;font-weight:500;display:block}.login-error{color:var(--danger);border-radius:var(--radius);background:oklch(63.68% .2078 25.3313/.08);border:1px solid oklch(63.68% .2078 25.3313/.25);margin-bottom:14px;padding:8px 12px;font-size:13px}.logout-btn{color:var(--text-muted);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.logout-btn:hover{color:var(--text)}.header-row{justify-content:space-between;align-items:baseline;display:flex}.update-banner{border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;padding:5px 8px;font-size:10px;line-height:1.3;display:flex}.update-banner--available,.update-banner--updating{color:oklch(40% .12 70);background:oklch(95% .06 85)}.update-banner--restart-needed{color:oklch(38% .12 145);background:oklch(94% .06 145)}.update-banner--restarting{background:var(--border);color:var(--text-muted)}.update-banner button{border-radius:var(--radius);cursor:pointer;background:var(--accent);color:#fff;font-size:10px;font-weight:600;font-family:var(--font);border:none;padding:2px 8px;transition:background .15s}.update-banner button:hover{background:var(--accent-hover)}.update-banner button:disabled{opacity:.5;cursor:not-allowed}.spinner--dark{border-color:currentColor #00000026 #00000026}.update-err{color:var(--danger);width:100%;font-size:9px}.mobile-tab-bar,.mobile-render-area{display:none}@media (width<=640px){.layout{flex-direction:column}.sidebar{width:100%;min-width:unset;border-right:none;border-bottom:1px solid var(--border);flex:1;order:1;overflow:hidden}.preview-panel{flex:1;order:2;padding:16px}.preview-player-wrapper{width:100%;max-width:100%;height:auto;max-height:calc(100svh - 140px)}.mobile-tab-bar{border-top:1px solid var(--border);background:var(--sidebar-bg);flex-shrink:0;order:3;display:flex}.mobile-tab{font:600 12px/1 var(--font);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex:1;padding:13px 8px;transition:color .15s,background .15s}.mobile-tab.active{color:var(--accent);background:var(--accent-light)}.mobile-tab:hover:not(.active){color:var(--text)}.layout:not(.layout--preview) .preview-panel,.layout.layout--preview .sidebar{display:none}.mobile-render-area{flex-direction:column;align-items:stretch;gap:6px;width:100%;padding:0 4px;display:flex}.login-page{min-height:100svh;padding:0 16px}.login-card{padding:28px 20px}.login-field input{padding:8px 10px;font-size:16px}}
