/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-400:oklch(85.2% .199 91.936);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-800:oklch(27.9% .041 260.031);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--tracking-wide:.025em;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.max-h-\[480px\]{max-height:480px}.min-h-screen{min-height:100vh}.w-full{width:100%}.shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-800>:not(:last-child)){border-color:var(--color-slate-800)}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-800{border-color:var(--color-slate-800)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.text-blue-300{color:var(--color-blue-300)}.text-blue-500{color:var(--color-blue-500)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-yellow-400{color:var(--color-yellow-400)}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@font-face{font-family:IvyOra Display;src:url(/assets/ivyora-display-regular-DeqaXXcD.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Charis SIL;src:url(/assets/CharisSIL-Regular-ByN_XQB2.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--era-primary:#121212;--era-primary-inverse:#fff;--era-canvas:#fff;--era-app-bg:#fafafa;--era-light-gray:#9a9a9a;--era-green:#a0bd0b;--era-green-bg:#a0bd0b1a;--era-blue:#125ded;--era-blue-bg:#125ded1a;--era-yellow:#ffc300;--era-yellow-bg:#ffc3001a;--era-red:#ff4040;--era-red-bg:#ff40401a;--era-orange:#f59e0b;--era-orange-bg:#f59e0b1a;--era-purple:#8b5cf6;--era-purple-bg:#8b5cf61a;--era-brand-red:#ff4d01;--era-brand-yellow:#f5f500;--era-brand-purple:#e084f4;--era-brand-teal:#5af2af;--era-brand-green:#bfff10;--era-brand-blue:#2fb3ff;--era-brand-pink:#f945a6;--era-font-page-display:48px;--era-font-page-title:48px;--era-font-large-title:40px;--era-font-title1:32px;--era-font-title2:24px;--era-font-title3:20px;--era-font-headline:16px;--era-font-body:16px;--era-font-subhead:14px;--era-font-footnote:12px;--era-font-caption:12px;--era-space-xs:4px;--era-space-sm:8px;--era-space-md:12px;--era-space-lg:16px;--era-space-xl:24px;--era-space-2xl:32px;--era-space-3xl:48px;--era-radius-standard:15px;--era-radius-small:10px;--era-radius-pill:100px;--era-spacing-header:18px}.dark{--era-primary:#fff;--era-primary-inverse:#121212;--era-canvas:#222;--era-app-bg:#0d0d0d;--era-light-gray:#c2c2c2;--era-green:#c9f000;--era-green-bg:#c9f0001a;--era-blue:#00b2ff;--era-blue-bg:#00b2ff1a;--era-yellow:#ffd000;--era-yellow-bg:#ffd0001a;--era-red:#ff3700;--era-red-bg:#ff37001a;--era-orange:#fbbf24;--era-orange-bg:#fbbf241a;--era-purple:#a78bfa;--era-purple-bg:#a78bfa1a;--era-brand-red:#ff4d01;--era-brand-yellow:#f5f500;--era-brand-purple:#e084f4;--era-brand-teal:#5af2af;--era-brand-green:#bfff10;--era-brand-blue:#2fb3ff;--era-brand-pink:#f945a6}.size-3{width:12px;height:12px}.size-4{width:16px;height:16px}.size-5{width:20px;height:20px}.size-6{width:24px;height:24px}body{background-color:var(--era-app-bg);color:var(--era-primary);font-family:var(--font-figtree),system-ui,-apple-system,sans-serif}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}.era-page-title{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:48px;font-weight:700;line-height:56px}.era-display-page,.era-page-display{letter-spacing:.04em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:48px;font-weight:500;line-height:56px}.era-display-title{letter-spacing:.06em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:28px;font-weight:700;line-height:36px}.era-display-headline{letter-spacing:.04em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:20px;font-weight:700;line-height:33px}.era-display-lead{letter-spacing:.04em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:20px;font-weight:500;line-height:33px}.era-display-body,.era-display-caption{letter-spacing:.04em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:16px;font-weight:500;line-height:22px}.era-large-title{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:40px;font-weight:700;line-height:48px}.era-title1{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:32px;font-weight:600;line-height:40px}.era-title2{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:24px;font-weight:600;line-height:32px}.era-title3{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:20px;font-weight:600;line-height:28px}.era-headline{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:16px;font-weight:600;line-height:24px}.era-body{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:16px;font-weight:400;line-height:24px}.era-subhead{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:14px;font-weight:400;line-height:20px}.era-subhead-bold{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:14px;font-weight:600;line-height:20px}.era-footnote{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:12px;font-weight:400;line-height:18px}.era-caption{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);font-size:12px;font-weight:500;line-height:16px}.era-body-blog{font-family:var(--font-charter,"Charis SIL", "Charter", Georgia, serif);letter-spacing:.05em;color:var(--era-primary);font-size:16px;font-weight:400;line-height:24px}.era-headline-blog{letter-spacing:.04em;color:var(--era-primary);font-family:IvyOra Display,Georgia,serif;font-size:48px;font-weight:500;line-height:56px}.era-text-muted{color:var(--era-light-gray)!important}.era-text-inverted{color:var(--era-primary-inverse)!important}.era-text-uppercase{text-transform:uppercase;letter-spacing:.5px}.era-line-clamp{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.era-stack{flex-direction:column;display:flex}.era-row{flex-direction:row;align-items:center;display:flex}.era-card-base{border-radius:var(--era-radius-standard)}.era-card-default{background-color:var(--era-canvas);border:1px solid #9a9a9a33}.era-card-outlined{background-color:#0000;border:1px solid #9a9a9a66}.era-card-elevated{background-color:var(--era-canvas);box-shadow:0 4px 12px #00000026}.era-card-ghost{background-color:#0000}.era-card-interactive{cursor:pointer;transition:all .15s}.era-card-interactive:hover{transform:translateY(-2px);box-shadow:0 8px 20px #00000026}.era-card-accent-blue{border:2px solid var(--era-blue)}.era-card-accent-green{border:2px solid var(--era-green)}.era-card-accent-yellow{border:2px solid var(--era-yellow)}.era-card-accent-red{border:2px solid var(--era-red)}.era-card-accent-orange{border:2px solid var(--era-orange)}.era-card-accent-purple{border:2px solid var(--era-purple)}.era-card{background-color:var(--era-canvas);border-radius:var(--era-radius-standard);border:1px solid #9a9a9a33;padding:16px}.era-divider{background-color:var(--era-light-gray);opacity:.3;width:100%;height:1px}.era-gap-xs{gap:var(--era-space-xs)}.era-gap-sm{gap:var(--era-space-sm)}.era-gap-md{gap:var(--era-space-md)}.era-gap-lg{gap:var(--era-space-lg)}.era-gap-xl{gap:var(--era-space-xl)}.era-gap-2xl{gap:var(--era-space-2xl)}.era-gap-3xl{gap:var(--era-space-3xl)}.era-btn{font-family:var(--font-figtree),system-ui,sans-serif;cursor:pointer;border:none;justify-content:center;align-items:center;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.era-btn:disabled{opacity:.5;cursor:not-allowed}.era-btn-primary{background-color:var(--era-primary);color:var(--era-primary-inverse)}.era-btn-primary:hover:not(:disabled){opacity:.9}.era-btn-secondary{color:var(--era-primary);background-color:#1212121a}.era-btn-secondary:hover:not(:disabled){background-color:#12121226}.era-btn-soft{color:var(--era-light-gray);background-color:#9a9a9a1a}.era-btn-soft:hover:not(:disabled){color:var(--era-primary);background-color:#9a9a9a2e}.era-btn-ghost{color:var(--era-light-gray);background-color:#0000}.era-btn-ghost:hover:not(:disabled){color:var(--era-primary)}.era-btn-outline{color:var(--era-primary);background-color:#0000;border:1px solid #12121233}.era-btn-outline:hover:not(:disabled){background-color:#1212120d}.era-btn-destructive{background-color:var(--era-red);color:#fff}.era-btn-destructive:hover:not(:disabled){opacity:.9}.era-btn-confirm{background-color:var(--era-green);color:#fff}.era-btn-confirm:hover:not(:disabled){opacity:.9}.era-btn-sm{padding:var(--era-space-sm) var(--era-space-md);font-size:var(--era-font-subhead);border-radius:var(--era-radius-pill);min-width:80px}.era-btn-md{padding:var(--era-space-sm) var(--era-space-lg);font-size:var(--era-font-headline);border-radius:var(--era-radius-pill);min-width:120px}.era-btn-lg{padding:var(--era-space-md) var(--era-space-xl);font-size:var(--era-font-title3);border-radius:var(--era-radius-pill);min-width:160px}.era-btn-full{width:100%}@keyframes spin{to{transform:rotate(360deg)}}@keyframes era-pulse{0%,to{opacity:1}50%{opacity:.5}}.era-icon-btn{cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background-color .15s,opacity .15s;display:inline-flex}.era-icon-btn:disabled{opacity:.5;cursor:not-allowed}.era-icon-btn-sm{width:24px;height:24px}.era-icon-btn-md{width:32px;height:32px}.era-icon-btn-lg{width:40px;height:40px}.era-icon-btn-xl{width:48px;height:48px}.era-icon-btn-primary{background-color:var(--era-primary);color:#fff}.era-icon-btn-primary:hover:not(:disabled){opacity:.9}.era-icon-btn-secondary{background-color:var(--era-canvas);color:var(--era-primary);border:1px solid #9a9a9a4d}.era-icon-btn-secondary:hover:not(:disabled){background-color:#9a9a9a1a}.era-icon-btn-ghost{color:var(--era-primary);background-color:#0000}.era-icon-btn-ghost:hover:not(:disabled){background-color:#9a9a9a1a}.era-icon-btn-glass,.era-icon-btn-glass:hover:not(:disabled){-webkit-backdrop-filter:blur(8px);color:#fff;background-color:#ffffff40}.era-badge{padding:var(--era-space-xs) var(--era-space-md);border-radius:var(--era-radius-pill);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-footnote);align-items:center;font-weight:500;display:inline-flex}.era-badge-blue{background-color:var(--era-blue-bg);color:var(--era-blue)}.era-badge-green{background-color:var(--era-green-bg);color:var(--era-green)}.era-badge-yellow{background-color:var(--era-yellow-bg);color:var(--era-yellow)}.era-badge-red{background-color:var(--era-red-bg);color:var(--era-red)}.era-badge-orange{background-color:var(--era-orange-bg);color:var(--era-orange)}.era-badge-purple{background-color:var(--era-purple-bg);color:var(--era-purple)}.era-badge-neutral{color:var(--era-light-gray);background-color:#9a9a9a1a}.era-role-badge{align-items:center;gap:var(--era-space-sm);padding:var(--era-space-xs) var(--era-space-md);border-radius:var(--era-radius-pill);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-footnote);font-weight:500;display:inline-flex}.era-role-badge-owner{background-color:var(--era-orange-bg);color:var(--era-orange)}.era-role-badge-admin{background-color:var(--era-blue-bg);color:var(--era-blue)}.era-role-badge-editor{background-color:var(--era-green-bg);color:var(--era-green)}.era-role-badge-viewer{color:var(--era-light-gray);background-color:#9a9a9a1a}.era-curator-badge{font-size:var(--era-font-subhead);align-items:center;gap:8px;transition:color .15s;display:inline-flex}.era-curator-badge-interactive{cursor:pointer}.era-curator-badge-link{cursor:pointer;text-decoration:none}.era-curator-badge-interactive:hover,.era-curator-badge-link:hover{color:var(--era-primary)}.era-curator-avatar{cursor:pointer;background-color:#9a9a9a33;border:1px solid #0000;border-radius:50%;flex-shrink:0;transition:transform .15s;position:relative;overflow:hidden}.era-curator-avatar:hover{transform:scale(1.1)}.era-curator-avatar-placeholder{width:100%;height:100%;color:var(--era-primary);text-transform:uppercase;background-color:#9a9a9a1a;justify-content:center;align-items:center;font-size:.6em;font-weight:500;display:flex}.era-curator-text{color:var(--era-light-gray);line-height:inherit;align-items:center;gap:3px;display:inline-flex}.era-curator-name{color:var(--era-primary);font-weight:500}.era-curator-name-interactive:hover{text-decoration:underline}.era-curator-avatars{align-items:center;display:flex}.era-curator-avatars-stacked .era-curator-avatar{border:1px solid var(--era-canvas,#fff)}.era-curator-avatars-stacked .era-curator-avatar:hover{z-index:100!important}.era-curator-names{display:inline}.era-curator-separator{color:var(--era-primary)}.era-curator-author-link{color:inherit;text-decoration:none}.era-curator-author-link:hover .era-curator-name{text-decoration:underline}.era-curator-inverted.era-curator-text{color:#ffffffd9}.era-curator-inverted-muted{color:#fff9}.era-curator-inverted.era-curator-text .era-curator-name{color:#fff}.era-curator-inverted.era-curator-avatar-placeholder{color:#fff;background-color:#fff3}.era-input{background-color:var(--era-canvas);border-radius:var(--era-radius-standard);width:100%;font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);border:1px solid #9a9a9a4d;outline:none;padding:12px 16px;font-size:15px;font-weight:500;transition:border-color .15s}.era-input::placeholder{color:var(--era-light-gray)}.era-input:focus{border-color:var(--era-primary)}.era-text-field{width:100%;padding:var(--era-space-lg);border-radius:var(--era-radius-standard);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-body);color:var(--era-primary);background-color:#1212120d;border:none;outline:none;font-weight:500;transition:box-shadow .15s}.dark .era-text-field{background-color:#ffffff0d}.era-text-field::placeholder{color:var(--era-light-gray)}.era-text-field:focus{box-shadow:0 0 0 2px #12121233}.dark .era-text-field:focus{box-shadow:0 0 0 2px #fff3}.era-text-area{width:100%;padding:var(--era-space-lg);border-radius:var(--era-radius-standard);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-body);color:var(--era-primary);resize:none;background-color:#1212120d;border:none;outline:none;font-weight:500;transition:box-shadow .15s}.dark .era-text-area{background-color:#ffffff0d}.era-text-area::placeholder{color:var(--era-light-gray)}.era-text-area:focus{box-shadow:0 0 0 2px #12121233}.dark .era-text-area:focus{box-shadow:0 0 0 2px #fff3}.era-search-field{align-items:center;gap:var(--era-space-sm);padding:var(--era-space-lg);border-radius:var(--era-radius-standard);background-color:#1212120d;width:100%;transition:box-shadow .15s;display:flex}.dark .era-search-field{background-color:#ffffff0d}.era-search-field:focus-within{box-shadow:0 0 0 2px #12121233}.dark .era-search-field:focus-within{box-shadow:0 0 0 2px #fff3}.era-search-input{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);background:0 0;border:none;outline:none;flex:1;font-size:15px;font-weight:500}.era-search-input::placeholder{color:var(--era-light-gray)}.era-container{box-sizing:border-box;width:100%;max-width:1200px;margin:0 auto;padding:0 24px}.era-text-center{text-align:center}.era-text-left{text-align:left}.era-text-right{text-align:right}.era-flex-wrap{flex-wrap:wrap}.era-items-center{align-items:center}.era-items-start{align-items:flex-start}.era-justify-center{justify-content:center}.era-justify-between{justify-content:space-between}.era-slider{gap:var(--era-space-sm);flex-direction:column;width:100%;display:flex}.era-slider-track{cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;height:16px;position:relative}.era-slider-svg{width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.era-slider-dot{transition:cx 50ms ease-out,cy 50ms ease-out}.era-slider-thumb{width:24px;height:24px;margin-left:-12px;position:absolute;top:50%;transform:translateY(-50%)}.era-slider-labels{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-light-gray);justify-content:space-between;align-items:center;font-size:15px;display:flex}.era-segment-view{border-radius:var(--era-radius-pill);background-color:#9a9a9a1a;gap:8px;padding:4px;display:flex}.era-segment-item{border-radius:var(--era-radius-pill);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-title3);text-align:center;color:var(--era-light-gray);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 16px;font-weight:500;transition:all .15s}.era-segment-item:hover:not(.era-segment-item-active){color:var(--era-primary)}.era-segment-item-active{background-color:var(--era-canvas);color:var(--era-primary);box-shadow:0 1px 3px #0000001a}.era-segment-tabs{align-items:center;display:flex}.era-segment-tab{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-subhead);color:var(--era-primary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 6px;font-weight:400;transition:all .15s}.era-segment-tab:first-child:not(.era-segment-tab-active-green):not(.era-segment-tab-active-blue){padding-left:0}.era-segment-tab:hover:not(.era-segment-tab-active-green):not(.era-segment-tab-active-blue){background-color:#9a9a9a1a}.era-segment-tab-active-green{background-color:var(--era-green);color:var(--era-primary-inverse);padding:4px 12px;font-weight:700}.era-segment-tab-active-blue{background-color:var(--era-blue);color:#fff;padding:4px 12px;font-weight:700}.era-toggle-wrapper{align-items:center;gap:var(--era-space-sm);cursor:pointer;display:inline-flex}.era-toggle-wrapper.era-toggle-disabled{opacity:.5;cursor:not-allowed}.era-toggle-input{opacity:0;width:0;height:0;position:absolute}.era-toggle-track{border-radius:var(--era-radius-pill);background-color:#80808066;border:1px solid #8080804d;width:44px;height:24px;transition:background-color .2s,border-color .2s;position:relative}[data-theme=dark] .era-toggle-track{background-color:#b4b4b440;border-color:#fff3}.era-toggle-thumb{background-color:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:1px;left:1px;box-shadow:0 1px 3px #0003}.era-toggle-active-green{background-color:var(--era-green);border-color:var(--era-green)}.era-toggle-active-blue{background-color:var(--era-blue);border-color:var(--era-blue)}.era-toggle-active-green .era-toggle-thumb,.era-toggle-active-blue .era-toggle-thumb{transform:translate(20px)}.era-toggle-label{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-subhead);color:var(--era-primary)}@keyframes era-wiggle-left{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(1px)}}@keyframes era-wiggle-right{0%,to{transform:translate(0)}25%{transform:translate(3px)}75%{transform:translate(-1px)}}.era-flow-nav-link{align-items:center;gap:var(--era-space-sm);opacity:.5;color:var(--era-primary);text-decoration:none;transition:opacity .15s;display:flex}.era-flow-nav-link:hover{opacity:.7}.era-flow-nav-link:hover .era-flow-nav-icon-back{animation:.4s ease-in-out infinite era-wiggle-left}.era-flow-nav-link:hover .era-flow-nav-icon-forward{animation:.4s ease-in-out infinite era-wiggle-right}.era-page-btn{align-items:center;gap:var(--era-space-xl);padding:var(--era-space-md) var(--era-space-lg);border-radius:var(--era-radius-pill);width:100%;color:var(--era-primary);cursor:pointer;background:0 0;border:none;text-decoration:none;transition:background-color .15s;display:flex}.era-page-btn:hover:not(.era-page-btn-selected):not(.era-page-btn-faded){background-color:#9a9a9a1a}.era-page-btn-selected{background-color:var(--era-primary);color:var(--era-primary-inverse)}.era-page-btn-faded{opacity:.3}.era-color-picker-wrapper{flex-direction:column;align-items:center;display:flex}.era-color-picker-container{gap:var(--era-space-sm);padding:var(--era-space-md);background-color:#9a9a9a1a;border-radius:34px;justify-content:center;align-items:center;display:flex}.era-color-dot{cursor:pointer;border:none;border-radius:50%;width:20px;height:20px;transition:transform .15s}.era-color-dot:hover{transform:scale(1.1)}.era-color-dot-selected{box-shadow:0 0 0 2px var(--era-canvas),0 0 0 4px var(--era-primary)}.era-color-dot-custom{position:relative;background:0 0!important}.era-color-dot-inner{z-index:1;border-radius:50%;width:100%;height:100%;display:block;position:relative}.era-color-dot-custom-selected:before{content:"";background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;position:absolute;inset:-4px}.era-color-dot-custom-selected:after{content:"";background:var(--era-canvas);border-radius:50%;position:absolute;inset:-2px}.era-sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.era-filter-panel-wrapper{flex-shrink:0;display:flex;position:relative}.era-filter-panel-right{order:999}.era-filter-panel-slide{transition:all .3s ease-in-out;overflow:hidden}.era-filter-panel-open{opacity:1}.era-filter-panel-closed{opacity:0}.era-filter-panel-content{background-color:var(--era-canvas);border-right:1px solid #9a9a9a33;height:100%;padding:16px}.era-filter-panel-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.era-filter-panel-close{color:var(--era-light-gray);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;transition:all .15s}.era-filter-panel-close:hover{color:var(--era-primary);background-color:#9a9a9a1a}.era-filter-panel-body{flex-direction:column;gap:16px;display:flex}.era-filter-toggle{color:var(--era-light-gray);cursor:pointer;background-color:#0000;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:6px;transition:color .15s,background-color .15s;display:flex;position:static}.era-filter-toggle:hover{color:var(--era-primary);background-color:#9a9a9a1a}.era-filter-toggle-left{left:0}.era-filter-toggle-right{right:0}.era-filter-section{border-bottom:1px solid #9a9a9a1a;padding-bottom:16px}.era-filter-section-header-btn{text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;margin-bottom:8px;display:flex}.era-filter-chevron{width:16px;height:16px;color:var(--era-light-gray);transition:transform .15s}.era-filter-chevron-collapsed{width:16px;height:16px;color:var(--era-light-gray);transition:transform .15s;transform:rotate(180deg)}.era-filter-section-content{flex-direction:column;gap:8px;display:flex}.era-filter-chip{padding:var(--era-space-sm) var(--era-space-md);border-radius:var(--era-radius-pill);font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-subhead);color:var(--era-primary);cursor:pointer;background-color:#9a9a9a1a;border:none;align-items:center;font-weight:600;transition:all .15s;display:inline-flex}.era-filter-chip:hover:not(.era-filter-chip-selected){background-color:#9a9a9a33}.era-filter-chip-selected{background-color:var(--era-primary);color:var(--era-primary-inverse)}.era-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background-color:#00000080;position:fixed;inset:0}.era-modal-content{z-index:50;background-color:var(--era-canvas);border-radius:var(--era-radius-standard);flex-direction:column;max-height:85vh;padding:24px;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 40px #0003}.era-modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.era-modal-title{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-title2);color:var(--era-primary);font-weight:600;line-height:32px}.era-modal-close-btn{border-radius:var(--era-radius-standard);color:var(--era-light-gray);cursor:pointer;background:0 0;border:none;padding:4px;transition:all .15s;position:absolute;top:16px;right:16px}.era-modal-close-btn:hover{color:var(--era-primary);background-color:#9a9a9a1a}.era-modal-body{flex-direction:column;flex:1;gap:16px;display:flex;overflow-y:auto}.era-modal-footer{justify-content:center;gap:var(--era-space-md);margin-top:var(--era-space-xl);display:flex}.era-modal-destructive{border:2px solid var(--era-red)}.era-modal-success{border:2px solid var(--era-green)}.era-modal-warning{border:2px solid var(--era-orange)}.era-empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.era-empty-state-icon{background-color:#9a9a9a1a;border-radius:50%}.era-masonry-item{border-radius:var(--era-radius-standard);background-color:var(--era-canvas)}.era-device-card{align-items:center;gap:var(--era-space-sm);cursor:pointer;flex-direction:column;display:flex}.era-device-card-image-container{border-radius:var(--era-radius-standard);justify-content:center;align-items:center;width:100%;transition:transform .3s;display:flex;overflow:hidden}.era-device-card-image{object-fit:contain;border-radius:var(--era-radius-standard);width:100%;height:100%;transition:transform .3s}.era-device-card-hover-wiggle:hover .era-device-card-image-container{animation:.5s ease-in-out era-device-wiggle}.era-device-card-hover-wiggle:hover .era-device-card-image{transform:scale(1.05)}@keyframes era-device-wiggle{0%,to{transform:rotate(0)}20%{transform:rotate(-3deg)}40%{transform:rotate(3deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}.era-device-card-hover-float .era-device-card-image-container{transition:transform .3s,box-shadow .3s}.era-device-card-hover-float:hover .era-device-card-image-container{transform:translateY(-8px);box-shadow:0 12px 24px #00000026}.era-device-card-hover-float:hover .era-device-card-image{transform:scale(1.02)}.era-device-card-hover-pulse:hover .era-device-card-image-container{animation:1s ease-in-out infinite era-device-pulse}@keyframes era-device-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.era-device-card-hover-tilt{perspective:1000px}.era-device-card-hover-tilt .era-device-card-image-container{transform-style:preserve-3d;border-radius:inherit;overflow:hidden}.era-device-card-content{text-align:center;flex-direction:column;align-items:center;display:flex}.era-device-card-name{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-primary);margin:0;font-weight:600}.era-device-card-subheader{font-family:var(--font-figtree),system-ui,sans-serif;color:var(--era-light-gray);margin:0;font-weight:400}.era-device-card-sm{gap:var(--era-space-xs);width:160px}.era-device-card-sm .era-device-card-image-container{height:115px}.era-device-card-sm .era-device-card-name{font-size:var(--era-font-subhead);line-height:20px}.era-device-card-sm .era-device-card-subheader{font-size:var(--era-font-footnote);line-height:18px}.era-device-card-md{gap:var(--era-space-sm);width:200px}.era-device-card-md .era-device-card-image-container{height:144px}.era-device-card-md .era-device-card-name{font-size:var(--era-font-headline);line-height:24px}.era-device-card-md .era-device-card-subheader{font-size:var(--era-font-subhead);line-height:20px}.era-device-card-lg{gap:var(--era-space-md);width:280px}.era-device-card-lg .era-device-card-image-container{height:200px}.era-device-card-lg .era-device-card-name{font-size:var(--era-font-title3);line-height:28px}.era-device-card-lg .era-device-card-subheader{font-size:var(--era-font-headline);line-height:24px}.era-device-card-xl{gap:var(--era-space-lg);width:360px}.era-device-card-xl .era-device-card-image-container{height:260px}.era-device-card-xl .era-device-card-name{font-size:var(--era-font-title2);line-height:32px}.era-device-card-xl .era-device-card-subheader{font-size:var(--era-font-title3);line-height:28px}.era-reference-card{cursor:pointer;background:var(--era-dark-gray);transition:transform .2s,filter .2s;position:relative;overflow:hidden}.era-reference-card:hover{filter:drop-shadow(0 8px 16px #00000026);transform:scale(1.02)}.era-reference-card-image{width:100%;height:auto;display:block}.era-reference-card-overlay{opacity:0;background:linear-gradient(#0000,#0000004d 60%,#000000b3);align-items:flex-end;padding:12px 16px;transition:opacity .3s;display:flex;position:absolute;inset:0}.era-reference-card:hover .era-reference-card-overlay{opacity:1}.era-reference-card-text{flex-direction:column;gap:2px;display:flex}.era-reference-card-title{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-subhead);color:#fff;text-shadow:0 1px 3px #0000004d;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;line-height:20px;display:-webkit-box;overflow:hidden}.era-reference-card-subtitle{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-caption);color:#fffc;text-shadow:0 1px 3px #0000004d;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:500;line-height:16px;display:-webkit-box;overflow:hidden}.era-reference-card-type-indicator{opacity:.7;transition:opacity .3s;position:absolute;top:12px;right:12px}.era-reference-card:hover .era-reference-card-type-indicator{opacity:1}.era-reference-card-text-based{background-color:var(--era-canvas);outline:.5px solid #1212124d;flex-direction:column;justify-content:center;align-items:center;min-height:180px;padding:24px;display:flex;position:relative}:root[data-theme=dark] .era-reference-card-text-based,.dark .era-reference-card-text-based{outline:.5px solid #ffffff4d}.era-reference-card-text-based:hover{filter:drop-shadow(0 8px 16px #00000026);transform:scale(1.02)}.era-reference-card-text-content{text-align:center;z-index:2;flex-direction:column;align-items:center;width:100%;transition:transform .3s;display:flex;position:relative;transform:translateY(10px)}.era-reference-card-text-based:hover .era-reference-card-text-content{transform:translateY(0)}.era-reference-card-text-title{color:var(--era-primary);letter-spacing:-.01em;border-top:1px solid var(--era-light-gray);border-bottom:1px solid var(--era-light-gray);-webkit-line-clamp:2;-webkit-box-orient:vertical;width:100%;padding:16px 0;font-family:Times New Roman,CMU Serif,Georgia,serif;font-size:16px;font-style:italic;font-weight:400;line-height:1.4;display:-webkit-box;overflow:hidden}.era-reference-card-text-subtitle{font-family:var(--font-figtree),system-ui,sans-serif;font-size:var(--era-font-caption);color:var(--era-light-gray);opacity:0;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:12px;font-weight:400;line-height:16px;transition:opacity .3s,transform .3s;display:-webkit-box;overflow:hidden;transform:translateY(-8px)}.era-reference-card-text-based:hover .era-reference-card-text-subtitle{opacity:1;transform:translateY(0)}.era-reference-card-type-indicator-text{opacity:.5}.era-reference-card-type-indicator-text .era-icon-btn-ghost{color:var(--era-primary)}.era-reference-card-text-based:hover .era-reference-card-type-indicator-text{opacity:.8}.shadow-airbnb{box-shadow:0 2px 8px #00000014}.shadow-airbnb-hover:hover{box-shadow:0 4px 16px #0000001f}.rounded-airbnb{border-radius:12px}.paper-texture{background-blend-mode:multiply;background-color:#f5f3f0;background-image:url(/paper-texture.jpg);background-size:256px}.noise-control{flex-direction:column;gap:8px;width:100%;display:flex}.noise-display{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;justify-content:space-between;align-items:center;padding:12px;display:flex}.noise-label{color:#374151;font-size:14px;font-weight:500}.noise-value{color:#6366f1;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:18px;font-weight:600}.noise-hint{color:#6b7280;text-align:center;padding:4px;font-size:12px}.slider-control{flex-direction:column;gap:8px;display:flex}.slider-value{text-align:center;color:#4a9eff;font-family:monospace;font-size:18px;font-weight:600}.numeric-input,.text-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;outline:none;width:100%;padding:8px;font-size:14px}.numeric-input:focus,.text-input:focus{background:#ffffffe6;border-color:#6366f1}.text-file-input{flex-direction:column;gap:8px;width:100%;display:flex}.file-input-hidden{opacity:0;width:0;height:0;position:absolute;overflow:hidden}.file-picker-button{color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;background:#4a9eff;border:1px solid #4a9eff;border-radius:4px;justify-content:center;align-items:center;padding:10px 16px;font-size:13px;font-weight:600;transition:all .2s;display:flex}.file-picker-button:hover{background:#5aaeff;border-color:#5aaeff;transform:translateY(-1px);box-shadow:0 2px 4px #4a9eff4d}.file-picker-button:active{transform:translateY(0);box-shadow:0 1px 2px #4a9eff33}.file-info{background:#1a1a1a;border:1px solid #3a3a3a;border-radius:4px;flex-direction:column;gap:4px;padding:8px;display:flex}.file-name{color:#e0e0e0;word-break:break-all;font-size:12px;font-weight:600}.audio-file-input{flex-direction:column;gap:8px;width:100%;display:flex}.audio-preview{width:100%;margin-top:8px}.audio-preview audio{outline:none;width:100%;height:32px}.audio-preview audio::-webkit-media-controls-panel{background-color:#1a1a1a}.audio-preview audio::-webkit-media-controls-play-button{background-color:#4a9eff;border-radius:50%}.file-size{color:#888;font-family:monospace;font-size:10px}.toggle-switch{cursor:pointer;align-items:center;gap:10px;display:flex}.toggle-switch input[type=checkbox]{appearance:none;cursor:pointer;background:#3a3a3a;border-radius:12px;outline:none;width:44px;height:24px;transition:background .3s;position:relative}.toggle-switch input[type=checkbox]:checked{background:#2ecc71}.toggle-switch input[type=checkbox]:before{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .3s;position:absolute;top:2px;left:2px}.toggle-switch input[type=checkbox]:checked:before{transform:translate(20px)}.toggle-label{color:#b0b0b0;font-size:13px;font-weight:500}.range-labels{color:#888;justify-content:space-between;margin-bottom:4px;font-size:10px;display:flex}.color-picker-control{flex-direction:column;gap:12px;display:flex}.primitive-node{width:180px}.primitive-node-content{flex-direction:column;align-items:center;gap:8px;width:100%;height:100%;padding:16px;display:flex}.primitive-indicator{flex-shrink:0;width:100%;padding:12px 16px 0}.primitive-indicator-title{color:#2d8baf;text-align:left;white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:16px;font-weight:700;overflow:hidden}.primitive-placeholder{text-align:center;color:#888;padding:8px;font-size:12px}.primitive-bool-radio-group{gap:8px;width:100%;display:flex}.primitive-radio-option{cursor:pointer;color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;flex:1;align-items:center;gap:6px;padding:6px 10px;font-size:12px;transition:all .2s;display:flex}.primitive-radio-option:hover{background:#ffffffe6;border-color:#6366f1}.primitive-radio-option input[type=radio]{cursor:pointer;accent-color:#6366f1;margin:0}.primitive-radio-option input[type=radio]:checked+span{color:#6366f1;font-weight:600}.vector3-control{flex-direction:column;gap:12px;display:flex}.vector3-axis{flex-direction:column;gap:6px;display:flex}.vector3-label{color:#b0b0b0;width:20px;font-size:12px;font-weight:600}.vector3-input-group{align-items:center;gap:8px;display:flex}.vector3-number-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;outline:none;width:70px;padding:6px;font-family:monospace;font-size:12px}.vector3-number-input:focus{background:#ffffffe6;border-color:#6366f1}.sensor-input-indicator{background:#ff5133;border-radius:16px 16px 0 0;flex-shrink:0;justify-content:center;align-items:center;width:100%;height:32px;padding:0 8px;display:flex}.sensor-input-indicator-title{color:#fff;text-align:center;white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:12px;font-weight:600;overflow:hidden}.sensor-warmup-banner{color:#fff;letter-spacing:.3px;background:linear-gradient(90deg,#ff9500,#ff6b00);justify-content:center;align-items:center;gap:6px;padding:5px 8px;font-size:10px;font-weight:600;animation:2s ease-in-out infinite sensor-warmup-pulse;display:flex}.sensor-warmup-spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:10px;height:10px;animation:.8s linear infinite sensor-warmup-spin}@keyframes sensor-warmup-spin{to{transform:rotate(360deg)}}@keyframes sensor-warmup-pulse{0%,to{opacity:1}50%{opacity:.7}}.sensor-display{flex-direction:column;align-items:center;gap:8px;padding:8px;display:flex}.sensor-modular-display{align-items:stretch;gap:12px;width:100%}.sensor-thumbnail-container{justify-content:center;align-items:center;margin-bottom:8px;display:flex}.sensor-modular-thumbnail{object-fit:cover;border:1px solid #0000001a;border-radius:4px;width:48px;height:48px}.sensor-schema-fields{flex-direction:column;gap:12px;width:100%;display:flex}.sensor-schema-field{flex-direction:column;gap:6px;width:100%;display:flex}.sensor-field-label{color:#666;text-transform:capitalize;font-size:11px;font-weight:600}.sensor-bool-radio-group{gap:8px;width:100%;display:flex}.sensor-radio-option{cursor:pointer;color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;flex:1;align-items:center;gap:6px;padding:6px 10px;font-size:12px;transition:all .2s;display:flex}.sensor-radio-option:hover{background:#ffffffe6;border-color:#6366f1}.sensor-radio-option input[type=radio]{cursor:pointer;accent-color:#6366f1;margin:0}.sensor-radio-option input[type=radio]:checked+span{color:#6366f1;font-weight:600}.sensor-number-input,.sensor-text-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;width:100%;padding:6px 8px;font-family:monospace;font-size:13px;transition:border-color .2s,background .2s}.sensor-number-input:focus,.sensor-text-input:focus{background:#ffffffe6;border-color:#6366f1;outline:none}.sensor-output-preview{background:#0000000d;border:1px solid #0000001a;border-radius:4px;width:100%;margin-top:8px;padding:8px}.sensor-output-label{color:#666;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:10px;font-weight:600}.sensor-output-text{color:#9b59b6;word-break:break-all;font-family:monospace;font-size:11px;font-weight:500;line-height:1.4}.sensor-color-picker-wrapper{align-items:center;gap:8px;width:100%;display:flex}.sensor-color-input{cursor:pointer;appearance:none;background:0 0;border:1px solid #0000001a;border-radius:4px;width:60px;height:36px;padding:0}.sensor-color-input::-webkit-color-swatch-wrapper{border:none;border-radius:4px;padding:0}.sensor-color-input::-webkit-color-swatch{border:1px solid #0000001a;border-radius:4px}.sensor-color-input::-moz-color-swatch{border:1px solid #0000001a;border-radius:4px}.sensor-color-value{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;flex:1;min-width:0;padding:6px 8px;font-family:monospace;font-size:12px}.location-sensor-node{border:2px solid #0000;border-radius:24px;width:160px;height:160px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 4px 20px #00000026}.location-sensor-node.selected{border-color:#6366f1;box-shadow:0 4px 24px #6366f166}.location-sensor-container{background:#e5e7eb;border-radius:0;width:100%;height:100%;position:relative;overflow:hidden}.location-sensor-map-wrapper{position:absolute;inset:0}.location-sensor-map-full{width:100%;height:100%}.location-sensor-btn{cursor:pointer;z-index:10;background:#ffffffe6;border:none;border-radius:10px;justify-content:center;align-items:center;width:28px;height:28px;transition:all .2s;display:flex;position:absolute;box-shadow:0 2px 6px #00000026}.location-sensor-btn:hover{background:#fff;transform:scale(1.05)}.location-sensor-btn-icon{width:18px;height:18px}.location-sensor-btn-location{bottom:8px;left:8px}.location-sensor-btn-location.active{background:#007aff}.location-sensor-btn-location.active .location-sensor-btn-icon{filter:brightness(0)invert()}.location-sensor-btn-pin{bottom:8px;right:8px}.location-sensor-pulse-container{pointer-events:none;z-index:5;width:80px;height:80px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.location-sensor-pulse-ring{border:2px solid #007aff66;border-radius:50%;animation:2s ease-out infinite locationPulse;position:absolute;inset:0}.location-sensor-pulse-ring-delay{animation-delay:1s}.location-sensor-center-dot{background:#007aff;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 8px #007aff80}@keyframes locationPulse{0%{opacity:1;transform:scale(.3)}to{opacity:0;transform:scale(1)}}.location-sensor-input-overlay{-webkit-backdrop-filter:blur(8px);z-index:20;background:#ffffffeb;border-radius:12px;flex-direction:column;padding:12px;display:flex;position:absolute;inset:0}.location-sensor-input-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.location-sensor-input-icon-btn{cursor:pointer;color:#374151;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;transition:background .2s;display:flex}.location-sensor-input-icon-btn:hover{background:#0000000d}.location-sensor-input-content{flex-direction:column;flex:1;gap:6px;display:flex}.location-sensor-input-label{color:#111827;font-size:13px;font-weight:600}.location-sensor-input-field{color:#1e40af;background:#f3f4f6;border:none;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-family:SF Mono,Monaco,Menlo,monospace;font-size:15px}.location-sensor-input-field:focus{background:#e5e7eb}.location-sensor-input-field::placeholder{color:#9ca3af}.location-sensor-loading{z-index:15;position:absolute;top:8px;left:8px}.location-sensor-loading-spinner{border:2px solid #007aff4d;border-top-color:#007aff;border-radius:50%;width:20px;height:20px;animation:1s linear infinite location-sensor-spin}@keyframes location-sensor-spin{to{transform:rotate(360deg)}}.location-sensor-error{z-index:15;font-size:16px;position:absolute;top:8px;left:8px}.actuator-placeholder{text-align:center;color:#888;padding:8px;font-size:12px}.actuator-display{flex-direction:column;align-items:center;gap:8px;width:100%;height:100%;padding:8px;display:flex}.actuator-modular-display{align-items:stretch;gap:12px;width:100%;height:100%}.actuator-thumbnail-container{justify-content:center;align-items:center;margin-bottom:8px;display:flex}.actuator-modular-thumbnail{object-fit:cover;border:1px solid #0000001a;border-radius:4px;width:48px;height:48px}.actuator-capability-fields{flex-direction:column;flex:1;gap:12px;width:100%;display:flex}.actuator-capability-field{flex-direction:column;gap:6px;width:100%;display:flex}.actuator-field-label{color:#666;text-transform:capitalize;font-size:11px;font-weight:600}.actuator-number-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;width:70px;padding:6px 8px;font-family:monospace;font-size:13px;transition:border-color .2s,background .2s}.actuator-number-input:focus{background:#ffffffe6;border-color:#6366f1;outline:none}.actuator-text-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;width:100%;padding:6px 8px;font-size:13px;transition:border-color .2s,background .2s}.actuator-text-input:focus{background:#ffffffe6;border-color:#6366f1;outline:none}.actuator-color-picker-wrapper{align-items:center;gap:8px;width:100%;display:flex}.actuator-color-input{cursor:pointer;appearance:none;background:0 0;border:1px solid #0000001a;border-radius:4px;width:60px;height:36px;padding:0}.actuator-color-input::-webkit-color-swatch-wrapper{border:none;border-radius:4px;padding:0}.actuator-color-input::-webkit-color-swatch{border:1px solid #0000001a;border-radius:4px}.actuator-color-input::-moz-color-swatch{border:1px solid #0000001a;border-radius:4px}.actuator-color-value{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;flex:1;min-width:0;padding:6px 8px;font-family:monospace;font-size:12px}.vertical-array{padding:8px}.vertical-bars{align-items:flex-end;gap:8px;height:120px;margin-bottom:8px;display:flex}.vertical-bar-container{flex-direction:column;flex:1;align-items:center;height:100%;display:flex}.vertical-bar{border-radius:2px 2px 0 0;width:100%;min-height:4px;transition:height .3s;box-shadow:0 -2px 4px #0000004d}.vertical-bar-label{color:#888;margin-top:4px;font-size:10px}.olfactory-machine{flex-direction:column;gap:8px;padding:8px;display:flex}.olfactory-row{align-items:center;gap:8px;display:flex}.olfactory-scent-name{flex-shrink:0;min-width:100px}.scent-name-input{color:#222;background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;outline:none;width:100%;padding:4px 6px;font-family:inherit;font-size:11px;transition:border-color .2s}.scent-name-input:focus{background:#ffffffe6;border-color:#6366f1}.scent-name-input::placeholder{color:#666}.olfactory-toggle{color:#e0e0e0;align-items:center;gap:6px;min-width:70px;font-size:11px;display:flex}.olfactory-intensity{flex:1;align-items:center;gap:8px;display:flex}.intensity-value{color:#888;text-align:right;min-width:35px;font-size:10px}.fan-actuator{flex-direction:column;align-items:center;gap:12px;padding:12px;display:flex}.fan-icon{font-size:48px;transition:transform .1s}.fan-icon.spinning{animation:linear infinite spin}.fan-controls{flex-direction:column;gap:8px;width:100%;display:flex;position:relative}.fan-toggle{color:#e0e0e0;align-items:center;gap:8px;font-size:12px;display:flex}.fan-speed{align-items:center;gap:8px;display:flex}.fan-speed-value{color:#888;text-align:right;min-width:40px;font-size:11px}.fan-glow{pointer-events:none;border-radius:50%;width:60px;height:60px;transition:opacity .3s,box-shadow .3s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.light-strip{flex-direction:column;gap:12px;padding:8px;display:flex}.light-preview{border:1px solid #3a3a3a;border-radius:4px;width:100%;height:60px;transition:background-color .3s,box-shadow .3s}.light-controls{flex-direction:column;gap:8px;display:flex}.light-toggle{color:#e0e0e0;align-items:center;gap:8px;font-size:12px;display:flex}.light-brightness{align-items:center;gap:8px;display:flex}.light-brightness label{color:#888;min-width:60px;font-size:11px}.brightness-value{color:#888;text-align:right;min-width:40px;font-size:11px}.piezo-speaker{flex-direction:column;gap:12px;width:100%;padding:8px;display:flex}.piezo-controls{flex-direction:column;gap:8px;display:flex}.piezo-auto-play{align-items:center;display:flex}.piezo-toggle-label{color:#666;cursor:pointer;align-items:center;gap:6px;font-size:11px;display:flex}.piezo-toggle-label input[type=checkbox]{cursor:pointer;accent-color:#48bb78;width:14px;height:14px}@keyframes piezoPulse{0%,to{transform:scale(1);box-shadow:0 0 #9f7aeab3}50%{transform:scale(1.02);box-shadow:0 0 10px 3px #9f7aea80}}.piezo-empty-state{background:#0000000d;border:1px dashed #0003;border-radius:4px;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;display:flex}.piezo-empty-icon{opacity:.5;font-size:24px}.piezo-empty-text{color:#666;text-align:center;font-size:11px}.piezo-empty-hint{color:#999;text-align:center;font-family:monospace;font-size:9px}.piezo-tones-list{flex-direction:column;gap:4px;max-height:150px;display:flex;overflow-y:auto}.piezo-tones-header{color:#888;text-transform:uppercase;border-bottom:1px solid #0000001a;margin-bottom:4px;padding:4px 0;font-size:10px;font-weight:600}.piezo-tone-row{background:#ffffffb3;border:1px solid #0000001a;border-radius:4px;flex-direction:column;gap:4px;padding:6px 8px;transition:all .2s;display:flex;position:relative;overflow:hidden}.piezo-tone-row.active{background:#48bb7833;border-color:#48bb78;box-shadow:0 0 8px #48bb7866}.piezo-tone-info{color:#444;z-index:1;align-items:center;gap:8px;font-family:monospace;font-size:10px;display:flex;position:relative}.piezo-tone-index{color:#888;min-width:20px;font-size:9px}.piezo-tone-freq{color:#48bb78;min-width:55px;font-weight:600}.piezo-tone-rest{color:#a0aec0;min-width:55px;font-style:italic;font-weight:600}.piezo-tone-dur{color:#9f7aea;margin-left:auto}.piezo-tone-row.rest{background:#00000008;border-style:dashed}.piezo-tone-bar{background:linear-gradient(90deg,#48bb78,#38a169);border-radius:0 2px 2px 0;height:3px;transition:all .2s;position:absolute;bottom:0;left:0}.speaker-actuator{flex-direction:column;gap:12px;width:100%;padding:8px;display:flex}.speaker-controls{flex-direction:column;gap:10px;width:100%;display:flex}.speaker-control-row{justify-content:space-between;align-items:center;padding:4px 0;display:flex}.speaker-control-label{color:#333;font-size:13px;font-weight:500}.speaker-voice-select{color:#333;cursor:pointer;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;border:1px solid #ddd;border-radius:6px;min-width:90px;padding:6px 28px 6px 10px;font-size:13px}.speaker-voice-select:focus{border-color:#8b6914;outline:none}.speaker-transcript-section{flex-direction:column;gap:8px;display:flex}.speaker-transcript-header{cursor:pointer;justify-content:space-between;align-items:center;padding:4px 0;display:flex}.speaker-transcript-toggle{color:#666;font-size:14px;transition:transform .2s}.speaker-transcript-toggle.expanded{transform:rotate(180deg)}.speaker-transcript-input{color:#333;resize:vertical;background-color:#fff;border:1px solid #ddd;border-radius:8px;width:100%;min-height:60px;padding:10px;font-family:inherit;font-size:13px}.speaker-transcript-input:focus{border-color:#8b6914;outline:none}.speaker-transcript-input::placeholder{color:#999}.actuator-cta-button{color:#fff;cursor:pointer;background:#4cd964;border:none;border-radius:20px;justify-content:center;align-items:center;gap:6px;width:100%;margin-top:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s;display:flex}.actuator-cta-button:hover:not(:disabled){background:#3cbf57;transform:translateY(-1px);box-shadow:0 2px 8px #4cd96466}.actuator-cta-button:active:not(:disabled){transform:translateY(0)}.actuator-cta-button:disabled{opacity:.5;cursor:not-allowed}.actuator-cta-button.active{background:#ed8936}.actuator-cta-icon{font-size:12px}.oled-button-row{gap:6px;display:flex}.oled-button-row .actuator-cta-button{flex:1;min-width:0}.oled-send-button{background:#007aff}.oled-send-button:hover:not(:disabled){background:#0063d1;box-shadow:0 2px 8px #007aff66}.actuator-zoomed-in-card{background:#fff;border-radius:20px;flex-direction:column;gap:12px;width:220px;min-width:220px;padding:16px;display:flex;overflow:visible;box-shadow:0 2px 12px #0000001a}.actuator-zoomed-in-card.selected{box-shadow:0 0 0 2px #6366f1,0 2px 12px #0000001a}.actuator-zoomed-in-name{text-align:center;font-size:16px;font-weight:700}.actuator-zoomed-in-content{flex-direction:column;width:100%;display:flex}.actuator-zoomed-out-card{border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:180px;min-height:160px;padding:16px;display:flex}.actuator-zoomed-out-thumbnail{object-fit:contain;width:80px;height:80px}.actuator-zoomed-out-name{color:#fff;text-align:center;font-size:16px;font-weight:700}.actuator-zoomed-in-card-wide{width:300px;min-width:300px}.oled-zoomed-out-card{border:1px solid #1c1c1c;gap:6px;box-shadow:0 2px 12px #0006,0 0 8px #c8f0ff0a;background:#0a0a0a!important}.oled-mini-screen-wrapper{background:#000;border:1px solid #1a1a1a;border-radius:4px;justify-content:center;align-items:center;padding:4px;display:flex;box-shadow:inset 0 0 6px #000c}.oled-mini-canvas{width:148px;height:74px;image-rendering:pixelated;image-rendering:crisp-edges;border-radius:1px;display:block}.oled-zoomed-out-name{font-size:13px;color:#c8f0ff!important}.matrix-actuator{flex-direction:column;gap:10px;width:100%;display:flex}.matrix-screen-wrapper{background:#111;border:1px solid #222;border-radius:8px;justify-content:center;align-items:center;padding:8px;display:flex;box-shadow:0 0 0 1px #0a0a0a,inset 0 0 10px #000c}.matrix-canvas{image-rendering:auto;border-radius:4px;width:200px;height:200px;display:block}.matrix-mini-screen-wrapper{background:#111;border-radius:4px;justify-content:center;align-items:center;padding:4px;display:flex}.matrix-mini-canvas{border-radius:2px;width:80px;height:80px;display:block}.matrix-zoomed-out-card{border:1px solid #222;gap:6px;box-shadow:0 2px 12px #00000080,0 0 8px #00ff3c08;background:#111!important}.matrix-zoomed-out-name{font-size:13px;color:#8aff8a!important}.eink-actuator{flex-direction:column;gap:10px;width:100%;display:flex}.eink-screen-wrapper{background:#e8e4dc;border:1px solid #d0ccc4;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:flex;box-shadow:0 1px 4px #0000000f,inset 0 1px 2px #ffffffb3}.eink-canvas{background:#f5f1eb;border:1px solid #d5d0c8;border-radius:2px;display:block}.eink-mini-screen-wrapper{background:#e8e4dc;border-radius:4px;justify-content:center;align-items:center;padding:4px;display:flex}.eink-mini-canvas{background:#f5f1eb;border:1px solid #d5d0c8;border-radius:1px;display:block}.eink-rotate-btn{color:#555;cursor:pointer;background:#f5f1eb;border:1px solid #d0ccc4;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:500;transition:all .15s;display:flex}.eink-rotate-btn:hover{color:#333;background:#ebe7df;border-color:#bbb7af}.eink-rotate-btn svg{flex-shrink:0}.eink-zoomed-out-card{border:1px solid #d0ccc4;gap:4px;box-shadow:0 1px 6px #00000014;background:#e8e4dc!important}.eink-zoomed-out-name{font-size:13px;color:#555!important}.oled-actuator{flex-direction:column;gap:10px;width:100%;display:flex}.oled-screen-wrapper{background:#0a0a0a;border:1px solid #1a1a1a;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:flex;box-shadow:0 0 0 1px #111,0 0 14px #c8f0ff14,inset 0 0 8px #000000e6}.oled-canvas{width:256px;height:128px;image-rendering:pixelated;image-rendering:crisp-edges;border-radius:2px;transition:opacity .3s;display:block}.oled-canvas-off{opacity:.12}.oled-controls{flex-direction:column;gap:8px;width:100%;display:flex}.oled-control-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.oled-contrast-row{gap:6px}.oled-control-label{color:#555;flex-shrink:0;min-width:56px;font-size:12px;font-weight:500}.oled-contrast-value{color:#888;text-align:right;flex-shrink:0;min-width:26px;font-family:Courier New,monospace;font-size:11px}.oled-layout-section{border:1px solid #e5e7eb;border-radius:8px;width:100%;overflow:hidden}.oled-layout-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f9fafb;justify-content:space-between;align-items:center;padding:7px 10px;transition:background .15s;display:flex}.oled-layout-header:hover{background:#f3f4f6}.oled-import-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;margin-left:auto;margin-right:6px;padding:1px 7px;font-size:10px;line-height:1.4;transition:background .15s,border-color .15s}.oled-import-button:hover{background:#f3f4f6;border-color:#9ca3af}.oled-layout-chevron{color:#9ca3af;font-size:11px;font-style:normal}.oled-layout-editor{border-top:1px solid #e5e7eb;flex-direction:column;display:flex}.oled-layout-textarea{color:#1f2937;resize:vertical;box-sizing:border-box;tab-size:2;background:#fff;border:none;outline:none;width:100%;min-height:96px;padding:10px;font-family:Courier New,Courier,monospace;font-size:10.5px;line-height:1.55}.oled-layout-textarea::placeholder{color:#9ca3af}.oled-layout-textarea-error{border-bottom:2px solid #ef4444}.oled-layout-error{color:#dc2626;word-break:break-all;background:#fef2f2;border-top:1px solid #fecaca;padding:5px 10px;font-family:Courier New,Courier,monospace;font-size:10px;line-height:1.4}.nfc-actuator{flex-direction:column;gap:10px;width:100%;display:flex}.nfc-broadcast-panel{background:linear-gradient(135deg,#0a1628,#0d1f3c);border:1px solid #1a3050;border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:16px 12px;transition:all .4s;display:flex}.nfc-broadcast-panel.nfc-active{border-color:#0077b6;box-shadow:0 0 12px #0077b626,0 0 30px #0077b60f}.nfc-icon-wrapper{justify-content:center;align-items:center;display:flex;position:relative}.nfc-icon{color:#3a5a7a;transition:color .4s}.nfc-icon-active{color:#00b4d8}@keyframes nfc-pulse-1{0%,to{opacity:.25}50%{opacity:1}}@keyframes nfc-pulse-2{0%,to{opacity:.2}60%{opacity:1}}@keyframes nfc-pulse-3{0%,to{opacity:.15}70%{opacity:1}}.nfc-icon-active .nfc-wave-1{animation:2s ease-in-out infinite nfc-pulse-1}.nfc-icon-active .nfc-wave-2{animation:2s ease-in-out .3s infinite nfc-pulse-2}.nfc-icon-active .nfc-wave-3{animation:2s ease-in-out .6s infinite nfc-pulse-3}.nfc-field-indicator{color:#fff;letter-spacing:.5px;background:#00b4d8;border-radius:4px;padding:1px 4px;font-size:8px;font-weight:700;animation:1s ease-in-out infinite nfc-rf-blink;position:absolute;top:-4px;right:-8px}@keyframes nfc-rf-blink{0%,to{opacity:1}50%{opacity:.4}}.nfc-status-text{color:#6a8aaa;text-transform:uppercase;letter-spacing:.8px;font-size:11px;font-weight:500}.nfc-broadcast-panel.nfc-active .nfc-status-text{color:#00b4d8}.nfc-field-badge{color:#999;background:#f0f0f0;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600;transition:all .3s}.nfc-field-badge-active{color:#00b4d8;background:#00b4d826}.nfc-records-editor{flex-direction:column;gap:6px;width:100%;display:flex}.nfc-records-header{justify-content:space-between;align-items:center;display:flex}.nfc-record-count{color:#999;font-size:10px;font-weight:500}.nfc-records-list{flex-direction:column;gap:6px;display:flex}.nfc-record-row{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:4px;padding:8px;display:flex}.nfc-record-row-header{align-items:center;gap:6px;display:flex}.nfc-record-type-select{color:#0077b6;cursor:pointer;background:#fff;border:1px solid #d0e3f5;border-radius:5px;outline:none;padding:2px 6px;font-size:11px;font-weight:600}.nfc-record-type-select:focus{border-color:#0077b6}.nfc-record-lang-input{color:#666;text-align:center;text-transform:lowercase;background:#fff;border:1px solid #e2e8f0;border-radius:4px;outline:none;width:36px;padding:2px 4px;font-size:10px;font-weight:600}.nfc-record-lang-input:focus{border-color:#0077b6}.nfc-record-delete-btn{color:#ccc;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;margin-left:auto;font-size:16px;font-weight:600;line-height:1;transition:all .15s;display:flex}.nfc-record-delete-btn:hover{color:#dc2626;background:#fee2e2}.nfc-record-content-input{color:#333;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:5px;outline:none;width:100%;padding:5px 8px;font-family:Courier New,Courier,monospace;font-size:12px}.nfc-record-content-input:focus{border-color:#0077b6;box-shadow:0 0 0 2px #0077b61a}.nfc-record-content-input::placeholder{color:#bbb}.nfc-add-record-row{gap:6px;display:flex}.nfc-add-record-btn{color:#0077b6;cursor:pointer;background:#f0f7ff;border:1px dashed #b3d9f2;border-radius:6px;flex:1;padding:5px 0;font-size:11px;font-weight:600;transition:all .15s}.nfc-add-record-btn:hover{background:#e0f0ff;border-color:#0077b6}.nfc-action-params{flex-direction:column;gap:4px;width:100%;display:flex}.nfc-shortcut-links{background:#f0f7ff;border-radius:6px;flex-direction:column;gap:4px;margin-top:4px;padding:6px 8px;display:flex}.nfc-shortcut-download-link{color:#0077b6;cursor:pointer;font-size:11px;font-weight:600;text-decoration:underline}.nfc-shortcut-download-link:hover{color:#005f8a}.nfc-write-button.nfc-write-loading{opacity:.7;cursor:wait}.nfc-write-button{background:linear-gradient(135deg,#0077b6,#00b4d8)!important;border-color:#0077b6!important}.nfc-write-button:hover{background:linear-gradient(135deg,#005f8a,#0099b8)!important}.nfc-write-button:disabled{opacity:.4;cursor:not-allowed}.nfc-write-button.nfc-write-success{background:linear-gradient(135deg,#2d9c4a,#4cd964)!important;border-color:#2d9c4a!important}.nfc-write-button.nfc-write-dirty{animation:1.5s ease-in-out infinite nfc-dirty-pulse;background:linear-gradient(135deg,#c97000,#ed8936)!important;border-color:#c97000!important}@keyframes nfc-dirty-pulse{0%,to{box-shadow:0 0 #ed893666}50%{box-shadow:0 0 8px 2px #ed893680}}.nfc-zoomed-out-card{border:1px solid #1a3050;gap:4px;transition:all .4s;box-shadow:0 2px 12px #0006;background:#0a1628!important}.nfc-zoomed-out-active{border-color:#0077b6;box-shadow:0 2px 12px #0077b633,0 0 20px #00b4d814}.nfc-mini-icon-wrapper{justify-content:center;align-items:center;padding:4px;display:flex}.nfc-mini-icon{color:#3a5a7a;transition:color .4s}.nfc-mini-icon-active{color:#00b4d8}.nfc-mini-icon-active .nfc-wave-1{animation:2s ease-in-out infinite nfc-pulse-1}.nfc-mini-icon-active .nfc-wave-2{animation:2s ease-in-out .3s infinite nfc-pulse-2}.nfc-mini-icon-active .nfc-wave-3{animation:2s ease-in-out .6s infinite nfc-pulse-3}.nfc-zoomed-out-name{font-size:13px;color:#6a8aaa!important}.nfc-zoomed-out-active .nfc-zoomed-out-name{color:#00b4d8!important}.neopixel-display{flex-direction:column;gap:10px;padding:4px 0;display:flex}.neopixel-strip-preview{background:#1a1a2e;border-radius:8px;justify-content:center;gap:4px;padding:10px 8px;display:flex}.neopixel-led{border:1.5px solid #ffffff26;border-radius:50%;width:28px;height:28px;transition:background-color .15s,box-shadow .15s}.neopixel-mode-tabs{background:#0000001a;border-radius:6px;gap:2px;padding:2px;display:flex}.neopixel-mode-tab{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:4px;flex:1;padding:5px 4px;font-size:11px;font-weight:500;transition:all .15s}.neopixel-mode-tab:hover{opacity:.85;background:#00000014}.neopixel-mode-tab.active{opacity:1;color:#007aff;background:#007aff26;font-weight:600}.neopixel-controls{flex-direction:column;gap:8px;display:flex}.neopixel-row{align-items:center;gap:8px;display:flex}.neopixel-label{opacity:.7;flex-shrink:0;min-width:58px;font-size:11px;font-weight:500}.neopixel-mini-label{opacity:.5;flex-shrink:0;font-size:10px}.neopixel-value{opacity:.6;text-align:right;flex-shrink:0;min-width:32px;font-size:11px}.neopixel-color-input{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;width:28px;height:28px;padding:0}.neopixel-color-hex{opacity:.5;font-family:monospace;font-size:10px}.neopixel-pos-input,.neopixel-bri-input{text-align:center;width:36px;color:inherit;background:0 0;border:1px solid #0000001f;border-radius:4px;padding:3px 4px;font-size:11px}.neopixel-gradient-endpoint{align-items:center;gap:6px;display:flex}.neopixel-perpixel-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.neopixel-perpixel-cell{flex-direction:column;align-items:center;gap:2px;display:flex}.neopixel-perpixel-idx{opacity:.4;font-size:9px;font-weight:600}.neopixel-perpixel-color{cursor:pointer;background:0 0;border:none;border-radius:6px;width:32px;height:32px;padding:0}.neopixel-footer{border-top:1px solid #0000000f;justify-content:space-between;align-items:center;gap:8px;padding-top:4px;display:flex}.neopixel-send-button{flex-shrink:0}.neopixel-zoomed-out-card{background:#1a1a2e}.neopixel-mini-strip{justify-content:center;gap:3px;padding:8px 4px;display:flex}.neopixel-mini-led{border-radius:50%;width:8px;height:8px;transition:background-color .15s,box-shadow .15s}.palette-morph{z-index:100;background:#fff;border-radius:42px;flex-direction:column;gap:4px;width:66px;max-height:80vh;padding:12px;transition:width .3s cubic-bezier(.4,0,.2,1),border-radius .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:50%;left:24px;overflow:hidden;transform:translateY(-50%);box-shadow:0 4px 24px #0000001a,0 1px 4px #0000000d}.palette-morph.expanded{border-radius:42px;width:280px}.palette-morph.closing{animation:.3s ease-out forwards slideOutLeft}@keyframes slideOutLeft{to{opacity:0;transform:translateY(-50%)translate(-120%)}}.palette-morph.canvas-controls-reveal{animation:.5s cubic-bezier(.22,.61,.36,1) .15s both paletteReveal}@keyframes paletteReveal{0%{opacity:0;transform:translateY(-50%)translateY(-15px)}to{opacity:1;transform:translateY(-50%)}}.palette-section{border-radius:24px;flex-direction:column;transition:background .2s;display:flex}.palette-section:hover,.palette-section.active{background:#f5f7f9}.palette-section-trigger{cursor:pointer;border-radius:24px;align-items:center;gap:12px;min-height:48px;padding:10px 8px;transition:background .15s;display:flex}.palette-section-trigger:hover{background:#00000008}.palette-icon{object-fit:contain;flex-shrink:0;width:28px;height:28px}.palette-label{color:#333;white-space:nowrap;opacity:0;font-size:13px;font-weight:600;transition:opacity .2s}.palette-morph.expanded .palette-label{opacity:1}.palette-section-content{flex-direction:column;max-height:250px;padding:0 4px 8px;display:flex;overflow:hidden auto}.palette-section-content::-webkit-scrollbar{width:4px}.palette-section-content::-webkit-scrollbar-track{background:0 0}.palette-section-content::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.palette-section-header-row{justify-content:space-between;align-items:center;padding:8px 8px 6px;display:flex}.palette-section-label{color:#3b82f6;letter-spacing:.5px;font-size:10px;font-weight:600}.palette-add-btn{color:#666;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:5px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:14px;font-weight:500;line-height:1;transition:all .15s;display:flex}.palette-add-btn:hover{background:#f0f0f0;border-color:#ccc}.palette-item-row{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:18px;align-items:center;gap:10px;width:100%;padding:8px;transition:background .15s;display:flex}.palette-item-row:hover{background:#0000000a}.palette-item-row-group{align-items:center;display:flex;position:relative}.palette-item-row-group .palette-item-row{flex:1}.palette-row-emoji{flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:18px;display:flex}.palette-row-thumbnail{object-fit:cover;border-radius:6px;flex-shrink:0;width:28px;height:28px}.palette-row-icon-svg{object-fit:contain;flex-shrink:0;width:24px;height:24px}.palette-row-info{flex:1;min-width:0;overflow:hidden}.palette-row-name{color:#222;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.palette-row-desc{color:#888;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:11px;overflow:hidden}.palette-divider{color:#999;text-transform:uppercase;letter-spacing:.5px;padding:10px 8px 4px;font-size:10px;font-weight:500}.palette-row-actions{opacity:0;gap:2px;padding-right:4px;transition:opacity .15s;display:flex}.palette-item-row-group:hover .palette-row-actions,.palette-item-row:hover .palette-row-actions{opacity:1}.palette-action-btn,.palette-row-action{cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:12px;transition:background .15s;display:flex}.palette-action-btn:hover,.palette-row-action:hover{background:#e8e8e8}.palette-action-btn.delete:hover,.palette-row-action-delete:hover{background:#fee}.palette-item-row[data-source=custom]{border-left:2px solid var(--theme-color-custom-accent,#6c5ce7)}.input-node{border-left:4px solid var(--theme-color-input-accent,#4a9eff)}.input-node .node-header{background:#1f2a3a}.logic-node{border-left:4px solid var(--theme-color-logic-accent,#9b59b6);min-width:var(--theme-size-logic-node-min-width,300px);max-width:var(--theme-size-logic-node-max-width,800px);position:relative}.logic-node.resizing{-webkit-user-select:none;user-select:none}.logic-node .node-header{background:#2a1f3a}.logic-resize-handle{cursor:ew-resize;z-index:10;border-radius:0 var(--theme-radius-node,8px) var(--theme-radius-node,8px) 0;background:0 0;width:8px;height:100%;position:absolute;top:0;right:0}.logic-resize-handle:hover{background:#4a9eff33}.logic-node.resizing .logic-resize-handle{background:#4a9eff66}.light-output{flex-direction:column;gap:12px;display:flex}.color-preview{border:1px solid #3a3a3a;border-radius:4px;width:100%;height:60px;box-shadow:inset 0 2px 4px #0000004d}.rgb-controls{flex-direction:column;gap:8px;display:flex}.rgb-control{align-items:center;gap:8px;display:flex}.rgb-control label{color:#b0b0b0;width:20px;font-size:12px;font-weight:600}.rgb-value{text-align:right;color:#b0b0b0;min-width:35px;font-family:monospace;font-size:12px}.microphone-vis-canvas{background:#fafafa;border-radius:8px}.mic-record-btn{color:#333;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:14px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:500;transition:background .15s,box-shadow .15s;display:flex}.mic-record-btn:hover{background:#f5f5f5;box-shadow:0 1px 4px #0000001a}.mic-record-dot{background:#e53e3e;border-radius:50%;width:8px;height:8px;display:inline-block}.mic-stop-btn{color:#e53e3e;cursor:pointer;background:#fff5f5;border:1px solid #e53e3e;border-radius:14px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:500;transition:background .15s;animation:1.2s ease-in-out infinite micPulse;display:flex}.mic-stop-btn:hover{background:#fee}.mic-stop-square{background:#e53e3e;border-radius:2px;width:8px;height:8px;display:inline-block}.mic-clear-btn{color:#666;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:4px 10px;font-size:11px;font-weight:500;transition:background .15s}.mic-clear-btn:hover{background:#f5f5f5}@keyframes micPulse{0%,to{box-shadow:0 0 #e53e3e66}50%{box-shadow:0 0 0 4px #e53e3e00}}.time-of-day-node{-webkit-user-select:none;user-select:none;color:#fff;border:2px solid #0000;border-radius:24px;outline:none;width:160px;height:160px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 4px 20px #00000026}.time-of-day-node.selected{box-shadow:0 4px 24px #6366f166}.time-of-day-node.focused{box-shadow:0 4px 24px #ffffff4d}.time-of-day-gradient-base{pointer-events:none;border-radius:22px;position:absolute;inset:0}.time-of-day-gradient-layer{pointer-events:none;border-radius:22px;animation:.5s ease-in-out forwards gradientFadeIn;position:absolute;inset:0}@keyframes gradientFadeIn{0%{opacity:0}to{opacity:1}}.time-of-day-content{z-index:1;flex-direction:column;justify-content:space-between;height:100%;padding:14px 12px 12px;display:flex;position:relative}.time-of-day-node .time-of-day-handle{background:#ffffffe6;border:2px solid #ffffff80;width:12px;height:12px}.time-of-day-date{text-align:center;letter-spacing:.3px;color:#ffffffd9;font-size:11px;font-weight:500}.time-of-day-time{flex:1;justify-content:center;align-items:center;gap:2px;display:flex}.time-of-day-time-value{letter-spacing:-1px;color:#fff;text-shadow:0 1px 2px #0000001a;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-size:36px;font-weight:700;line-height:1}.time-of-day-time-period{text-transform:uppercase;color:#fff;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-size:14px;font-weight:600}.time-of-day-slider{cursor:pointer;touch-action:none;justify-content:center;align-items:center;height:40px;margin-top:auto;display:flex;position:relative}.time-of-day-ticks{justify-content:space-between;align-items:flex-end;width:100%;height:100%;display:flex}.time-of-day-tick{background:#ffffffe6;border-radius:2px;width:3px;transition:height .15s ease-out,opacity .15s ease-out}@keyframes slideInFromRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOutToRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.node-sidebar{width:var(--sidebar-width,340px);z-index:50;background:#fff;border-radius:16px;flex-direction:column;animation:.3s ease-out forwards slideInFromRight;display:flex;position:absolute;top:90px;bottom:12px;right:12px;overflow:hidden;box-shadow:0 4px 24px #0000001f}.node-sidebar.closing{animation:.3s ease-out forwards slideOutToRight}.node-sidebar-header{z-index:2;align-items:center;gap:8px;padding:16px 16px 12px 20px;display:flex;position:relative}.node-sidebar-title{color:#fff;flex-shrink:0;margin:0;font-size:18px;font-weight:700}.node-sidebar-header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.node-sidebar-cta{color:#fff;cursor:pointer;white-space:nowrap;background:#4cd964;border:none;border-radius:16px;align-items:center;gap:5px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .2s;display:flex}.node-sidebar-cta:hover:not(:disabled){background:#3cbf57;transform:scale(1.02)}.node-sidebar-cta:disabled{opacity:.5;cursor:not-allowed}.node-sidebar-cta.active{background:#ed8936}.node-sidebar-cta-icon{font-size:11px}.node-sidebar-close{color:#fff;cursor:pointer;background:#0000004d;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;transition:all .2s;display:flex}.node-sidebar-close:hover{background:#00000080;transform:scale(1.05)}.node-sidebar-thumbnail-section{justify-content:center;align-items:center;min-height:160px;padding:20px;display:flex;position:relative}.node-sidebar-thumbnail-bg{border-radius:0;position:absolute;inset:0}.node-sidebar-thumbnail{object-fit:contain;z-index:1;filter:drop-shadow(0 4px 8px #0003);width:120px;height:120px;position:relative}.node-sidebar-thumbnail-placeholder{z-index:1;opacity:.7;justify-content:center;align-items:center;width:120px;height:120px;font-size:48px;display:flex;position:relative}.node-sidebar-controls{flex-direction:column;flex:1;gap:4px;padding:16px 20px;display:flex;overflow-y:auto}.node-sidebar-controls-full{width:100%;height:100%;overflow:hidden;padding:0!important}.node-sidebar-controls::-webkit-scrollbar{width:6px}.node-sidebar-controls::-webkit-scrollbar-track{background:0 0}.node-sidebar-controls::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.node-sidebar-controls::-webkit-scrollbar-thumb:hover{background:#9ca3af}.node-sidebar-controls .actuator-zoomed-in-card{box-shadow:none;width:100%;min-width:unset;background:0 0;border-radius:0;padding:0}.node-sidebar-controls .actuator-zoomed-in-card.selected{box-shadow:none}.node-sidebar-controls .actuator-zoomed-in-name,.node-sidebar-controls .actuator-thumbnail-container,.node-sidebar-controls .actuator-cta-button,.node-sidebar-controls .sensor-input-indicator,.node-sidebar-controls .sensor-thumbnail-container,.node-sidebar-controls .sensor-output-preview{display:none}.node-sidebar-controls>div>div{width:100%}.node-sidebar-controls .speaker-actuator{padding:0}.node-sidebar-controls .speaker-controls{gap:0}.node-sidebar-controls .speaker-control-row{border-bottom:1px solid #f0f0f0;padding:10px 0}.node-sidebar-controls .speaker-control-row:last-of-type{border-bottom:none}.node-sidebar-controls .speaker-control-label{color:#333;font-size:14px;font-weight:500}.node-sidebar-controls .speaker-transcript-section{padding-top:6px}.node-sidebar-controls .speaker-transcript-toggle{display:none}.node-sidebar-controls .speaker-transcript-header{cursor:default;padding:10px 0}.node-sidebar-controls .speaker-transcript-input{border-color:#e5e7eb;border-radius:10px;min-height:100px;padding:12px;font-size:14px}.node-sidebar-controls .actuator-capability-fields{gap:0}.node-sidebar-controls .actuator-capability-field{border-bottom:1px solid #f0f0f0;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding:10px 0}.node-sidebar-controls .actuator-capability-field:last-child{border-bottom:none}.node-sidebar-controls .actuator-field-label{color:#333;text-transform:none;font-size:14px;font-weight:500}.node-sidebar-controls .sensor-schema-fields{gap:0}.node-sidebar-controls .sensor-schema-field{border-bottom:1px solid #f0f0f0;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding:10px 0}.node-sidebar-controls .sensor-schema-field:last-child{border-bottom:none}.node-sidebar-controls .sensor-field-label{color:#333;text-transform:none;font-size:14px;font-weight:500}.node-sidebar-controls .sensor-number-input,.node-sidebar-controls .sensor-text-input,.node-sidebar-controls .actuator-number-input,.node-sidebar-controls .actuator-text-input{text-align:right;max-width:120px}.node-sidebar-controls .piezo-speaker{padding:0}.node-sidebar-controls .piezo-controls{gap:10px}.node-sidebar-controls .shadow-airbnb{box-shadow:none!important;min-width:unset!important;border:none!important;border-radius:0!important;width:100%!important}.node-sidebar-controls .sensor-modular-display,.node-sidebar-controls .actuator-modular-display{padding:0}.node-sidebar-controls>div{width:100%!important;min-width:unset!important;max-width:100%!important;box-shadow:none!important;border:none!important}.node-sidebar-controls>div>div{width:100%!important;min-width:unset!important}.node-sidebar-controls .react-flow__handle{display:none!important}.node-sidebar-controls .primitive-indicator{display:none}.time-of-day-sidebar{flex-direction:column;gap:16px;display:flex}.sidebar-field{flex-direction:column;gap:6px;display:flex}.sidebar-field-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.sidebar-expand-button{color:#374151;cursor:pointer;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;flex-shrink:0;padding:3px 8px;font-size:12px;transition:all .15s}.sidebar-expand-button:hover{background:#e5e7eb;border-color:#9ca3af}.sidebar-field-label{color:#666;text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.sidebar-text-input{color:#333;border:1px solid #e0e0e0;border-radius:8px;padding:10px 12px;font-family:SF Mono,Monaco,Menlo,monospace;font-size:14px;transition:border-color .2s,box-shadow .2s}.sidebar-text-input:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.sidebar-text-input::placeholder{color:#aaa}.sidebar-output-preview{color:#666;background:#f5f5f5;border-radius:8px;padding:10px 12px;font-family:SF Mono,Monaco,Menlo,monospace;font-size:13px}.sidebar-field-hint{color:#9ca3af;margin-top:2px;font-size:11px;line-height:1.4}.primitive-sidebar{flex-direction:column;gap:16px;padding:16px;display:flex}.primitive-sidebar-preview{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;margin-top:8px;padding:16px}.location-sensor-sidebar{flex-direction:column;width:100%;height:100%;display:flex}.location-sensor-sidebar-map{background:#e5e7eb;width:100%;height:320px;position:relative;overflow:hidden}.location-sensor-sidebar-map-inner{width:100%;height:100%}.location-sensor-sidebar-pulse{pointer-events:none;z-index:5;width:120px;height:120px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.location-sensor-sidebar-close{color:#fff;cursor:pointer;z-index:10;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .2s;display:flex;position:absolute;top:12px;right:12px}.location-sensor-sidebar-close:hover{background:#000000b3;transform:scale(1.05)}.location-sensor-sidebar-loading{z-index:10;position:absolute;top:12px;left:12px}.location-sensor-sidebar-controls{flex-direction:column;flex:1;gap:20px;padding:20px;display:flex}.location-sensor-sidebar-row{justify-content:space-between;align-items:center;display:flex}.location-sensor-sidebar-row-label{color:#111827;align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.location-sensor-sidebar-icon{width:22px;height:22px}.location-sensor-sidebar-field{flex-direction:column;gap:10px;display:flex}.location-sensor-sidebar-field-label{color:#111827;align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.location-sensor-sidebar-input{color:#111827;background:#f3f4f6;border:none;border-radius:12px;outline:none;width:100%;padding:14px 16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;transition:background .2s}.location-sensor-sidebar-input:focus{background:#e5e7eb}.location-sensor-sidebar-input:disabled{color:#6b7280;cursor:not-allowed}.location-sensor-sidebar-input::placeholder{color:#9ca3af}.node-sidebar-modal-backdrop{z-index:200;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.node-sidebar-modal{background:#fff;border-radius:12px;flex-direction:column;width:min(640px,90vw);max-height:80vh;display:flex;overflow:hidden;box-shadow:0 12px 48px #00000040}.node-sidebar-modal-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.node-sidebar-modal-title{color:#111827;margin:0;font-size:14px;font-weight:600}.node-sidebar-modal-close{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:50%;width:28px;height:28px;font-size:18px}.node-sidebar-modal-close:hover{color:#111827;background:#f3f4f6}.node-sidebar-modal-textarea{color:#111827;resize:vertical;border:none;outline:none;flex:1;min-height:240px;padding:12px 16px;font-family:SF Mono,Monaco,Menlo,monospace;font-size:13px}.node-sidebar-modal-footer{border-top:1px solid #e5e7eb;justify-content:flex-end;padding:12px 16px;display:flex}.node-sidebar-modal-save{color:#fff;cursor:pointer;background:#4f46e5;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600}.node-sidebar-modal-save:hover{background:#4338ca}.node-sidebar-fallback{padding:16px}.node-sidebar-fallback p{color:#6b7280}.node-sidebar-fallback-json{background:#f9fafb;border-radius:8px;margin-top:8px;padding:8px;font-size:12px;overflow:auto}.canvas-toolbar{z-index:40;pointer-events:none;justify-content:space-between;align-items:center;height:50px;padding:0 12px;display:flex;position:absolute;top:12px;left:12px;right:12px}.canvas-toolbar-group{pointer-events:auto;align-items:center;gap:8px;display:flex}.canvas-toolbar-button{color:#111827;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500;transition:background .15s,transform .15s;box-shadow:0 4px 12px #0000000f}.canvas-toolbar-button:hover{background:#f3f4f6;transform:translateY(-1px)}.canvas-toolbar-button:active{transform:translateY(0)}.canvas-toolbar-button-active{color:#fff;background:#111827;border-color:#111827}.canvas-toolbar-button-active:hover{background:#1f2937}.logic-board-sidebar{z-index:50;background:#fff;border-left:1px solid #e5e7eb;flex-direction:column;flex:0 0 50%;height:100vh;padding:0;animation:.25s ease-out forwards slideInFromRight;display:flex;overflow:hidden}.logic-board-sidebar.closing{animation:.25s ease-out forwards slideOutToRight}.sidebar-header{background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:20px;display:flex}.sidebar-title{color:#111827;margin:0;font-size:18px;font-weight:600}.sidebar-close{color:#6b7280;cursor:pointer;background:#f3f4f6;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:all .2s;display:flex}.sidebar-close:hover{color:#111827;background:#e5e7eb;transform:scale(1.05)}.sidebar-content{background:#fff;flex-direction:column;flex:1;gap:20px;padding:20px;display:flex;overflow-y:auto}.sidebar-content::-webkit-scrollbar{width:8px}.sidebar-content::-webkit-scrollbar-track{background:#f9fafb}.sidebar-content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#9ca3af}.logic-section{flex-direction:column;gap:8px;display:flex}.logic-section-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.logic-board-sidebar .logic-label{color:#111827;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.logic-board-sidebar .logic-label-hint{color:#9ca3af;font-size:11px;font-weight:400}.logic-textarea{resize:vertical;border:1px solid #e5e7eb;border-radius:8px;width:100%;min-height:80px;padding:12px;font-family:inherit;font-size:13px;transition:border-color .2s,box-shadow .2s}.logic-textarea:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.logic-textarea-small{min-height:60px}.logic-textarea-readonly{color:#6b7280;cursor:not-allowed;background:#f9fafb}.logic-play-button{color:#fff;cursor:pointer;background:#4f46e5;border:none;border-radius:8px;width:100%;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s}.logic-play-button:hover:not(:disabled){background:#4338ca;transform:translateY(-1px)}.logic-play-button:disabled{cursor:not-allowed;background:#9ca3af}.logic-results-header{cursor:pointer;background:#f9fafb;border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;transition:background .2s;display:flex}.logic-results-header:hover{background:#f3f4f6}.logic-results-title{color:#374151;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.logic-results-time{color:#9ca3af;font-size:11px;font-weight:400}.logic-results-toggle{color:#9ca3af;font-size:10px}.logic-results-content{background:#f9fafb;border-radius:0 0 8px 8px;flex-direction:column;gap:12px;margin-top:-4px;padding:12px;display:flex}.logic-results-message{border-radius:6px;padding:8px 12px;font-size:13px}.logic-results-message.success{color:#065f46;background:#ecfdf5}.logic-results-message.error{color:#991b1b;background:#fef2f2}.logic-results-section{flex-direction:column;gap:6px;display:flex}.logic-results-section-title{color:#6b7280;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;display:flex}.logic-results-section-title.error{color:#dc2626}.logic-results-code{color:#e5e7eb;white-space:pre-wrap;word-break:break-word;background:#1f2937;border-radius:6px;margin:0;padding:12px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;overflow-x:auto}.logic-results-code.error{color:#fecaca;background:#450a0a}.logic-results-code-wrapper{position:relative}.logic-copy-button-inline{color:#e5e7eb;cursor:pointer;z-index:2;background:#ffffff26;border:1px solid #ffffff40;border-radius:4px;padding:4px 8px;font-size:12px;transition:all .2s;position:absolute;top:8px;right:8px}.logic-copy-button-inline:hover{background:#ffffff40;border-color:#fff6}.logic-copy-button-inline:active{transform:scale(.95)}.plan-section-content{margin-top:8px}.plan-review-container{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;gap:16px;padding:16px;display:flex}.plan-review-header{flex-direction:column;gap:4px;display:flex}.plan-review-title{color:#111827;margin:0;font-size:15px;font-weight:600}.plan-review-subtitle{color:#6b7280;margin:0;font-size:13px}.plan-review-content{background:#fff;border:1px solid #e5e7eb;border-radius:8px;max-height:300px;overflow-y:auto}.plan-review-actions{justify-content:flex-end;gap:12px;display:flex}.logic-cancel-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:500;transition:all .2s}.logic-cancel-button:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.logic-cancel-button:disabled{opacity:.5;cursor:not-allowed}.logic-generate-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#8b5cf6,#6366f1);border:none;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .2s;box-shadow:0 2px 8px #6366f14d}.logic-generate-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.logic-generate-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.logic-actuator-summary{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.logic-actuator-summary-title{color:#166534;font-size:12px;font-weight:600}.logic-actuator-summary-list{flex-wrap:wrap;gap:6px;display:flex}.logic-actuator-badge{color:#15803d;background:#dcfce7;border-radius:12px;align-items:center;padding:4px 10px;font-size:11px;font-weight:500;display:inline-flex}.logic-tier-indicator{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px}.logic-tier-header{flex-direction:column;gap:8px;display:flex}.logic-tier-label{color:#374151;font-size:13px;font-weight:600}.logic-tier-badges{flex-wrap:wrap;gap:8px;display:flex}.logic-tier-badge{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:8px;align-items:center;padding:6px 12px;font-size:12px;transition:all .2s;display:inline-flex}.logic-tier-badge:hover{background:#f3f4f6;border-color:#d1d5db}.logic-tier-badge.active{color:#fff;background:linear-gradient(135deg,#8b5cf6,#6366f1);border-color:#0000;box-shadow:0 2px 8px #6366f14d}.logic-auto-execute-control{background:#fefce8;border:1px solid #fef08a;border-radius:8px;padding:12px}.logic-auto-execute-toggle{cursor:pointer;align-items:center;gap:8px;display:flex}.logic-auto-execute-toggle input[type=checkbox]{accent-color:#6366f1;width:16px;height:16px}.logic-auto-execute-label{color:#854d0e;font-size:13px;font-weight:500}.logic-auto-execute-hint{color:#a16207;margin-top:6px;font-size:11px}.logic-executable-code-box{background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;display:flex}.logic-executable-code-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.logic-executable-code-title{color:#374151;font-size:12px;font-weight:600}.logic-code-actions{gap:8px;display:flex}.logic-code-save-button,.logic-code-copy-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:4px 10px;font-size:11px;transition:all .2s}.logic-code-save-button:hover,.logic-code-copy-button:hover{background:#f3f4f6;border-color:#9ca3af}.logic-executable-code-content{color:#e5e7eb;resize:vertical;box-sizing:border-box;background:#1f2937;border:none;width:100%;height:200px;min-height:200px;padding:12px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;line-height:1.5;overflow:auto}.logic-executable-code-content:focus{border:1px solid #6366f1;outline:none}.logic-executable-code-editable{cursor:text}.logic-play-controls{gap:12px;display:flex}.logic-play-controls .logic-play-button{flex:1}.logic-regenerate-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:12px 16px;font-size:14px;font-weight:500;transition:all .2s}.logic-regenerate-button:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.logic-regenerate-button:disabled{opacity:.5;cursor:not-allowed}.logic-play-button.disabled{cursor:not-allowed;background:#9ca3af}.logic-play-button.processing{cursor:wait;background:#6366f1}.logic-processing-indicator{color:#6b7280;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:40px 20px;display:flex}.logic-processing-spinner{border:3px solid #e5e7eb;border-top-color:#4f46e5;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.logic-processing-text{font-size:13px;font-weight:500}.logic-processing-title{color:#4338ca;font-size:14px;font-weight:600}.logic-processing-subtitle{color:#6366f1;font-size:12px}.logic-cancel-generation-button{color:#dc2626;cursor:pointer;background:#fff;border:1px solid #fca5a5;border-radius:6px;margin-left:auto;padding:6px 16px;font-size:13px;font-weight:500;transition:all .2s}.logic-cancel-generation-button:hover{background:#fef2f2;border-color:#f87171}.logic-transcription-item{background:#f9fafb;border-radius:6px;flex-direction:column;gap:4px;margin-top:6px;padding:8px;display:flex}.logic-transcription-name{color:#6b7280;font-size:11px;font-weight:600}.logic-transcription-text{color:#374151;font-size:12px;font-style:italic}.logic-header-actions{align-items:center;gap:8px;display:flex}.logic-results-section-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.logic-results-section-actions{align-items:center;gap:6px;display:flex}.code-expand-button{color:#e5e7eb;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:4px;padding:3px 8px;font-size:12px;transition:all .15s}.code-expand-button-light{color:#374151;cursor:pointer;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;padding:3px 8px;font-size:12px;transition:all .15s}.logic-code-expand-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:4px 10px;font-size:11px;transition:all .2s}.logic-code-expand-button:hover{background:#f3f4f6;border-color:#9ca3af}.hardware-connection-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.hardware-section-title{color:#334155;text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:700}.live-connection-row{align-items:center;gap:8px;display:flex}.live-status-dot{background:#94a3b8;border-radius:50%;flex-shrink:0;width:10px;height:10px;transition:background .3s}.live-status-dot.connected{background:#22c55e;box-shadow:0 0 8px #22c55e80}.live-status-dot.connecting{background:#f59e0b;animation:1.2s ease-in-out infinite liveStatusPulse}.live-status-dot.error{background:#ef4444}@keyframes liveStatusPulse{0%,to{opacity:1}50%{opacity:.4}}.live-status-label{color:#64748b;flex:1;font-size:13px;font-weight:500}.live-connect-btn{cursor:pointer;color:#fff;background:#6366f1;border:none;border-radius:8px;padding:6px 16px;font-size:12px;font-weight:600;transition:all .2s}.live-connect-btn:hover:not(:disabled){background:#4f46e5;transform:translateY(-1px)}.live-connect-btn.disconnect{color:#64748b;background:#f1f5f9;border:1px solid #cbd5e1}.live-connect-btn.disconnect:hover:not(:disabled){color:#334155;background:#e2e8f0}.live-connect-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.live-unsupported-hint{color:#ef4444;font-size:11px;font-weight:500}.live-mode-toggle{background:#e2e8f0;border-radius:8px;gap:2px;padding:3px;display:flex}.live-mode-btn{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:6px;flex:1;padding:6px 12px;font-size:12px;font-weight:600;transition:all .2s}.live-mode-btn.active{color:#6366f1;background:#fff;box-shadow:0 1px 3px #0000001a}.live-mode-btn:hover:not(.active){color:#334155}.live-devices-list{flex-direction:column;gap:6px;display:flex}.live-device-item{background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.live-device-dot{background:#6366f1;border-radius:50%;flex-shrink:0;width:6px;height:6px}.live-device-addr{color:#94a3b8;font-family:SF Mono,Monaco,Menlo,monospace;font-size:11px}.live-device-name{color:#334155;white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:500;overflow:hidden}.live-scanning-hint{color:#94a3b8;text-align:center;padding:8px 0;font-size:12px;font-style:italic}.live-readings-list{flex-direction:column;gap:8px;display:flex}.live-reading-device{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px}.live-reading-device-header{border-bottom:1px solid #f1f5f9;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:6px;display:flex}.live-reading-row{justify-content:space-between;align-items:center;padding:3px 0;display:flex}.live-reading-key{color:#64748b;font-size:12px}.live-reading-value{color:#6366f1;font-family:SF Mono,Monaco,Menlo,monospace;font-size:12px;font-weight:600}.logic-step-indicators{border-bottom:1px solid #e5e7eb;flex-shrink:0;justify-content:center;align-items:center;gap:0;padding:12px 20px;display:flex}.logic-step{cursor:pointer;color:#9ca3af;background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .2s;display:flex}.logic-step:hover{color:#6b7280;background:#0000000a}.logic-step.active{color:#4f46e5;background:#4f46e514;font-weight:600}.logic-step.completed{color:#22c55e}.logic-step-number{border:2px solid;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:flex}.logic-step.active .logic-step-number{color:#fff;background:#4f46e5;border-color:#4f46e5}.logic-step.completed .logic-step-number{color:#fff;background:#22c55e;border-color:#22c55e}.logic-step-label{white-space:nowrap}.logic-step-connector{background:#e5e7eb;flex-shrink:0;width:20px;height:2px}.logic-step-content{flex:1;padding:16px 20px;overflow-y:auto}.logic-step-content::-webkit-scrollbar{width:4px}.logic-step-content::-webkit-scrollbar-track{background:0 0}.logic-step-content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.logic-write-section{flex-direction:column;gap:16px;display:flex}.logic-info-block{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:12px}.logic-info-label{text-transform:uppercase;letter-spacing:.05em;color:#9ca3af;margin-bottom:6px;font-size:10px;font-weight:700}.logic-info-content{color:#374151;white-space:pre-wrap;word-break:break-word;max-height:120px;font-size:12px;line-height:1.5;overflow-y:auto}.logic-info-empty{color:#9ca3af;font-size:12px;font-style:italic}.logic-textarea-wrapper{flex-direction:column;gap:6px;display:flex}.logic-main-textarea{color:#111827;resize:vertical;border:1px solid #e5e7eb;border-radius:10px;outline:none;width:100%;min-height:120px;max-height:300px;padding:12px;font-family:inherit;font-size:13px;line-height:1.5;transition:border-color .15s}.logic-main-textarea:focus{border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.logic-main-textarea::placeholder{color:#9ca3af}.logic-step-actions{border-top:1px solid #e5e7eb;flex-shrink:0;padding:12px 20px}.logic-primary-button{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:6px;width:100%;padding:10px 16px;font-size:14px;font-weight:600;transition:all .15s;display:flex}.logic-primary-button.generate{color:#fff;background:#4f46e5}.logic-primary-button.generate:hover:not(:disabled){background:#4338ca}.logic-primary-button.run{color:#fff;background:#22c55e}.logic-primary-button.run:hover:not(:disabled){background:#16a34a}.logic-primary-button:disabled{opacity:.5;cursor:not-allowed}.logic-secondary-button{cursor:pointer;color:#374151;background:#fff;border:1px solid #e5e7eb;border-radius:10px;width:100%;margin-top:8px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .15s}.logic-secondary-button:hover:not(:disabled){background:#f3f4f6}.logic-secondary-button:disabled{opacity:.5;cursor:not-allowed}.logic-code-block{background:#1e1e2e;border-radius:10px;overflow:hidden}.logic-code-header{background:#ffffff0d;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.logic-code-language{color:#ffffff80;font-size:11px;font-weight:500}.logic-code-textarea{color:#e2e8f0;resize:vertical;tab-size:2;background:0 0;border:none;outline:none;width:100%;min-height:200px;max-height:500px;padding:12px;font-family:SF Mono,Monaco,Menlo,Consolas,monospace;font-size:12px;line-height:1.6}.logic-code-textarea::placeholder{color:#fff3}.sensor-builder-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.sensor-builder-overlay.closing{animation:.3s ease-out forwards builderOverlayFadeOut}@keyframes builderOverlayFadeOut{to{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}}.sensor-builder-modal{background:#fff;border:2px solid #6366f1;border-radius:12px;flex-direction:column;width:90%;max-width:800px;max-height:90vh;display:flex;box-shadow:0 8px 32px #00000026}.sensor-builder-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;border-radius:10px 10px 0 0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.sensor-builder-header h2{color:#111827;margin:0;font-size:20px;font-weight:600}.close-button{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:28px;transition:all .2s;display:flex}.close-button:hover{color:#111827;background:#f3f4f6}.sensor-builder-content{flex:1;padding:24px;overflow-y:auto}.builder-section{margin-bottom:24px}.builder-section:last-of-type{margin-bottom:0}.builder-section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.builder-label{color:#374151;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:13px;font-weight:600;display:block}.builder-actions{gap:8px;display:flex}.template-button{color:#374151;cursor:pointer;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;padding:6px 12px;font-size:12px;font-weight:600;transition:all .2s}.template-button:hover{background:#e5e7eb;border-color:#9ca3af}.thumbnail-preview{aspect-ratio:1;background:#f9fafb;border:1px solid #d1d5db;border-radius:4px;justify-content:center;align-items:center;width:100%;max-width:200px;display:flex;overflow:hidden}.thumbnail-preview img{object-fit:cover;width:100%;height:100%}.builder-error{color:#e74c3c;background:#e74c3c1a;border:1px solid #e74c3c4d;border-radius:4px;margin-bottom:16px;padding:12px;font-size:12px}.builder-footer{border-top:1px solid #e5e7eb;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:20px;display:flex}.cancel-button,.create-button{cursor:pointer;border:none;border-radius:4px;padding:10px 20px;font-size:13px;font-weight:600;transition:all .2s}.cancel-button{color:#374151;background:#f3f4f6}.cancel-button:hover{background:#e5e7eb}.create-button{color:#fff;background:#2ecc71}.create-button:hover:not(:disabled){background:#27ae60}.create-button:disabled{opacity:.5;cursor:not-allowed}.sensor-builder-content::-webkit-scrollbar{width:8px}.sensor-builder-content::-webkit-scrollbar-track{background:#f3f4f6;border-radius:4px}.sensor-builder-content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.sensor-builder-content::-webkit-scrollbar-thumb:hover{background:#9ca3af}.builder-input,.builder-textarea{color:#111827;background:#fff;border:1px solid #d1d5db;border-radius:4px;outline:none;width:100%;padding:10px 12px;font-family:inherit;font-size:13px;transition:border-color .2s}.builder-input:focus,.builder-textarea:focus{border-color:#6366f1;outline:none}.builder-textarea{resize:vertical;min-height:80px}.builder-hint{color:#6b7280;margin-top:4px;font-size:12px}.schema-fields-list{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.schema-field-row{align-items:center;gap:8px;display:flex}.schema-field-name{color:#111827;background:#fff;border:1px solid #d1d5db;border-radius:4px;outline:none;flex:1;padding:8px 10px;font-size:13px;transition:border-color .2s}.schema-field-name:focus{border-color:#6366f1}.schema-field-type{color:#111827;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;outline:none;padding:8px 10px;font-size:13px;transition:border-color .2s}.schema-field-type:focus{border-color:#6366f1}.remove-field-button{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;transition:all .2s;display:flex}.remove-field-button:hover{background:#dc2626}.add-field-button{color:#fff;cursor:pointer;background:#6366f1;border:none;border-radius:4px;margin-bottom:12px;padding:8px 16px;font-size:13px;font-weight:600;transition:all .2s}.add-field-button:hover{background:#4f46e5}.schema-info-box{color:#374151;background:#f9fafb;border:1px solid #e5e7eb;border-radius:4px;margin-top:12px;padding:12px;font-size:12px}.schema-info-box strong{color:#111827}.schema-info-box ul{margin:8px 0;padding-left:20px}.schema-info-box li{margin:4px 0}.plan-viewer{background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;display:flex;overflow:hidden}.plan-viewer.disabled{opacity:.6;pointer-events:none}.plan-viewer-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.plan-viewer-tabs{gap:4px;display:flex}.plan-tab{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500;transition:all .2s}.plan-tab:hover:not(:disabled){color:#374151;background:#e5e7eb}.plan-tab.active{color:#fff;background:#4f46e5}.plan-tab:disabled{cursor:not-allowed;opacity:.5}.plan-viewer-actions{gap:4px;display:flex}.plan-action-btn{cursor:pointer;background:0 0;border:1px solid #e5e7eb;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:all .2s;display:flex}.plan-action-btn:hover:not(:disabled){background:#e5e7eb;border-color:#d1d5db}.plan-action-btn:disabled{cursor:not-allowed;opacity:.5}.plan-status-bar{background:#f9fafb;border-bottom:1px solid #e5e7eb;align-items:center;gap:8px;padding:6px 12px;font-size:11px;display:flex}.plan-status-badge{border-radius:10px;padding:2px 8px;font-weight:500}.plan-status-badge.auto{color:#1d4ed8;background:#dbeafe}.plan-status-badge.custom{color:#b45309;background:#fef3c7}.plan-status-warning{color:#d97706;cursor:help}.plan-upload-error{color:#dc2626;background:#fef2f2;border-bottom:1px solid #fecaca;padding:8px 12px;font-size:12px}.plan-content{flex:1;max-height:300px;overflow-y:auto}.plan-view-content{color:#374151;padding:12px;font-size:12px;line-height:1.5}.plan-empty{text-align:center;color:#9ca3af;padding:20px;font-style:italic}.plan-h1{color:#111827;border-bottom:2px solid #e5e7eb;margin:0 0 8px;padding-bottom:8px;font-size:16px;font-weight:700}.plan-h2{color:#374151;border-bottom:1px solid #e5e7eb;margin:16px 0 8px;padding-bottom:4px;font-size:14px;font-weight:600}.plan-h3{color:#4b5563;margin:12px 0 6px;font-size:13px;font-weight:600}.plan-hr{border:none;border-top:1px solid #e5e7eb;margin:12px 0}.plan-text{margin:4px 0}.plan-list-item{gap:8px;margin:4px 0;padding-left:4px;display:flex}.plan-bullet{color:#9ca3af;flex-shrink:0}.plan-checkbox{align-items:flex-start;gap:8px;margin:4px 0;display:flex}.plan-checkbox input{margin-top:2px}.plan-spacer{height:8px}.plan-inline-code{color:#dc2626;background:#f3f4f6;border-radius:3px;padding:1px 4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px}.plan-code-block{color:#e5e7eb;white-space:pre-wrap;word-break:break-word;background:#1f2937;border-radius:6px;margin:8px 0;padding:12px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;overflow-x:auto}.plan-edit-content{flex-direction:column;height:100%;display:flex}.plan-edit-textarea{resize:none;background:#fff;border:none;outline:none;flex:1;min-height:250px;padding:12px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.plan-edit-textarea:focus{background:#fafafa}.plan-edit-actions{background:#f9fafb;border-top:1px solid #e5e7eb;gap:8px;padding:12px;display:flex}.plan-save-btn{color:#fff;cursor:pointer;background:#4f46e5;border:none;border-radius:6px;flex:1;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.plan-save-btn:hover:not(:disabled){background:#4338ca}.plan-save-btn:disabled{cursor:not-allowed;background:#9ca3af}.plan-cancel-btn{color:#6b7280;cursor:pointer;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.plan-cancel-btn:hover:not(:disabled){color:#374151;background:#e5e7eb}.plan-cancel-btn:disabled{cursor:not-allowed;opacity:.5}.plan-content::-webkit-scrollbar{width:6px}.plan-content::-webkit-scrollbar-track{background:#f9fafb}.plan-content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.plan-content::-webkit-scrollbar-thumb:hover{background:#9ca3af}.play-mode-container{box-sizing:border-box;z-index:100;background:#f5f5f5;border-radius:0 0 16px 16px;flex-direction:column;width:90%;min-width:400px;max-width:50%;max-height:calc(100vh - 100px);padding:30px 40px 40px;animation:.7s ease-in-out slideDown;display:flex;position:absolute;top:50px;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 8px 32px #0003}@keyframes slideDown{0%{opacity:0;transform:translate(-50%)translateY(-100%)}to{opacity:1;transform:translate(-50%)translateY(0)}}.play-mode-header{border-bottom:2px solid #e0e0e0;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;display:flex}.play-mode-title{color:#1a1a1a;margin:0;font-size:28px;font-weight:600}.play-mode-close-button{color:#666;cursor:pointer;background:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;font-size:20px;transition:all .2s;display:flex;box-shadow:0 2px 4px #0000001a}.play-mode-close-button:hover{color:#333;background:#f0f0f0;transform:scale(1.05)}.play-mode-content{flex-direction:column;flex:1;gap:0;display:flex}.play-mode-unified-section{background:#e8e8e8;border:1px solid #d0d0d0;border-radius:16px;flex-direction:column;gap:40px;min-height:400px;padding:40px;display:flex;box-shadow:0 4px 12px #00000014}.play-mode-actuators-area{flex-direction:column;gap:24px;display:flex}.play-mode-actuator-visual{flex-direction:column;gap:0;display:flex}.play-mode-color-swatch{border-radius:12px;width:100%;height:200px;transition:all .3s;box-shadow:0 2px 8px #00000026}.play-mode-color-swatch:hover{transform:scale(1.02);box-shadow:0 4px 16px #0003}.play-mode-actuator-placeholder{color:#666;background:#fff;border-radius:12px;justify-content:center;align-items:center;width:100%;height:200px;font-size:18px;font-weight:500;display:flex;box-shadow:0 2px 8px #0000001a}.play-mode-smell-actuator{background:#1a1a1a;border-radius:20px;flex-direction:column;align-items:center;gap:8px;width:100%;padding:24px 32px;display:flex;box-shadow:0 4px 12px #00000026}.play-mode-smell-name{color:#fff;text-align:center;font-size:20px;font-weight:600}.play-mode-smell-intensity{color:#fff;text-align:center;opacity:.9;font-size:16px;font-weight:400}.play-mode-boolean-actuator{border-radius:20px;justify-content:center;align-items:center;width:100%;padding:24px 32px;font-size:18px;font-weight:600;transition:all .3s;display:flex;box-shadow:0 4px 12px #00000026}.play-mode-boolean-actuator.inactive{color:#999;background:#f5f5f5;border:2px solid #d0d0d0}.play-mode-boolean-actuator.active{color:#1a1a1a;background:#0f0;border:none}.play-mode-sensors-area{flex-direction:column;gap:24px;display:flex}.play-mode-sensor-container{flex-direction:column;gap:16px;display:flex}.play-mode-sensor-display{flex-direction:column;gap:12px;display:flex}.play-mode-sensor-label{color:#333;font-size:16px;font-weight:500}.play-mode-sensor-value-box{background:#fff;border-radius:12px;justify-content:space-between;align-items:center;min-height:80px;padding:20px 24px;display:flex;box-shadow:0 2px 8px #0000001a}.play-mode-sensor-value{color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:48px;font-weight:600}.play-mode-sensor-input{color:#1a1a1a;background:0 0;border:none;outline:none;flex:1;width:100%;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:48px;font-weight:600}.play-mode-sensor-input[type=number]{-moz-appearance:textfield}.play-mode-sensor-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.play-mode-sensor-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.play-mode-sensor-input[type=text]{font-size:24px;font-weight:500}.play-mode-sensor-bool-control{cursor:pointer;color:#1a1a1a;align-items:center;gap:12px;font-size:24px;font-weight:500;display:flex}.play-mode-sensor-bool-control input[type=checkbox]{cursor:pointer;width:24px;height:24px}.play-mode-sensor-controls{flex-direction:column;gap:4px;margin-left:16px;display:flex}.play-mode-sensor-arrow{cursor:pointer;color:#666;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d0d0d0;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;transition:all .2s;display:flex}.play-mode-sensor-arrow:hover{color:#333;background:#f0f0f0;border-color:#999}.play-mode-sensor-arrow:active{background:#e0e0e0;transform:scale(.95)}.play-mode-empty{text-align:center;color:#999;padding:60px 40px;font-size:18px;font-style:italic}@media (max-width:768px){.play-mode-grid{grid-template-columns:1fr}.play-mode-container{width:95%;min-width:300px;max-width:none;padding:20px}}.live-devices-node{background:#fff;border:2px solid #e5e7eb;border-radius:16px;width:220px;min-height:120px;transition:border-color .2s,box-shadow .2s,width .3s;overflow:hidden;box-shadow:0 2px 12px #00000014}.live-devices-node.monitor-mode{width:280px}.live-devices-node.selected{border-color:#22c55e;box-shadow:0 0 0 2px #22c55e33,0 2px 12px #00000014}.live-devices-indicator{background:#22c55e;justify-content:center;align-items:center;width:100%;height:32px;padding:0 12px;display:flex}.live-devices-indicator-title{color:#fff;letter-spacing:.3px;font-size:12px;font-weight:600}.live-devices-body{flex-direction:column;gap:10px;padding:12px;display:flex}.live-devices-status{align-items:center;gap:6px;display:flex}.live-devices-status-dot{background:#9ca3af;border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background .3s}.live-devices-status-dot.connected{background:#22c55e;box-shadow:0 0 6px #22c55e80}.live-devices-status-dot.connecting{background:#f59e0b;animation:1.2s ease-in-out infinite liveDevicesPulse}.live-devices-status-dot.error{background:#ef4444}.live-devices-status-label{color:#6b7280;font-size:11px;font-weight:500}.live-devices-list{flex-direction:column;gap:4px;max-height:160px;display:flex;overflow-y:auto}.live-devices-item{background:#f9fafb;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:10px;display:flex}.live-devices-item-dot{background:#22c55e;border-radius:50%;flex-shrink:0;width:6px;height:6px}.live-devices-item-addr{color:#6b7280;font-family:SF Mono,Monaco,Menlo,monospace;font-size:9px}.live-devices-item-name{color:#374151;white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.live-devices-scanning{color:#9ca3af;text-align:center;padding:4px 0;font-size:11px;animation:1.5s ease-in-out infinite liveDevicesPulse}.live-devices-unsupported{color:#ef4444;text-align:center;padding:4px 0;font-size:10px}.live-devices-btn{cursor:pointer;border:none;border-radius:8px;width:100%;padding:6px 12px;font-size:11px;font-weight:600;transition:all .2s}.live-devices-btn.connect{color:#fff;background:#22c55e}.live-devices-btn.connect:hover:not(:disabled){background:#16a34a}.live-devices-btn.disconnect{color:#6b7280;background:#f3f4f6;border:1px solid #e5e7eb}.live-devices-btn.disconnect:hover:not(:disabled){color:#374151;background:#e5e7eb}.live-devices-btn:disabled{opacity:.6;cursor:not-allowed}.live-devices-handle{background:#22c55e!important;border:2px solid #fff!important;width:10px!important;height:10px!important}.live-devices-mode-toggle{background:#f3f4f6;border-radius:8px;gap:2px;padding:2px;display:flex}.live-devices-mode-btn{cursor:pointer;color:#9ca3af;background:0 0;border:none;border-radius:6px;flex:1;padding:4px 8px;font-size:10px;font-weight:600;transition:all .2s}.live-devices-mode-btn.active{color:#22c55e;background:#fff;box-shadow:0 1px 3px #0000001a}.live-devices-mode-btn:hover:not(.active){color:#6b7280}.live-devices-readings-list{flex-direction:column;gap:8px;max-height:240px;display:flex;overflow-y:auto}.live-devices-reading-device{background:#f9fafb;border-radius:8px;padding:6px 8px}.live-devices-reading-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.live-devices-reading-name{color:#374151;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:10px;font-weight:600;overflow:hidden}.live-devices-reading-values{flex-direction:column;gap:2px;display:flex}.live-devices-reading-row{justify-content:space-between;align-items:center;padding:1px 0;display:flex}.live-devices-reading-key{color:#6b7280;text-transform:lowercase;font-size:9px}.live-devices-reading-value{color:#22c55e;font-family:SF Mono,Monaco,Menlo,monospace;font-size:10px;font-weight:600}.live-devices-waiting{color:#9ca3af;text-align:center;padding:4px 0;font-size:10px;font-style:italic;animation:1.5s ease-in-out infinite liveDevicesPulse}@keyframes liveDevicesPulse{0%,to{opacity:1}50%{opacity:.5}}.live-sensor-fade-in{animation:.4s ease-out forwards liveSensorFadeIn}@keyframes liveSensorFadeIn{0%{opacity:0}to{opacity:1}}.live-sensor-fading-out{opacity:0;pointer-events:none;transition:opacity .5s ease-out}.code-editor-modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10000;background:#0009;justify-content:center;align-items:center;animation:.2s ease-out codeEditorModalFadeIn;display:flex;position:fixed;inset:0}@keyframes codeEditorModalFadeIn{0%{opacity:0}to{opacity:1}}.code-editor-modal{background:#1e1e1e;border-radius:12px;flex-direction:column;width:90vw;max-width:1000px;height:80vh;max-height:700px;animation:.2s ease-out codeEditorModalSlideUp;display:flex;overflow:hidden;box-shadow:0 20px 60px #0006}@keyframes codeEditorModalSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.code-editor-modal-header{background:#252526;border-bottom:1px solid #3c3c3c;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.code-editor-modal-title{color:#e5e5e5;align-items:center;gap:10px;font-size:14px;font-weight:600;display:flex}.code-editor-modal-icon{font-size:16px}.code-editor-modal-editable-badge{color:#fff;background:#2ea043;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:500}.code-editor-modal-readonly-badge{color:#fff;background:#6b7280;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:500}.code-editor-modal-actions{align-items:center;gap:8px;display:flex}.code-editor-modal-btn{color:#e5e5e5;cursor:pointer;background:#3c3c3c;border:1px solid #4c4c4c;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500;transition:all .15s}.code-editor-modal-btn:hover{background:#4c4c4c;border-color:#5c5c5c}.code-editor-modal-btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-color:#0000}.code-editor-modal-btn-primary:hover{background:linear-gradient(135deg,#5558e3,#7c4fe8)}.code-editor-modal-btn-close{color:#9ca3af;background:0 0;border:none;padding:6px 10px;font-size:16px}.code-editor-modal-btn-close:hover{color:#e5e5e5;background:#3c3c3c}.code-editor-modal-body{background:#1e1e1e;flex:1;align-items:stretch;display:flex;overflow:hidden}.code-editor-line-numbers{text-align:right;-webkit-user-select:none;user-select:none;background:#1e1e1e;border-right:1px solid #3c3c3c;min-width:50px;padding:12px 0;overflow:hidden}.code-editor-line-number{color:#6b7280;height:21px;padding:0 12px;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:13px;line-height:21px}.code-editor-textarea{color:#d4d4d4;white-space:pre;tab-size:2;background:#1e1e1e;border:none;outline:none;flex:1;margin:0;padding:12px 16px;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:13px;line-height:21px;overflow:auto}.code-editor-textarea:empty:before{content:"No code to display...";color:#6b7280}.code-editor-textarea::-webkit-scrollbar{width:10px;height:10px}.code-editor-textarea::-webkit-scrollbar-track{background:#1e1e1e}.code-editor-textarea::-webkit-scrollbar-thumb{background:#4c4c4c;border-radius:5px}.code-editor-textarea::-webkit-scrollbar-thumb:hover{background:#5c5c5c}.code-editor-modal-footer{background:#252526;border-top:1px solid #3c3c3c;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.code-editor-modal-info{color:#9ca3af;font-size:11px}.code-editor-modal-language{color:#6b7280;background:#3c3c3c;border-radius:4px;padding:2px 8px;font-size:11px}.code-expand-button{color:#e5e7eb;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:4px;align-items:center;gap:4px;padding:4px 8px;font-size:11px;transition:all .15s;display:inline-flex}.code-expand-button:hover{background:#fff3;border-color:#ffffff4d}.code-expand-button-light{color:#374151;background:#f3f4f6;border:1px solid #d1d5db}.code-expand-button-light:hover{background:#e5e7eb;border-color:#9ca3af}.theme-settings-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;background:#0f172a8c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.theme-settings-modal{background:#fff;border-radius:12px;outline:none;flex-direction:column;width:min(560px,100%);max-height:min(720px,100vh - 48px);display:flex;overflow:hidden;box-shadow:0 24px 48px #0f172a40}.theme-settings-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.theme-settings-header h2{color:#0f172a;margin:0;font-size:18px;font-weight:600}.theme-settings-header-actions{gap:8px;display:flex}.theme-settings-button{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s}.theme-settings-button-secondary{color:#475569;background:0 0;border-color:#cbd5e1}.theme-settings-button-secondary:hover{background:#f1f5f9;border-color:#94a3b8}.theme-settings-button-primary{color:#fff;background:#0f172a;border-color:#0f172a}.theme-settings-button-primary:hover{background:#1e293b}.theme-settings-button-primary:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.theme-settings-body{flex:1;padding:20px 24px;overflow-y:auto}.theme-settings-section+.theme-settings-section{border-top:1px solid #f1f5f9;margin-top:24px;padding-top:24px}.theme-settings-section-title{color:#0f172a;margin:0 0 4px;font-size:14px;font-weight:600}.theme-settings-section-description{color:#64748b;margin:0 0 12px;font-size:12px}.theme-settings-radio-group{flex-direction:column;gap:8px;display:flex}.theme-settings-radio{cursor:pointer;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:20px 1fr;align-items:center;gap:4px 12px;padding:10px 12px;transition:border-color .15s,background .15s;display:grid}.theme-settings-radio:hover{border-color:#94a3b8}.theme-settings-radio-checked{background:#eff6ff;border-color:#2563eb}.theme-settings-radio input[type=radio]{accent-color:#2563eb;grid-row:span 2;margin:0}.theme-settings-radio-label{color:#0f172a;font-size:13px;font-weight:500}.theme-settings-radio-hint{color:#64748b;grid-column:2;font-size:12px}.theme-settings-footer{background:#f8fafc;border-top:1px solid #e2e8f0;padding:12px 24px 16px}.theme-settings-footer-hint{color:#94a3b8;font-size:11px}.canvas-toolbar-button-icon{min-width:32px;padding-inline:8px;font-size:16px;line-height:1}html,body,#root{height:100%;margin:0;padding:0}.spinner{border:2px solid #ccc;border-top-color:#2563eb;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.canvas-theme{--ink-100: #1e1e1e;--ink-80: #3a3a3a;--ink-60: #6b6b6b;--ink-40: #9b9b9b;--ink-20: #d0d0d0;--ink-10: #e6e6e6;--ink-05: #f4f4f4;--paper: #ffffff;--bg: #fafafa;--teal-soft: #c6faf6;--teal-mid: #5ad8cc;--teal-deep: #1ea69a;--ok: #2eaa55;--warn: #d99020;--err: #d94c4c;--info: #4a6cd4;--wire: var(--ink-60);--wire-active: var(--teal-mid);--canvas-font: ui-sans-serif, system-ui, -apple-system, "Inter", "Helvetica Neue", Arial, sans-serif;--canvas-mono: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;--r-card: 6px;--r-pill: 999px;--r-btn: 3px;background:var(--bg);color:var(--ink-100);font-family:var(--canvas-font)}.canvas-theme .canvas-card{background:var(--paper);border:1px solid var(--ink-10);border-radius:var(--r-card);color:var(--ink-100)}.canvas-theme .canvas-card:hover{border-color:var(--ink-20)}.canvas-theme .canvas-card--active{border-color:var(--teal-mid);box-shadow:0 0 0 2px var(--teal-soft)}.canvas-theme .canvas-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:11px;border-radius:var(--r-pill);border:1px solid var(--ink-10);background:var(--paper);color:var(--ink-100);cursor:pointer;font-family:inherit;user-select:none}.canvas-theme .canvas-pill:hover{border-color:var(--ink-20)}.canvas-theme .canvas-pill[data-active=true],.canvas-theme .canvas-pill[aria-pressed=true]{background:var(--teal-soft);border-color:var(--teal-mid);color:var(--teal-deep)}.canvas-theme .canvas-lane-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-deep)}.canvas-theme .canvas-region-empty{border:1px dashed var(--ink-20);background:var(--paper);color:var(--ink-60)}.canvas-theme .canvas-topbar{height:56px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--ink-10);background:var(--paper);position:sticky;top:0;z-index:50}.canvas-theme .canvas-topbar__back{width:32px;height:32px;border:1px solid var(--ink-20);background:var(--paper);border-radius:var(--r-btn);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-100);text-decoration:none;font-size:16px;line-height:1}.canvas-theme .canvas-topbar__back:hover{background:var(--teal-soft);border-color:var(--teal-mid)}.canvas-theme .canvas-topbar__title{font-weight:600;font-size:15px;color:var(--ink-100);display:inline-flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas-theme .canvas-topbar__url{font-family:var(--canvas-mono);font-size:12px;color:var(--ink-60);border:1px solid var(--ink-10);border-radius:4px;padding:3px 8px;background:var(--ink-05)}.canvas-theme .canvas-topbar__spacer{margin-left:auto}.canvas-theme .canvas-topbar__right{margin-left:auto;display:flex;align-items:center;gap:8px}.canvas-theme .canvas-statuspill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);border:1px solid var(--ink-20);background:var(--paper);font-size:12px;font-weight:500;color:var(--ink-100);cursor:pointer;white-space:nowrap;user-select:none;font-family:inherit}.canvas-theme .canvas-statuspill:hover{background:var(--ink-05);border-color:var(--teal-mid)}.canvas-theme .canvas-statuspill[data-active=true]:hover{background:#b1f3ed}.canvas-theme .canvas-statuspill .canvas-statuspill__dot{width:8px;height:8px;border-radius:50%;background:var(--ink-40);display:inline-block}.canvas-theme .canvas-statuspill[data-status=running]{background:#eafff3;border-color:var(--ok)}.canvas-theme .canvas-statuspill[data-status=running] .canvas-statuspill__dot{background:var(--ok);animation:canvas-breathe 2s ease-in-out infinite}.canvas-theme .canvas-statuspill[data-status=uploading]{background:#fff7e6;border-color:var(--warn)}.canvas-theme .canvas-statuspill[data-status=uploading] .canvas-statuspill__dot{background:var(--warn);animation:canvas-pulse 1s linear infinite}.canvas-theme .canvas-statuspill[data-status=error]{background:#fdecec;border-color:var(--err);color:var(--err)}.canvas-theme .canvas-statuspill[data-status=error] .canvas-statuspill__dot{background:var(--err)}.canvas-theme .canvas-statuspill[data-status=paired]{background:var(--teal-soft);border-color:var(--teal-mid)}.canvas-theme .canvas-statuspill[data-status=paired] .canvas-statuspill__dot{background:var(--teal-deep)}@keyframes canvas-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.8)}}@keyframes canvas-pulse{0%,to{opacity:1}50%{opacity:.35}}.canvas-theme .canvas-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--r-card);border:1px solid var(--ink-20);background:var(--paper);cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;color:var(--ink-100);font-family:inherit}.canvas-theme .canvas-btn:hover:not([disabled]){background:var(--ink-05)}.canvas-theme .canvas-btn[disabled]{opacity:.45;cursor:not-allowed}.canvas-theme .canvas-btn--primary{background:var(--teal-soft);border-color:var(--teal-mid);color:var(--ink-100)}.canvas-theme .canvas-btn--primary:hover:not([disabled]){background:#b1f3ed}.canvas-theme .canvas-btn--icon{width:32px;height:32px;padding:0;justify-content:center;border-radius:var(--r-btn);font-size:18px;line-height:1}.canvas-theme .canvas-kebab{position:relative}.canvas-theme .canvas-kebab__menu{position:absolute;top:calc(100% + 4px);right:0;min-width:200px;background:var(--paper);border:1px solid var(--ink-20);border-radius:var(--r-card);box-shadow:0 8px 20px #00000014;padding:4px;z-index:100}.canvas-theme .canvas-kebab__item{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 10px;border-radius:4px;cursor:pointer;font-size:13px;color:var(--ink-100);font-family:inherit}.canvas-theme .canvas-kebab__item:hover{background:var(--ink-05)}.canvas-theme .canvas-kebab__item[aria-pressed=true]{background:var(--teal-soft);color:var(--teal-deep)}.canvas-theme .canvas-kebab__sep{height:1px;background:var(--ink-10);margin:4px 0}.canvas-theme .canvas-node{background:var(--paper);border:1px solid var(--ink-20);border-radius:var(--r-card);color:var(--ink-100);transition:box-shadow .12s,border-color .12s}.canvas-theme .canvas-node:hover{border-color:var(--teal-mid);box-shadow:0 2px 8px #0000000f}.canvas-theme .canvas-node--selected{border-color:var(--teal-deep);box-shadow:0 0 0 3px var(--teal-soft)}.canvas-theme .canvas-node__chip{display:inline-block;padding:2px 6px;background:var(--ink-05);border:1px solid var(--ink-10);border-radius:4px;font-size:11px;font-family:var(--canvas-mono);margin-top:6px;margin-right:4px;color:var(--ink-80)}.canvas-theme .lanes{flex:1;min-height:0;display:grid;grid-template-columns:1fr 2fr 1fr;gap:0;position:relative;background:var(--bg)}.canvas-theme .lane{display:flex;flex-direction:column;padding:24px 20px;gap:12px;min-width:0;position:relative}.canvas-theme .lane--inputs{background:#4a6cd406;border-right:1px dashed var(--ink-10)}.canvas-theme .lane--processor{background:#1ea69a08;border-right:1px dashed var(--ink-10)}.canvas-theme .lane--outputs{background:#d9902006;padding-right:56px}.canvas-theme .lane__head{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-60);padding-bottom:4px;min-height:28px;gap:8px}.canvas-theme .lane__head>span{white-space:nowrap}.canvas-theme .lane--inputs .lane__head{color:var(--info)}.canvas-theme .lane--outputs .lane__head{color:#8a3ac0}.canvas-theme .lane--processor .lane__head{color:var(--teal-deep);justify-content:center}.canvas-theme .lane__add{border:1px dashed var(--ink-20);background:transparent;color:var(--ink-60);border-radius:var(--r-card);padding:6px 10px;font-size:12px;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.canvas-theme .lane__add:hover{background:var(--teal-soft);border-color:var(--teal-mid);color:var(--ink-100)}.canvas-theme .dropzone{border:1px dashed var(--ink-20);background:var(--paper);color:var(--ink-60);border-radius:var(--r-card);padding:24px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;font-size:12px;line-height:1.4;margin-top:auto;margin-bottom:auto;cursor:pointer}.canvas-theme .dropzone:hover{border-color:var(--teal-mid);background:#c6faf64d}.canvas-theme .dropzone .dz-icon{font-size:22px;line-height:1;color:var(--ink-40)}.canvas-theme .card-component{border:1px solid var(--ink-20);background:var(--paper);border-radius:var(--r-card);padding:12px;display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:start;cursor:pointer;transition:box-shadow .12s,transform .12s,border-color .12s;text-align:left;font:inherit;color:var(--ink-100);width:100%}.canvas-theme .card-component:hover{border-color:var(--teal-mid);box-shadow:0 2px 8px #0000000f}.canvas-theme .card-component[aria-selected=true]{border-color:var(--teal-deep);box-shadow:0 0 0 3px var(--teal-soft)}.canvas-theme .card-component__img{width:56px;height:56px;border-radius:4px;background:var(--ink-05);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--ink-60);overflow:hidden}.canvas-theme .card-component__img img{width:100%;height:100%;object-fit:contain}.canvas-theme .card-component__body{min-width:0}.canvas-theme .card-component__title{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-theme .card-component__meta{font-size:12px;color:var(--ink-60);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-theme .card-component__chip{display:inline-block;padding:2px 6px;background:var(--ink-05);border:1px solid var(--ink-10);border-radius:4px;font-size:11px;font-family:var(--canvas-mono);margin-top:6px;margin-right:4px;color:var(--ink-80)}.canvas-theme .card-processor{border:2px solid var(--teal-mid);background:var(--paper);border-radius:var(--r-card);padding:16px;display:flex;flex-direction:column;gap:8px;cursor:pointer;position:relative;margin-top:auto;margin-bottom:auto;font:inherit;color:var(--ink-100);text-align:left;width:100%}.canvas-theme .card-processor:hover{box-shadow:0 4px 16px #1ea69a1f}.canvas-theme .card-processor[data-state=inactive]{border-color:var(--ink-20);background:var(--ink-05)}.canvas-theme .card-processor[data-state=inactive]:hover{border-color:var(--teal-mid);background:#c6faf64d}.canvas-theme .card-processor__title{font-weight:700;font-size:14px;color:var(--teal-deep);display:flex;align-items:center;gap:6px}.canvas-theme .card-processor[data-state=inactive] .card-processor__title{color:var(--ink-60)}.canvas-theme .card-processor__plan{font-size:12px;line-height:1.5;color:var(--ink-100)}.canvas-theme .card-processor__plan strong{color:var(--teal-deep)}.canvas-theme .card-processor__hash{font-family:var(--canvas-mono);font-size:10px;color:var(--ink-60);margin-top:4px}.canvas-theme .skeleton-row{border:1px solid var(--ink-10);background:var(--paper);border-radius:var(--r-card);padding:12px;display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:start}.canvas-theme .skeleton-block{background:linear-gradient(90deg,var(--ink-05) 0%,var(--ink-10) 50%,var(--ink-05) 100%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:4px}.canvas-theme .skeleton-block--img{width:56px;height:56px}.canvas-theme .skeleton-block--title{height:14px;width:70%;margin-bottom:6px}.canvas-theme .skeleton-block--meta{height:11px;width:45%}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.canvas-theme .wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.canvas-theme .wire-path{fill:none;stroke:var(--wire);stroke-width:1.5;stroke-dasharray:4 3;opacity:.5}.canvas-theme .wire-path--active{stroke:var(--wire-active);stroke-dasharray:none;opacity:.9;animation:wire-flow 1.5s linear infinite}@keyframes wire-flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-12}}.canvas-theme .appheader{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--ink-10);background:var(--paper)}.canvas-theme .appheader__logo{font-weight:700;font-size:16px;color:var(--ink-100);text-decoration:none}.canvas-theme .appheader__nav{margin-left:auto;display:flex;gap:6px;align-items:center}.canvas-theme .appheader__nav a,.canvas-theme .appheader__nav button{padding:6px 10px;border-radius:4px;font-size:13px;color:var(--ink-60);text-decoration:none;background:transparent;border:none;cursor:pointer;font-family:inherit}.canvas-theme .appheader__nav a:hover,.canvas-theme .appheader__nav button:hover{background:var(--ink-05);color:var(--ink-100)}.canvas-theme .appheader__nav a[aria-current=page]{color:var(--ink-100);background:var(--ink-05)}.canvas-theme .appheader__org{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-family:var(--canvas-font);color:var(--ink-80);border:1px solid var(--ink-10);border-radius:var(--r-pill);background:var(--ink-05);white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}.canvas-theme .appheader__org:before{content:"⌂";color:var(--ink-60)}.canvas-theme .page{flex:1;padding:32px 48px;max-width:1200px;width:100%;margin:0 auto;box-sizing:border-box}.canvas-theme .page h1{font-size:28px;margin:0 0 24px;font-weight:700;color:var(--ink-100)}.canvas-theme .page__title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.canvas-theme .page__title-row h1{margin:0}.canvas-theme .projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.canvas-theme .project-tile{border:1px solid var(--ink-20);background:var(--paper);border-radius:8px;padding:16px;cursor:pointer;display:flex;flex-direction:column;gap:6px;min-height:132px;text-decoration:none;color:var(--ink-100);font:inherit;text-align:left;transition:border-color .12s,box-shadow .12s}.canvas-theme .project-tile:hover{border-color:var(--teal-mid);box-shadow:0 2px 8px #0000000f}.canvas-theme .project-tile__name{font-weight:600;font-size:15px}.canvas-theme .project-tile__slug{font-family:var(--canvas-mono);font-size:11px;color:var(--ink-60);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas-theme .project-tile__meta{font-size:12px;color:var(--ink-60);margin-top:auto;display:flex;justify-content:space-between;gap:8px;align-items:center}.canvas-theme .empty-state{border:1px dashed var(--ink-20);border-radius:12px;padding:60px 20px;text-align:center;background:var(--paper);display:flex;flex-direction:column;align-items:center;gap:12px}.canvas-theme .empty-state h2{font-size:20px;margin:0;color:var(--ink-100)}.canvas-theme .empty-state p{color:var(--ink-60);margin:0 0 12px;max-width:480px;line-height:1.5}.canvas-theme .form-row{display:grid;gap:8px;margin-bottom:16px}.canvas-theme .form-row label{font-size:13px;font-weight:600;color:var(--ink-100)}.canvas-theme .form-row input{height:36px;padding:0 12px;border:1px solid var(--ink-20);border-radius:6px;font-size:14px;background:var(--paper);color:var(--ink-100);font-family:inherit;outline:none}.canvas-theme .form-row input:focus{border-color:var(--teal-mid);box-shadow:0 0 0 3px var(--teal-soft)}.canvas-theme .slug-preview{font-family:var(--canvas-mono);font-size:12px;color:var(--ink-60);padding:8px 10px;background:var(--ink-05);border-radius:4px;border:1px solid var(--ink-10)}.canvas-theme .slug-preview b{color:var(--teal-deep);font-weight:600}.canvas-theme .login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.canvas-theme .login-card{background:var(--paper);border:1px solid var(--ink-10);border-radius:12px;padding:40px 36px;max-width:400px;width:100%;display:flex;flex-direction:column;gap:16px;align-items:center;text-align:center}.canvas-theme .login-card h1{font-size:22px;margin:0;color:var(--ink-100)}.canvas-theme .login-card p{margin:0;color:var(--ink-60);font-size:14px}.canvas-theme .lane--processor-inline{padding:0;gap:0}
