.repeat-tools{border-radius:var(--radius-md);z-index:1;background:#e5e5df;margin:0;padding:3px;display:flex}.workspace-view-controls{justify-content:flex-end;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width>=701px){.canvas-heading{align-items:flex-start;gap:var(--space-6)}.canvas-heading .eyebrow{font-size:var(--font-size-sm);letter-spacing:.12em}.canvas-heading h1{margin:var(--space-3) 0 var(--space-2);letter-spacing:-.035em;font-size:clamp(36px,3vw,48px);font-weight:500;line-height:1}.canvas-heading p{font-size:var(--font-size-lg);line-height:1.4}.workspace-view-controls .view-toggle{padding:var(--space-1);border-radius:var(--radius-xl);background:#f0eae3}.workspace-view-controls .view-toggle button{min-height:54px;padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-md);font-weight:700}.workspace-view-controls .view-toggle .active{color:var(--sim-ink);box-shadow:var(--elev-3)}}.relief-toggle{border:1px solid color-mix(in srgb, var(--sim-accent) 18%, transparent)}.canvas{margin-top:var(--space-8);border-radius:var(--radius-2xl);background-color:var(--sim-matrix-ground);box-shadow:none;filter:none;background-image:radial-gradient(circle,#917e652e .7px,#0000 .9px);background-size:24px 24px;position:relative}.canvas-render-layer{opacity:0;pointer-events:none;place-items:center;transition:opacity .28s;display:grid;position:absolute;inset:0}.canvas-render-layer.is-active{opacity:1;pointer-events:auto}.canvas-render-layer--relief{z-index:1}.canvas[data-render-mode=relief]{min-height:clamp(440px,56vh,560px)}.relief-scene{border-radius:inherit;cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.relief-scene.is-dragging{cursor:grabbing}.relief-drag-hint{z-index:2;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-3);color:#fff;box-shadow:var(--elev-3);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);font-size:var(--font-size-xs);letter-spacing:.01em;pointer-events:none;background:#232a26b3;border:1px solid #ffffff73;font-weight:700;transition:opacity .18s,transform .18s;display:inline-flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.relief-drag-hint b{font-size:var(--font-size-lg);line-height:1}.relief-scene.is-dragging .relief-drag-hint{opacity:.35;transform:translate(-50%)translateY(3px)}.relief-scene canvas{display:block;width:100%!important;height:100%!important}@media (prefers-reduced-motion:reduce){.canvas-render-layer,.relief-drag-hint{transition:none}}.repeat-settings{align-self:center;align-items:center;gap:var(--space-2);z-index:1;margin:12px 0 -8px;display:flex}.preview-grid-size{color:var(--sim-muted);font-size:var(--font-size-xs);white-space:nowrap;font-weight:700}.grout-control{min-width:116px;color:var(--sim-muted);font-size:var(--font-size-xs);gap:2px;font-weight:700;display:grid}.layout-control{color:var(--sim-muted);font-size:var(--font-size-xs);gap:2px;font-weight:700;display:grid}.layout-control select{border:1px solid var(--sim-line);border-radius:var(--radius-md);min-width:112px;color:var(--sim-ink);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);background:#fff}.grout-control span{justify-content:space-between;gap:var(--space-2);display:flex}.grout-control output{color:var(--sim-accent)}.grout-control input{width:116px;min-height:var(--control-min);accent-color:var(--sim-accent)}.repeat-tools button{min-height:var(--control-min);white-space:nowrap;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-xs);background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:inline-flex}.repeat-tools button.active{color:var(--sim-accent);box-shadow:var(--elev-1);background:#fff}.toolbar button:disabled{opacity:.3;cursor:not-allowed}.repeat-grid{width:78%;max-width:none;height:auto;display:block;position:relative;overflow:hidden}.repeat-grid>.tile-sprite-defs{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.repeat-grid>.repeat-cell{background:0 0;border:0;margin:0;padding:0;line-height:0;position:absolute;overflow:hidden}.repeat-grid--realistic>.repeat-cell:after{content:"";pointer-events:none;background:radial-gradient(125% 125% at 50% 45%,#0000 72%,#5c4e3a12 100%);position:absolute;inset:0}.repeat-grid>.repeat-cell svg{width:100%;height:100%;transition:transform .2s;display:block}.mobile-matrix-button,.matrix-close{display:none}@media (width<=700px){.canvas[data-render-mode=relief]{min-height:420px}.workspace-view-controls{margin-top:var(--space-3);justify-content:flex-start}.repeat-settings{flex-wrap:wrap;justify-content:center;width:100%;margin-bottom:-4px}.repeat-tools{max-width:100%}.preview-grid-size{text-align:center;flex-basis:100%}.mobile-matrix-button{min-height:var(--control-min);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);background:var(--sim-accent);color:#fff;border:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.canvas.matrix-expanded{z-index:20;min-height:0;padding:var(--space-4);overscroll-behavior:contain;border-radius:0;margin:0;display:block;position:fixed;inset:0;overflow:auto}.matrix-expanded .matrix-close{z-index:2;border-radius:var(--radius-pill);min-height:44px;padding:var(--space-2) var(--space-4);color:var(--sim-accent);box-shadow:var(--sim-shadow);background:#fff;border:0;align-items:center;font-weight:700;display:inline-flex;position:sticky;top:0;left:0}.matrix-expanded .repeat-grid{flex:none;max-width:none;margin:24px auto}}.compose-settings{justify-content:center;align-self:center;align-items:center;gap:var(--space-2);z-index:1;flex-wrap:wrap;margin:10px 0 -6px;display:flex}.compose-hint{color:var(--sim-muted);font-size:var(--font-size-xs);max-width:40ch;font-weight:700}.compose-hint b{color:var(--sim-accent)}.compose-settings button{border:1px solid var(--sim-line);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);background:#fff;font-weight:700}.compose-settings button:disabled{opacity:.38;cursor:not-allowed}.repeat-grid--composing>.repeat-cell--slot{cursor:copy;outline-offset:-2px;outline:1px dashed #0000;transition:outline-color .15s}.repeat-grid--composing>.repeat-cell--slot:hover,.repeat-grid--composing>.repeat-cell--slot:focus-visible{outline-color:#ffffffbf}.repeat-grid>.repeat-cell--drop{outline:2px solid var(--sim-accent);outline-offset:-2px}.repeat-grid>.repeat-cell--placed:before{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 1px 1px #ffffff73}.repeat-grid>.repeat-cell--active{outline:2px solid var(--sim-accent);outline-offset:-2px;z-index:1}.catalog-notice{margin:0 0 var(--space-3);border-left:3px solid var(--sim-accent);padding:var(--space-2);background:var(--sim-soft);color:var(--sim-ink);font-size:var(--font-size-xs);line-height:1.45}.pattern-card--draggable{cursor:grab}.pattern-card--draggable:active{cursor:grabbing}.editing-target{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);background:var(--sim-soft);font-size:var(--font-size-xs);display:flex}.editing-target span{flex:1;font-weight:700}.editing-target small{color:var(--sim-muted);margin-top:2px;font-weight:400;display:block}.editing-target button{border:1px solid var(--sim-line);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);background:#fff;font-weight:700}.compose-shortcut{text-align:center;color:var(--sim-muted);font-size:var(--font-size-xs);flex-basis:100%;font-weight:700}.compose-shortcut kbd{border:1px solid var(--sim-line);border-radius:var(--radius-sm);min-width:16px;padding:1px var(--space-1);color:var(--sim-ink);font:inherit;text-align:center;background:#fff;border-bottom-width:2px;display:inline-block}.repeat-grid--composing>.repeat-cell--empty{background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px);background-position:100% 100%;background-size:100% 100%;box-shadow:inset 0 0 0 1px #ffffff47}.repeat-grid--composing>.repeat-cell--empty:hover,.repeat-grid--composing>.repeat-cell--empty:focus-visible{background-color:#ffffff4d}.quote-panel{border-top:1px solid var(--sim-line);margin-top:var(--space-6);padding-top:var(--space-6)}.quote-panel h2{margin:var(--space-1) 0 var(--space-3)}.design-summary{margin:0 0 var(--space-4);background:var(--sim-soft);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3)}.design-summary div{justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--sim-line);display:flex}.design-summary div:last-child{border:0}.design-summary dt{color:var(--sim-muted);font-size:var(--font-size-xs)}.design-summary dd{font-size:var(--font-size-xs);text-align:right;margin:0;font-weight:700}.quote-panel form{gap:var(--space-2);display:grid}.quote-panel label{gap:var(--space-1);font-size:var(--font-size-xs);font-weight:700;display:grid}.quote-panel input{width:100%;min-height:var(--control-min);box-sizing:border-box;border:1px solid var(--sim-line);border-radius:var(--radius-md);padding:var(--space-2);color:var(--sim-ink);background:#fff}.quote-panel label small,.export-error{color:var(--danger)}.quote-row{gap:var(--space-2);grid-template-columns:1.35fr .65fr;display:grid}.quote-submit{border-radius:var(--radius-pill);background:var(--sim-accent);color:#fff;padding:var(--space-3);border:0;font-weight:700}.quote-note{color:var(--sim-muted);line-height:1.4}.quote-ready{background:var(--sim-soft);border:1px solid var(--sim-clay);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--font-size-xs)}.quote-ready p{color:var(--sim-muted);line-height:1.45}.quote-ready button{color:var(--sim-accent);background:0 0;border:0;padding:0;font-weight:700}.export-error{text-align:center;font-size:var(--font-size-xs);margin:0}@media (width<=700px){.quote-panel{max-width:520px}.quote-row{grid-template-columns:1fr 1fr}}.quote-panel h2{font-family:var(--sim-font)}.search-status{min-height:16px;color:var(--sim-muted);font-size:var(--font-size-xs);margin:-10px 2px 14px;line-height:1.4}.search-status.empty{color:var(--danger)}.repeat-grid>.repeat-cell{line-height:0;overflow:hidden}.repeat-grid>.repeat-cell svg{width:100%;transition:transform .2s;display:block}.swatches button.selected{outline:3px solid var(--accent);outline-offset:2px}.swatches button.selected:after{content:"";width:14px;height:14px;box-shadow:var(--elev-1);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7'/%3E%3C/svg%3E") 50%/10px no-repeat;border-radius:50%;position:absolute;inset:3px auto auto 3px}button:focus-visible,input:focus-visible,[data-part-id]:focus-visible{outline:3px solid var(--accent);outline-offset:3px}[data-part-id][role=button]{cursor:pointer}.editor-tile .active-region{stroke:var(--sim-accent);stroke-width:1.5px;stroke-opacity:.45;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.how-it-works{border:1px solid var(--sim-line);border-radius:var(--radius-pill);color:var(--sim-muted);padding:var(--space-2) var(--space-4);font-size:var(--font-size-xs);margin-right:var(--space-2);background:#fff;font-weight:700}.how-it-works:hover{border-color:var(--sim-accent);color:var(--sim-accent)}.onboarding-overlay{z-index:50;background:#15131073;position:fixed;inset:0}.onboarding-overlay--spotlight{background:0 0}.onboarding-spotlight{border-radius:var(--sim-radius);box-shadow:0 0 0 9999px #15131080, 0 0 0 2px var(--sim-accent);pointer-events:none;transition:top .32s,left .32s,width .32s,height .32s;position:fixed}.onboarding-dialog{border-radius:var(--sim-radius);width:min(360px,100vw - 24px);box-shadow:var(--sim-shadow);padding:var(--space-6) var(--space-6) var(--space-6);background:#fff;transition:top .32s,left .32s;position:fixed}.onboarding-dialog:after{content:"";border:9px solid #0000;width:0;height:0;position:absolute}.onboarding-dialog[data-placement=center]:after{display:none}.onboarding-dialog[data-placement=right]:after{right:100%;top:var(--tour-arrow,50%);border-right-color:#fff;margin-top:-9px}.onboarding-dialog[data-placement=left]:after{left:100%;top:var(--tour-arrow,50%);border-left-color:#fff;margin-top:-9px}.onboarding-dialog[data-placement=bottom]:after{bottom:100%;left:var(--tour-arrow,50%);border-bottom-color:#fff;margin-left:-9px}.onboarding-dialog[data-placement=top]:after{top:100%;left:var(--tour-arrow,50%);border-top-color:#fff;margin-left:-9px}@media (prefers-reduced-motion:reduce){.onboarding-dialog,.onboarding-spotlight{transition:none}}.onboarding-dialog h2{margin:var(--space-1) 0 var(--space-2);font-size:var(--font-size-xl)}.onboarding-dialog p{color:var(--sim-muted);font-size:var(--font-size-sm);margin:0;line-height:1.55}.onboarding-close{width:var(--control-min);height:var(--control-min);color:var(--sim-muted);font-size:var(--font-size-lg);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;line-height:1;display:grid;position:absolute;top:12px;right:12px}.onboarding-close:hover{background:var(--sim-soft);color:var(--sim-accent)}.onboarding-dots{gap:var(--space-1);margin:var(--space-4) 0;display:flex}.onboarding-dots span{background:var(--sim-line);border-radius:50%;width:7px;height:7px}.onboarding-dots span.active{background:var(--sim-accent)}.onboarding-actions{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.onboarding-skip{min-height:var(--control-min);color:var(--sim-muted);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-3);background:0 0;border:0;font-weight:700}.onboarding-skip:hover{color:var(--sim-accent)}.onboarding-nav{gap:var(--space-2);display:flex}.cookie-notice{z-index:40;align-items:center;gap:var(--space-4);border:1px solid var(--sim-line);border-radius:var(--sim-radius);max-width:640px;box-shadow:var(--sim-shadow);padding:var(--space-3) var(--space-4);background:#fff;margin:0 auto;display:flex;position:fixed;bottom:16px;left:16px;right:16px}.cookie-notice p{color:var(--sim-muted);font-size:var(--font-size-xs);flex:1;margin:0;line-height:1.5}@media (width<=700px){.cookie-notice{text-align:center;flex-direction:column;align-items:stretch}.how-it-works{margin-right:var(--space-1);padding:var(--space-2);font-size:var(--font-size-xs)}}.generator-backdrop{z-index:60;padding:var(--space-4);background:#1513108c;place-items:center;display:grid;position:fixed;inset:0}.generator{background:var(--sim-surface);border-radius:var(--sim-radius);width:min(980px,100%);max-height:92vh;box-shadow:var(--sim-shadow);gap:0;display:grid;overflow:auto}.generator-head{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--sim-line);display:flex}.generator-head h2{margin:var(--space-1) 0 0;font-size:var(--font-size-xl)}.generator-body{gap:var(--space-6);padding:var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);display:grid}.generator-controls{gap:var(--space-4);align-content:start;display:grid}.generator-controls fieldset{border:0;margin:0;padding:0}.generator-controls legend{font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--sim-muted);margin-bottom:var(--space-2);font-weight:700}.generator-options{gap:var(--space-1);flex-wrap:wrap;display:flex}.generator-options button{border:1px solid var(--sim-line);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);cursor:pointer;background:#fff;font-weight:600}.generator-options button[aria-pressed=true]{background:var(--sim-soft);border-color:var(--sim-clay);color:var(--sim-accent)}.generator-hint{margin:var(--space-2) 0 0;font-size:var(--font-size-xs);color:var(--sim-muted);line-height:1.4}.generator-color{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);font-size:var(--font-size-xs);grid-template-columns:64px minmax(0,1fr) 26px;font-weight:600;display:grid}.generator-color select{border:1px solid var(--sim-line);border-radius:var(--radius-md);padding:var(--space-2);color:var(--sim-ink);background:#fff;min-width:0}.generator-color i{border-radius:var(--radius-sm);border:1px solid var(--sim-line);height:22px;display:block}.generator-preview{gap:var(--space-3);align-content:start;display:grid}.generator-tile{background:var(--sim-matrix-ground);border-radius:var(--radius-md);padding:var(--space-3);place-items:center;display:grid}.generator-tile svg{width:min(210px,100%);height:auto}.generator-repeat{background:var(--sim-matrix-ground);border-radius:var(--radius-md);place-items:center;min-height:190px;display:grid;position:relative;overflow:hidden}.generator-facts{gap:var(--space-2);grid-template-columns:repeat(3,1fr);margin:0;display:grid}.generator-facts div{background:var(--sim-soft);border-radius:var(--radius-md);padding:var(--space-2)}.generator-facts dt{font-size:var(--font-size-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--sim-muted)}.generator-facts dd{font-size:var(--font-size-sm);margin:2px 0 0;font-weight:700}.generator-issues{padding:var(--space-2) var(--space-3) var(--space-2) var(--space-6);border-radius:var(--radius-md);background:var(--surface-danger);color:var(--danger);font-size:var(--font-size-xs);margin:0;line-height:1.5}.generator-issues--warning{background:var(--surface-warning);color:var(--warning)}.generator-blocked{padding:var(--space-6);text-align:center;color:var(--sim-muted);font-size:var(--font-size-xs);background:var(--sim-matrix-ground);border-radius:var(--radius-md);margin:0}.generator-foot{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);border-top:1px solid var(--sim-line);display:flex}.generator-foot p{font-size:var(--font-size-xs);color:var(--sim-muted);margin:0}@media (width<=820px){.generator-body{grid-template-columns:1fr}}.canvas-generate{z-index:3;align-items:center;gap:var(--space-2);border:1px solid var(--sim-line);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:var(--space-2) var(--space-3) var(--space-2) var(--space-3);font-size:var(--font-size-xs);color:var(--sim-accent);cursor:pointer;box-shadow:var(--elev-3);background:#ffffffeb;font-weight:700;display:flex;position:absolute;top:14px;right:14px}.canvas-generate:hover{box-shadow:var(--elev-4);background:#fff}.canvas-generate svg{flex:none}@media (width<=700px){.canvas-generate span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.canvas-generate{min-width:var(--control-min);min-height:var(--control-min);padding:var(--space-2);border-radius:50%;justify-content:center}}.generator-prompt{gap:var(--space-2);padding-bottom:var(--space-4);border-bottom:1px solid var(--sim-line);display:grid}.generator-prompt textarea{box-sizing:border-box;resize:vertical;border:1px solid var(--sim-line);border-radius:var(--radius-md);width:100%;min-height:64px;padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--font-size-xs);color:var(--sim-ink);background:#fff;line-height:1.5}.generator-prompt textarea:focus-visible{outline:2px solid var(--sim-accent);outline-offset:1px}.generator-prompt-foot{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.generator-prompt-foot small{font-size:var(--font-size-xs);color:var(--sim-muted);font-variant-numeric:tabular-nums}.generator-prompt .generator-hint{margin:0}.generator-prompt .generator-issues{margin-top:2px}.app-shell[data-view=rooms]{--surface-stage:#1b1917;--surface-raised:#24211d;--surface-accent:color-mix(in srgb, var(--accent) 15%, var(--surface-raised));--ink:#f2ece2;--ink-muted:#a79d90;--ink-faint:color-mix(in srgb, var(--ink-muted) 86%, var(--surface-stage));--line:#38322b;--edge:#ffffff3d;--accent:color-mix(in srgb, var(--sim-accent) 62%, #ffd9c8);--surface-frame:#c7bfb6;--elev-5:0 18px 44px #00000073;--catalog-width:280px;--panel-width:262px;grid-template-columns:var(--catalog-width) minmax(0, 1fr) var(--panel-width)}.room-console{background:var(--surface-stage);color:var(--ink)}.app-shell[data-view=rooms] .catalog{border-inline-end-color:var(--line)}.app-shell[data-view=rooms] header{background-image:linear-gradient(to right, var(--sim-line) var(--catalog-width), var(--line) var(--catalog-width));background-position:bottom;background-repeat:no-repeat;background-size:100% 1px;background-origin:border-box;border-block-end-color:#0000}.app-shell main.room-stage{padding:var(--space-4) var(--space-6) var(--space-4);gap:var(--space-3);grid-template-rows:minmax(0,1fr) auto;min-width:0;display:grid}.room-view{gap:var(--space-3);grid-template-rows:minmax(0,1fr) auto;align-content:center;place-items:center;min-height:0;display:grid}.room-frame{isolation:isolate;background:var(--surface-frame);aspect-ratio:4/3;border-radius:var(--radius-sm);max-width:min(100%,1400px);max-height:100%;box-shadow:var(--elev-5);line-height:0;position:relative;overflow:hidden}.room-photo,.room-shading{object-fit:fill;width:100%;height:100%}.room-photo{z-index:1;display:block;position:relative}.room-surface{transform-origin:0 0;pointer-events:none;position:absolute;inset-block-start:0;inset-inline-start:0}.room-shading{mix-blend-mode:hard-light;pointer-events:none;position:absolute;inset-block-start:0;inset-inline-start:0}.room-notice{max-width:62ch;padding:var(--space-3);border-inline-start:3px solid var(--accent);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--surface-raised);color:var(--ink-muted);font-size:var(--font-size-xs);margin:0;line-height:1.5}.room-notice b{color:var(--ink)}.room-footer{justify-content:space-between;align-items:center;gap:var(--space-6);min-width:0;display:flex}.room-caption{gap:2px;min-width:0;display:grid}.room-caption h1{font-size:var(--font-size-xl);letter-spacing:-.01em;margin:0;font-weight:700;line-height:1.15}.room-caption p{font-family:var(--font-data);font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:0}.room-planes{gap:var(--space-1);margin-block-start:1px;display:flex}.room-planes button{padding:3px var(--space-2);border:1px solid var(--line);border-radius:var(--radius-pill);font-family:var(--font-data);font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);cursor:pointer;background:0 0;transition:color .15s,border-color .15s,background-color .15s}.room-planes button:hover{color:var(--ink-muted);border-color:var(--ink-faint)}.room-planes button.active{border-color:var(--accent);background:var(--surface-accent);color:var(--ink)}.room-console .eyebrow{color:var(--accent)}.room-picker{gap:var(--space-2);scrollbar-width:thin;min-width:0;padding-block-end:2px;display:flex;overflow-x:auto}.room-picker button{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;padding:0}.room-thumb{aspect-ratio:4/3;border-radius:var(--radius-sm);background:var(--surface-raised);width:86px;box-shadow:inset 0 0 0 1px var(--line);transition:box-shadow .15s;display:block;overflow:hidden}.room-thumb img{object-fit:cover;opacity:.62;width:100%;height:100%;transition:opacity .15s;display:block}.room-picker button:hover .room-thumb,.room-picker button:focus-visible .room-thumb{box-shadow:inset 0 0 0 1px var(--ink-muted)}.room-picker button:hover .room-thumb img{opacity:.85}.room-picker button.active .room-thumb{box-shadow:inset 0 0 0 2px var(--accent)}.room-picker button.active .room-thumb img{opacity:1}.room-diagram{width:100%;height:100%;display:block}.room-diagram-edge,.room-diagram-plane{fill:none;stroke:var(--line);stroke-width:1px}.room-diagram-plane.is-tiled{fill:color-mix(in srgb, var(--accent) 26%, transparent);stroke:color-mix(in srgb, var(--accent) 55%, transparent)}.room-picker button.active .room-diagram-plane.is-tiled{fill:color-mix(in srgb, var(--accent) 42%, transparent);stroke:var(--accent)}.app-shell aside.room-console{border-inline-start:1px solid var(--line);padding:var(--space-6) var(--space-4) var(--space-6);min-height:0;overflow:auto}.room-sample{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--surface-raised);box-shadow:inset 0 0 0 1px var(--line);place-items:center;display:grid}.room-sample svg{border-radius:var(--radius-sm);filter:drop-shadow(0 6px 12px #0000008c);cursor:pointer;width:100%;max-width:168px;display:block}.room-sample .active-region{stroke:var(--accent);stroke-width:2px;stroke-opacity:.95;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.room-console h2{margin:var(--space-3) 0 3px;font-size:var(--font-size-lg);letter-spacing:-.01em;font-weight:700}.room-spec{font-family:var(--font-data);font-size:var(--font-size-xs);letter-spacing:.04em;font-variant-numeric:tabular-nums;color:var(--ink-muted);margin:0}.room-spec span{opacity:.5}.room-console h3{margin:var(--space-6) 0 var(--space-2);font-size:var(--font-size-xs);color:var(--ink-muted);font-weight:700}.room-console .palette-title h3{margin:0}@media (prefers-reduced-motion:reduce){.room-thumb,.room-thumb img,.room-planes button{transition:none}}@media (width<=1023px){.app-shell[data-view=rooms]{grid-template-columns:minmax(0, 1fr) var(--panel-width)}.app-shell main.room-stage{padding:var(--space-4)}.app-shell[data-view=rooms] header{border-block-end-color:var(--sim-line);background-image:none}}@media (width<=700px){.room-frame{max-height:none}.app-shell main.room-stage{min-height:0}.room-footer{justify-items:start;gap:var(--space-3);display:grid}.room-picker{max-width:100%}.app-shell aside.room-console{border-inline-start:0;border-block-start:1px solid var(--line);order:4}.room-sample svg{max-width:200px}}:root{--sim-font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--sim-bg:#fff;--sim-surface:#fff;--sim-ink:#151310;--sim-muted:#67625c;--sim-accent:#b84a32;--sim-soft:#f9e3de;--sim-clay:#e5b7a8;--sim-sand:#d2c8b9;--sim-action:#151310;--sim-line:#d2c8b9;--sim-matrix-ground:#ede3d6;--sim-matrix-ground-alt:#e5b7a8;--sim-radius:var(--radius-xl);--sim-shadow:0 12px 30px #15131017;font-family:var(--sim-font);color:var(--sim-ink);background:var(--sim-bg)}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{color:inherit}small{font-size:var(--font-size-xs)}:root{--surface-stage:#fdfaf8;--surface-raised:#fff;--surface-accent:var(--sim-soft);--ink:var(--sim-ink);--ink-muted:var(--sim-muted);--ink-faint:var(--sim-muted);--line:var(--sim-line);--edge:#0000001f;--accent:var(--sim-accent);--danger:#a13d35;--surface-danger:color-mix(in srgb, var(--sim-accent) 10%, white);--warning:#7a4a1e;--surface-warning:var(--sim-soft);--font-data:ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace;--catalog-width:420px;--panel-width:330px;--font-size-xs:12px;--font-size-xs--line-height:1.45;--font-size-sm:14px;--font-size-sm--line-height:1.45;--font-size-md:16px;--font-size-md--line-height:1.5;--font-size-lg:18px;--font-size-lg--line-height:1.4;--font-size-xl:20px;--font-size-xl--line-height:1.3;--font-size-2xl:24px;--font-size-2xl--line-height:1.25;--font-size-3xl:30px;--font-size-3xl--line-height:1.2;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:28px;--radius-pill:999px;--elev-1:0 1px 3px #15131029;--elev-2:0 2px 8px #1513102e;--elev-3:0 6px 16px #15131033;--elev-4:0 10px 24px #15131042;--elev-5:0 18px 40px #15131052;--control-min:32px}@media (width<=700px),(pointer:coarse){:root{--control-min:44px}}@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-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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}}}@layer theme{:root,:host{--color-gray-200:oklch(92.8% .006 264.531);--spacing:var(--space-1);--text-xs:var(--font-size-xs);--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--font-data:var(--font-data)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-20{height:calc(var(--space-1) * 20)}.h-screen{height:100vh}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.resize{resize:both}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gap-0\.5{gap:calc(var(--space-1) * .5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gray-200{background-color:var(--color-gray-200)}.bg-surface-raised{background-color:var(--surface-raised)}.px-4{padding-inline:calc(var(--space-1) * 4)}.px-6{padding-inline:calc(var(--space-1) * 6)}.lowercase{text-transform:lowercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.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-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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)}.ring-\[var\(--sim-color-accent\)\]{--tw-ring-color:var(--sim-color-accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.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,)}.grayscale{--tw-grayscale:grayscale(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))}.\[version-update\:semver-major\]{version-update:semver-major}}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}.sim-button:not(.sim-button--plain){min-height:var(--control-min)}.sim-button--icon,.sim-button--toolbar{min-width:var(--control-min)}.sim-button{justify-content:center;align-items:center;gap:var(--space-2);font:inherit;cursor:pointer;border:0;transition:background-color .15s,color .15s,box-shadow .15s,transform .15s;display:inline-flex}.sim-button:active:not(:disabled){transform:translateY(1px)}.sim-button:disabled{cursor:not-allowed;opacity:.35}.sim-button--primary{background:var(--sim-accent);color:#fff;border-radius:var(--radius-pill);font-weight:700}.sim-button--ghost{color:var(--sim-ink);border-radius:var(--radius-md);background:0 0}.sim-button--toolbar{color:var(--sim-ink);background:0 0}.sim-button--plain{color:inherit;background:0 0;padding:0}.sim-button--sm{padding:var(--space-2);font-size:var(--font-size-xs)}.sim-button--md{padding:var(--space-2) var(--space-3)}.sim-button--lg{padding:var(--space-3) var(--space-4)}.sim-button--icon{width:44px;height:44px;padding:0}.sim-button__icon{place-items:center;line-height:1;display:inline-grid}.sim-button__label{display:inline}.sim-icon{flex:none}.segmented-icon{vertical-align:-.2em;align-items:center;margin-inline-end:var(--space-2);display:inline-flex}.sim-button__icon{font-style:normal}@media (width<=700px){.toolbar .sim-button__label{display:none}}.app-shell{grid-template:72px 1fr / var(--catalog-width) minmax(0,1fr) var(--panel-width);min-height:100vh;display:grid}.app-shell header{padding:0 var(--space-6);background:var(--sim-surface);border-bottom:1px solid var(--sim-line);z-index:2;grid-column:1/-1;align-items:center;display:flex}.brand{align-items:center;width:396px;display:flex}.brand-logo{object-fit:contain;width:184px;height:40px;display:block}.app-shell nav{gap:var(--space-6);height:100%;margin:auto;display:flex}.app-shell nav button{align-items:center;gap:var(--space-2);color:var(--sim-muted);min-height:var(--control-min);background:0 0;border:0;display:flex;position:relative}.app-shell nav button svg{flex:none}.app-shell nav button.active{color:var(--sim-ink);font-weight:700}.app-shell nav button.active:after{content:"";background:var(--sim-accent);height:3px;position:absolute;bottom:0;left:0;right:0}.share{color:#fff;border-radius:var(--radius-pill);padding:var(--space-3) var(--space-4);border:0;font-weight:700}.catalog,.palette-panel{background:var(--sim-surface);padding:var(--space-6) var(--space-4);overflow:auto}.catalog{border-right:1px solid var(--sim-line)}.palette-panel{border-left:1px solid var(--sim-line)}.panel-title{justify-content:space-between;align-items:center;display:flex}.eyebrow{color:var(--sim-accent);font-size:var(--font-size-xs);letter-spacing:.13em;font-weight:800}.panel-title h2,.canvas-heading h1{margin:var(--space-1) 0 var(--space-4)}.count{color:var(--sim-accent);border-radius:var(--radius-xl);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs)}.search{min-height:var(--control-min);align-items:center;gap:var(--space-2);border:1px solid var(--sim-line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-4);display:flex}.search input{border:0;outline:0;align-self:stretch;width:100%}.pattern-grid{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.pattern-card{border:1px solid var(--sim-line);border-radius:var(--radius-md);padding:var(--space-2);text-align:left;background:#fff}.pattern-card.selected{border:2px solid var(--sim-accent);padding:var(--space-1)}.pattern-card svg{border-radius:var(--radius-sm);width:100%;display:block}.pattern-card span{gap:var(--space-1);margin:var(--space-1) 1px 1px;font-size:var(--font-size-xs);display:flex}.pattern-card strong{color:var(--sim-accent)}.app-shell main{padding:var(--space-6) var(--space-8);background:var(--surface-stage);min-width:0;color:var(--ink);flex-direction:column;display:flex}.canvas-heading{justify-content:space-between;align-items:end;display:flex}.canvas-heading h1{font-size:var(--font-size-3xl);margin-bottom:3px}.canvas-heading p{color:var(--sim-muted);font-size:var(--font-size-xs);margin:0}.view-toggle{border-radius:var(--radius-md);padding:3px;display:flex}.view-toggle button{min-height:var(--control-min);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-xs);background:0 0;border:0}.view-toggle .active{box-shadow:var(--elev-1);background:#fff}.canvas{min-height:380px;margin:var(--space-4) 0 var(--space-3);border-radius:var(--radius-xl);background-color:var(--sim-matrix-ground);background-image:radial-gradient(circle,var(--sim-matrix-ground-alt) 1px,transparent 1.5px);background-size:10px 10px;flex:1;place-items:center;display:grid;overflow:hidden}.editor-tile{filter:drop-shadow(0 20px 22px #423a2b55);width:min(52vh,70%);transition:transform .25s}.active-region{stroke:var(--surface-raised);stroke-width:4px;stroke-dasharray:5 4}.repeat-grid{width:min(58vh,78%);box-shadow:var(--elev-5);grid-template-columns:repeat(4,1fr);display:grid}.repeat-grid button{background:0 0;border:0;padding:0;line-height:0;overflow:hidden}.repeat-grid svg{width:100%;transition:transform .2s;display:block}.toolbar{padding:var(--space-2);border-radius:var(--radius-lg);box-shadow:var(--sim-shadow);background:#fff;align-self:center;display:flex}.toolbar button{min-height:var(--control-min);padding:var(--space-2) var(--space-3);border:0;border-right:1px solid var(--sim-line);background:0 0}.toolbar button:last-child{border:0}.toolbar .on{color:var(--sim-accent)}.palette-panel h3{font-size:var(--font-size-xs);margin:var(--space-3) 0 var(--space-2)}.parts{gap:var(--space-2);display:grid}.parts button{min-height:var(--control-min);align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--line);background:var(--surface-raised);color:var(--ink);border-radius:var(--radius-md);text-align:left;display:flex}.parts button.active{border-color:var(--accent)}.parts i{border-radius:var(--radius-md);border:1px solid var(--edge);width:32px;height:32px}.parts span{font-size:var(--font-size-xs);flex:1;font-weight:700}.parts small{color:var(--ink-muted);margin-top:2px;font-weight:400;display:block}.parts b{font-size:var(--font-size-xl);color:var(--ink-muted)}.palette-title{margin-top:var(--space-6);justify-content:space-between;align-items:center;display:flex}.palette-title small{color:var(--ink-faint);font-family:var(--font-data);font-size:var(--font-size-xs)}.swatches{display:grid}.swatches button{aspect-ratio:1;border:1px solid var(--edge);position:relative}.swatches span{font-size:var(--font-size-xs);color:#111;border-radius:var(--radius-sm);background:#fffa;padding:1px;position:absolute;bottom:2px;right:3px}.tip{margin-top:var(--space-6);border-left:3px solid var(--accent);padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);line-height:1.5}.tip p{color:var(--ink-muted);margin:var(--space-1) 0;line-height:1.5}.swatches{gap:var(--space-2);grid-template-columns:repeat(6,minmax(0,1fr));width:100%}.swatches button{border-color:var(--edge);cursor:pointer;border-radius:50%;transition:transform .15s,box-shadow .15s;box-shadow:inset 0 1px #ffffff38}.swatches button:hover{box-shadow:inset 0 1px 0 #ffffff38,var(--elev-2);transform:translateY(-1px)}.share{background:var(--sim-action)}.count{background:var(--sim-soft)}.view-toggle{background:color-mix(in srgb,var(--sim-sand) 46%,white)}.parts button.active,.tip{background:var(--surface-accent)}.preset-palette-list{gap:var(--space-2);display:grid}.preset-palette-list>button{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--ink);font:inherit;text-align:left;cursor:pointer;grid-template-columns:72px 1fr 18px;display:grid}.preset-palette-list>button:hover{border-color:var(--accent)}.preset-palette-list>button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}.preset-palette-list>button.selected{border-color:var(--accent);background:var(--surface-accent);font-weight:700}.preset-colors{border:1px solid var(--edge);border-radius:var(--radius-md);height:28px;display:flex;overflow:hidden}.preset-colors i{flex:1}.preset-palette-list b{color:var(--accent);text-align:center}.brand-mark,.brand strong,.panel-title h2,.canvas-heading h1{font-family:var(--sim-font)}.app-shell main .canvas{background-color:var(--sim-matrix-ground);box-shadow:none;filter:none;background-image:radial-gradient(circle,#917e652e .7px,#0000 .9px);background-size:24px 24px}@media (width<=1023px){.app-shell{grid-template:64px auto auto/1fr 310px}.catalog{gap:var(--space-3);border-right:0;border-bottom:1px solid var(--sim-line);padding:var(--space-3);grid-column:1/-1;display:flex;overflow-x:auto}.catalog .panel-title{display:none}.pattern-grid{display:flex}.pattern-card{min-width:100px}.brand{width:auto}.app-shell nav{z-index:5;height:auto;padding:var(--space-1) var(--space-2) max(var(--space-1),env(safe-area-inset-bottom));background:var(--sim-surface);border-top:1px solid var(--sim-line);box-shadow:var(--elev-3);justify-content:space-around;gap:0;margin:0;display:flex;position:fixed;inset:auto 0 0}.app-shell nav button{font-size:var(--font-size-xs);flex-direction:column;flex:1;justify-content:center;gap:2px}.app-shell nav button.active:after{display:none}.app-shell nav button.active{color:var(--sim-accent)}.app-shell{padding-bottom:calc(var(--space-8) + var(--space-6))}.app-shell header{justify-content:space-between}.app-shell main,.palette-panel{padding:var(--space-4)}.app-shell header nav{gap:var(--space-1)}.app-shell header nav button{padding-inline:var(--space-2);font-size:var(--font-size-xs)}.how-it-works{display:none}.brand-logo{width:132px}.share{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}}@media (width<=700px){.app-shell header{padding-inline:var(--space-2)}.brand{display:none}.share{padding-inline:var(--space-2)}.app-shell{flex-direction:column;display:flex}.catalog{order:2}.app-shell main{padding:var(--space-4);order:3;min-height:620px}.palette-panel{border:0;order:4}.canvas-heading{display:block}.view-toggle{margin-top:var(--space-3)}.canvas{min-height:340px}.editor-tile{width:72%}.toolbar{position:sticky;bottom:8px}.toolbar span{display:none}.swatches{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (width>=1024px){.app-shell{height:100vh;overflow:hidden}.catalog{flex-direction:column;min-height:0;display:flex;overflow:hidden}.palette-panel,.app-shell main{min-height:0;overflow-y:auto}.catalog .panel-title{align-items:flex-start}.catalog .panel-title .eyebrow{font-size:var(--font-size-sm);letter-spacing:.12em}.catalog .panel-title h2{margin:var(--space-3) 0 var(--space-6);font-size:var(--font-size-3xl);letter-spacing:-.035em;font-weight:600;line-height:1.05}.catalog .count{display:none}}.catalog .search{align-items:center;gap:var(--space-3);min-height:52px;margin-bottom:var(--space-4);border-color:color-mix(in srgb, var(--sim-sand) 72%, white);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);background:color-mix(in srgb, var(--sim-sand) 24%, white);color:var(--sim-muted)}.catalog .search input{color:var(--sim-ink);font-size:var(--font-size-md);background:0 0}.catalog .search input::placeholder{color:var(--sim-muted);opacity:1}.catalog-filters,.catalog-subfilters{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;flex:none;padding-bottom:2px;display:flex;overflow:visible}.catalog-filters button,.catalog-subfilters button{border:1px solid var(--sim-line);border-radius:var(--radius-pill);color:var(--sim-muted);min-height:var(--control-min);padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);text-transform:capitalize;background:#fff;flex:none;font-weight:700}.catalog-filters button.active,.catalog-subfilters button.active{border-color:var(--sim-accent);background:var(--sim-accent);color:#fff}.catalog .search-status{margin:0 2px var(--space-2);flex:none}.catalog-load-status{margin:0 2px var(--space-2);border-radius:var(--radius-md);padding:var(--space-2);background:var(--sim-soft);color:var(--sim-muted);font-size:var(--font-size-xs);flex:none}.catalog-load-status--error{background:var(--surface-danger);color:var(--danger)}.catalog .pattern-grid{grid-template-columns:repeat(var(--catalog-columns,3), minmax(0, 1fr));gap:var(--space-2);min-height:0;padding:2px var(--space-1) var(--space-3) 2px;scrollbar-gutter:stable;grid-auto-rows:max-content;align-content:start;overflow-y:auto}.pattern-grid-virtual{position:relative}.pattern-grid-virtual--rows{grid-column:1/-1;width:100%}.pattern-virtual-row{grid-template-columns:repeat(var(--catalog-columns,3), minmax(0, 1fr));gap:var(--space-2);width:100%;padding-bottom:var(--space-2);display:grid;position:absolute;top:0;left:0}.pattern-card{min-width:0;overflow:hidden}.catalog .pattern-card{border-color:color-mix(in srgb, var(--sim-sand) 72%, white);border-radius:var(--radius-lg);padding:var(--space-2)}.catalog .pattern-card.selected{border-color:var(--sim-accent);background:var(--sim-soft);padding:var(--space-2)}.pattern-card .pattern-thumbnail{aspect-ratio:1.35;border-radius:var(--radius-md);background:color-mix(in srgb, var(--sim-sand) 38%, white);place-items:center;width:100%;margin:0;display:grid;overflow:hidden}.pattern-thumbnail>*{grid-area:1/1}.pattern-card .pattern-stage{aspect-ratio:1;place-self:center;place-items:center;width:66.7%;height:90%;margin:0;display:grid;overflow:visible}.pattern-card .pattern-artwork{flex:none;place-items:center;gap:0;max-width:100%;max-height:100%;margin:0;line-height:0;transition:width .2s,height .2s;display:grid;overflow:visible}.pattern-card .pattern-3d-badge{z-index:2;min-width:30px;margin:var(--space-2);padding:var(--space-1);border-radius:var(--radius-pill);background:var(--sim-accent);box-shadow:var(--elev-2);color:#fff;font-size:var(--font-size-xs);letter-spacing:.08em;border:1px solid #ffffffb3;justify-content:center;place-self:start end;align-items:center;font-weight:900;line-height:1;display:inline-flex}.pattern-artwork picture{display:contents}.pattern-artwork img{border-radius:var(--radius-sm);object-fit:contain;width:100%;max-width:100%;height:100%;max-height:100%;display:block;overflow:visible}.pattern-card .pattern-scale-legend{display:none}.pattern-scale-legend i{min-width:1px;height:4px;margin-left:var(--space-1);opacity:.65;border:1px solid #50605b;border-top-width:0;display:block}.pattern-scale-legend small{margin-left:var(--space-1);color:#50605b;font-size:var(--font-size-xs);opacity:.75;font-weight:700;line-height:1}.pattern-card .pattern-caption{min-width:0;margin:var(--space-2) 1px 2px;align-items:center;gap:2px;display:grid}.pattern-caption strong{min-width:0;color:var(--sim-ink);font-size:var(--font-size-xs);text-overflow:ellipsis;white-space:nowrap;font-weight:800;line-height:1.15;overflow:hidden}.pattern-caption small{color:var(--sim-muted);font-size:var(--font-size-xs);line-height:1.15}@media (width<=1023px){.catalog{grid-template-columns:1fr;display:grid;overflow:visible}.catalog .catalog-filters,.catalog .catalog-subfilters,.catalog .search-status{display:flex}.catalog .pattern-grid{align-items:flex-start;min-width:0;display:flex;overflow:auto hidden}.pattern-grid-virtual--horizontal{flex:none;display:grid}.pattern-virtual-card{padding-right:var(--space-2);grid-area:1/1}.pattern-virtual-card .pattern-card{width:100%}}@media (width>=1024px) and (width<=1199px){.app-shell{grid-template-columns:360px minmax(0,1fr) 300px}.brand{width:336px}}.favorites-bar{margin-bottom:var(--space-3);flex:none}.favorites-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.favorites-header h3{color:var(--sim-muted);font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;margin:0;font-weight:800}.favorites-save{min-height:var(--control-min);align-items:center;gap:var(--space-1);border:1px solid var(--sim-line);border-radius:var(--radius-pill);color:var(--sim-muted);padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);background:#fff;font-weight:700;display:inline-flex}.favorites-save span{color:var(--sim-accent);font-size:var(--font-size-xs)}.favorites-save.saved{border-color:var(--sim-accent);background:var(--sim-soft);color:var(--sim-ink)}.favorites-list{gap:var(--space-2);padding:2px 2px var(--space-1);margin:0;list-style:none;display:flex;overflow-x:auto}.favorites-list li{flex:none;position:relative}.favorites-item{border:1px solid color-mix(in srgb, var(--sim-sand) 72%, white);border-radius:var(--radius-md);width:52px;height:52px;padding:var(--space-1);background:color-mix(in srgb, var(--sim-sand) 38%, white);display:block;overflow:hidden}.favorites-item picture,.favorites-item img{border-radius:var(--radius-sm);width:100%;height:100%;display:block}.favorites-item picture{transform-origin:50%}.favorites-item img{object-fit:contain}.favorites-item-badge{background:var(--sim-accent);color:#fff;width:14px;height:14px;font-size:var(--font-size-xs);border-radius:50%;place-items:center;line-height:1;display:grid;position:absolute;inset:auto auto 2px 2px}.favorites-remove{border:1px solid var(--sim-line);width:24px;height:24px;color:var(--sim-muted);box-shadow:var(--elev-1);background:#fff;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-5px;right:-5px}.favorites-remove:hover{border-color:var(--sim-accent);color:var(--sim-accent)}.favorites-empty{color:var(--sim-muted);font-size:var(--font-size-xs);margin:0;line-height:1.4}
