:root{--ground: #eae5de;--panel: #f6f2ec;--panel-2: #ffffff;--sunken: #e3ded6;--edge: #ded7cd;--ink: #5c5751;--ink-strong: #3f3a35;--ink-dim: #9c958c;--red: #f0524a;--green: #79bd42;--blue: #37b6dd;--amber: #f0b429;--violet: #9b7fd4;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 0 rgba(90, 80, 65, .08), 0 2px 6px rgba(90, 80, 65, .07);font-family:Avenir Next,Nunito,system-ui,-apple-system,Segoe UI,sans-serif;font-size:12.5px;color:var(--ink);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background:var(--ground)}#app{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-columns:236px minmax(0,1fr) 320px;grid-template-areas:"toolbar toolbar toolbar" "left viewport inspector" "validation validation validation" "statusbar statusbar statusbar";gap:8px;padding:8px;height:100vh;background:var(--ground);color:var(--ink)}#app.drop-target{outline:3px dashed var(--blue);outline-offset:-6px}.toolbar,.left-panel,.inspector,.validation,.statusbar{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-title{color:var(--ink-strong);font-weight:800;letter-spacing:.1em;font-size:11px;text-transform:uppercase}.section-title{color:var(--ink-strong);font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;margin:14px 0 6px;padding-bottom:4px;border-bottom:2px solid var(--edge)}.panel-empty,.panel-note{color:var(--ink-dim);line-height:1.45;padding:3px 0;font-size:11.5px}.hidden{display:none!important}.toolbar{grid-area:toolbar;display:flex;flex-direction:column;gap:6px;padding:8px 10px}.tb-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tb-row.sub{border-top:2px solid var(--edge);padding-top:6px}.tb-spacer{flex:1}.tb-group{display:flex;align-items:center;gap:5px}.tb-group.segmented{gap:0;background:var(--sunken);border-radius:var(--radius-sm);padding:2px}.tb-group.segmented .tb-button{background:transparent;box-shadow:none;border-radius:6px}.tb-group.segmented .tb-button.active{background:var(--panel-2);color:var(--ink-strong);box-shadow:0 1px 3px #5a50412e}.tb-label{color:var(--ink-dim);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.tb-button{background:var(--panel-2);color:var(--ink);border:none;border-radius:var(--radius-sm);padding:6px 11px;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 1px 2px #5a504124;transition:transform .06s ease,background .1s ease,color .1s ease}.tb-button:hover:not(:disabled){transform:translateY(-1px);color:var(--ink-strong)}.tb-button:active:not(:disabled){transform:translateY(0)}.tb-button.active{background:var(--blue);color:#fff}.tb-button.primary{background:var(--green);color:#fff}.tb-button.danger{background:var(--red);color:#fff}.tb-button:disabled{opacity:.4;cursor:default;box-shadow:none}.tb-field{display:flex;align-items:center;gap:5px}.tb-number{width:62px;background:var(--panel-2);border:none;border-radius:6px;color:var(--ink-strong);padding:5px 6px;font:inherit;font-weight:700;box-shadow:0 1px 2px #5a504124}.tb-select{background:var(--panel-2);color:var(--ink);border:none;border-radius:var(--radius-sm);padding:6px 8px;font:inherit;font-weight:700;box-shadow:0 1px 2px #5a504124}.tb-identity{display:flex;align-items:baseline;gap:9px;min-width:0}.tb-name{font-weight:800;font-size:15px;color:var(--ink-strong);letter-spacing:-.01em}.tb-mapid{color:var(--ink-dim);font-weight:700}.tb-hash{color:var(--ink-dim);font-size:10.5px;font-family:ui-monospace,SF Mono,Menlo,monospace}.tb-dirty{color:var(--amber);font-weight:800}.tb-clean{color:var(--ink-dim);font-weight:700}.tb-validation{color:var(--green);font-weight:800;padding:4px 10px;border-radius:999px;background:#79bd4229}.tb-validation.bad{color:var(--red);background:#f0524a26}.hidden-file-input{display:none}.left-panel{grid-area:left;display:flex;flex-direction:column;min-height:0;overflow:hidden}.left-tabs{display:flex;gap:4px;padding:8px 8px 0}.left-tab{flex:1;background:var(--sunken);color:var(--ink-dim);border:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;padding:7px 6px;font:inherit;font-weight:800;letter-spacing:.04em;cursor:pointer}.left-tab.active{background:var(--panel-2);color:var(--ink-strong)}.palette,.materials{flex:1;overflow-y:auto;padding:10px;background:var(--panel-2);margin:0 8px 8px;border-radius:0 0 var(--radius-sm) var(--radius-sm)}.lane-filters{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0 10px}.lane-chip{background:var(--sunken);color:var(--ink-dim);border:none;border-radius:999px;padding:3px 9px;font:inherit;font-size:10.5px;font-weight:700;cursor:pointer}.lane-chip.on{background:#37b6dd33;color:#1d7d9b}.palette-category{display:flex;align-items:center;padding:8px 2px 4px;margin-top:4px;font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-strong);border-top:2px solid var(--edge);cursor:pointer}.palette-category.static{cursor:default}.palette-category:first-of-type{border-top:none}.palette-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;padding:4px 0 8px}.palette-cell{display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--panel);border:2px solid transparent;border-radius:10px;padding:6px 4px;cursor:pointer;color:var(--ink);font:inherit;transition:transform .06s ease,border-color .1s ease}.palette-cell:hover{transform:translateY(-1px);border-color:var(--edge)}.palette-cell.armed{border-color:var(--blue);background:#37b6dd1f}.palette-swatch{width:100%;aspect-ratio:1;border-radius:8px;object-fit:cover;background:#efebe2}.palette-label{font-size:10px;font-weight:700;color:var(--ink-dim);text-align:center;line-height:1.15}.palette-cell.armed .palette-label{color:#1d7d9b}.material-controls{background:var(--panel);border-radius:10px;padding:8px;margin:6px 0 10px}.material-controls .field-label{width:62px}.material-controls .field-input.number{max-width:none;flex:1}.material-controls .tb-button{width:100%;margin-top:6px}.material-active{display:flex;align-items:center;gap:8px;margin-bottom:6px}.material-active .palette-swatch{width:44px;height:44px;flex:none}.material-active-name{font-weight:800;color:var(--ink-strong);font-size:11.5px}.material-chip{display:inline-flex;width:26px;height:26px;border-radius:6px;overflow:hidden;background:var(--sunken);flex:none}.material-chip-img{width:100%;height:100%;object-fit:cover}.viewport{grid-area:viewport;position:relative;overflow:hidden;min-width:0;min-height:0;border-radius:var(--radius);box-shadow:var(--shadow)}.viewport-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair;border-radius:var(--radius)}.viewport-canvas.panning{cursor:grabbing}.viewport-canvas.explore{cursor:grab}.inspector{grid-area:inspector;overflow-y:auto;padding:10px 12px 16px}.field-row{display:flex;align-items:center;gap:6px;margin:5px 0}.field-label{width:84px;flex-shrink:0;color:var(--ink-dim);font-weight:700;font-size:11px}.field-input{flex:1;min-width:0;background:var(--panel-2);border:2px solid var(--edge);border-radius:var(--radius-sm);color:var(--ink-strong);padding:5px 7px;font:inherit;font-weight:600}.field-input:focus{outline:none;border-color:var(--blue)}.field-input.number{max-width:78px}.field-static{color:var(--ink);font-weight:600}.field-checkbox{accent-color:var(--green);width:16px;height:16px}.field-color{width:46px;height:26px;padding:0;border:2px solid var(--edge);border-radius:6px;background:none;cursor:pointer}.field-button{background:var(--sunken);color:var(--ink);border:none;border-radius:6px;padding:4px 9px;font:inherit;font-weight:700;cursor:pointer}.field-button:hover{background:var(--edge)}.validation{grid-area:validation;overflow:hidden}.validation-header{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer}.validation-caret{color:var(--ink-dim);font-weight:800}.validation-summary{color:var(--ink-dim);font-weight:700}.validation-summary.has-issues{color:var(--red)}.validation-body{padding:0 12px 10px;max-height:132px;overflow-y:auto}.validation-ok{color:#4d8c22;font-weight:700;padding:4px 0}.validation-row{display:flex;gap:10px;padding:4px 6px;align-items:baseline;border-radius:6px}.validation-row+.validation-row{border-top:1px solid var(--edge)}.validation-glyph{color:var(--red);font-weight:800}.validation-row.warn .validation-glyph{color:var(--amber)}.validation-row.navigable{cursor:pointer}.validation-row.navigable:hover{background:var(--sunken)}.validation-code{color:var(--red);font-weight:800;min-width:168px;flex-shrink:0;font-size:11.5px}.validation-row.warn .validation-code{color:#a9741a}.validation-path{color:var(--ink-dim);min-width:200px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px}.validation-message{color:var(--ink);flex:1}.validation-detail{color:#a9741a;font-weight:700;flex-shrink:0}.validation-go{color:var(--blue);font-weight:800;flex-shrink:0}.budget-strip{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}.budget-meter{position:relative;display:flex;align-items:baseline;gap:5px;background:var(--sunken);border-radius:999px;padding:3px 10px;overflow:hidden;font-size:10.5px;font-weight:700}.budget-label{color:var(--ink-dim);position:relative;z-index:1}.budget-value{color:var(--ink-strong);position:relative;z-index:1}.budget-fill{position:absolute;left:0;top:0;bottom:0;background:#79bd4247;z-index:0}.budget-meter.near .budget-fill{background:#f0b42957}.budget-meter.over .budget-fill{background:#f0524a57}.statusbar{grid-area:statusbar;display:flex;align-items:center;gap:16px;padding:6px 12px;color:var(--ink-dim);min-height:30px;font-weight:600}.status-coords{min-width:150px;color:var(--ink-strong);font-weight:800;font-family:ui-monospace,SF Mono,Menlo,monospace}.status-selection{color:var(--ink);font-weight:700}.status-hover{color:#1d7d9b;font-weight:700;min-width:140px}.status-toast{margin-left:auto;color:#fff;background:var(--red);padding:3px 12px;border-radius:999px;font-weight:700}.library-host,.wizard-host{display:none}.library-host.open,.wizard-host.open{display:block}.library-scrim,.modal-scrim{position:fixed;inset:0;background:#3c342c52;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);z-index:10}.library-drawer{position:fixed;top:0;left:0;bottom:0;width:360px;background:var(--panel);z-index:11;display:flex;flex-direction:column;overflow:hidden;padding:14px;box-shadow:4px 0 24px #3c342c33}.library-list{flex:1;min-height:0;overflow-y:auto;margin:0 -14px -14px;padding:2px 14px 14px}.library-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.library-head .panel-title{margin-right:auto}.library-drawer{width:420px}.library-controls{display:flex;gap:6px;margin-bottom:10px}.library-controls .field-input{flex:1}.library-row{display:grid;grid-template-columns:96px minmax(0,1fr);grid-template-areas:"thumb info" "thumb actions";gap:4px 10px;background:var(--panel-2);border:2px solid transparent;border-radius:10px;padding:10px;margin-bottom:8px;box-shadow:0 1px 2px #5a50411a}.library-row.stale{border-color:var(--amber)}.library-thumb{grid-area:thumb;width:96px;height:62px;border-radius:7px;overflow:hidden;background:var(--sunken);display:flex;align-items:center;justify-content:center}.library-thumb img{width:100%;height:100%;object-fit:cover;display:block}.library-badges{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:2px}.library-badge{font-size:9px;font-weight:800;letter-spacing:.07em;border-radius:999px;padding:2px 7px}.library-badge.builtin{background:#37b6dd33;color:#1d7d9b}.library-badge.user{background:#79bd4233;color:#4d8c22}.library-badge.stale{background:#f0b42942;color:#96690f}.library-badge.draft{background:#7a6e602e;color:#6b6156}.library-action.primary{background:var(--amber);color:#fff}.library-row.open-doc{border-color:var(--blue)}.library-info{grid-area:info;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-width:0}.library-name{font-weight:800;color:var(--ink-strong);font-size:13px}.library-meta{color:var(--ink-dim);font-size:10.5px;font-weight:600}.library-actions{grid-area:actions;display:flex;gap:5px;flex-wrap:wrap;align-items:flex-end}.library-action{background:var(--sunken);color:var(--ink);border:none;border-radius:6px;padding:3px 10px;font:inherit;font-size:10.5px;font-weight:700;cursor:pointer}.library-action:hover{background:var(--edge)}.wizard-card{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 48px));max-height:calc(100vh - 64px);overflow-y:auto;background:var(--panel);border-radius:16px;padding:20px 22px;z-index:11;box-shadow:0 18px 48px #3c342c47}.wizard-title{font-size:26px;font-weight:800;color:var(--ink-strong);letter-spacing:-.02em;margin-bottom:4px}.wizard-step{font-weight:800;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);margin:16px 0 8px;padding-bottom:4px;border-bottom:2px solid var(--edge)}.wizard-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:6px}.wizard-choice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;background:var(--panel-2);border:2px solid transparent;border-radius:12px;padding:10px;cursor:pointer;font:inherit;text-align:left;color:var(--ink)}.wizard-choice.active{border-color:var(--blue);background:#37b6dd1a}.wizard-choice-title{font-weight:800;color:var(--ink-strong)}.wizard-choice-blurb{color:var(--ink-dim);font-size:10.5px;line-height:1.35}.wizard-glyph{position:relative;display:block;width:100%;height:42px;border-radius:8px;overflow:hidden;background:#cfe4f7}.wizard-glyph.flat{background:#e4f2b4}.wizard-glyph.water{background:#8fceda}.wizard-glyph.void{background:#dfe7ef}.wizard-glyph.void .wizard-glyph-plate{inset:30% 26% 24%;border-radius:8px}.wizard-glyph-plate{position:absolute;inset:34% 18% 18%;border-radius:6px;background:#f0e5b8;box-shadow:0 2px #b9ac86}.wizard-glyph.flat .wizard-glyph-plate{inset:26% 6% 0;border-radius:4px 4px 0 0}.wizard-glyph-under{position:absolute;inset:0;background:linear-gradient(to bottom,#fff6,#fff0)}.wizard-themes{display:flex;gap:6px;flex-wrap:wrap}.wizard-theme{background:var(--panel-2);border:2px solid transparent;border-radius:999px;padding:6px 14px;font:inherit;font-weight:700;color:var(--ink);cursor:pointer}.wizard-theme.active{border-color:var(--green);color:#4d8c22}.wizard-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--edge);border-radius:999px;border:2px solid var(--panel)}::-webkit-scrollbar-thumb:hover{background:#cdc4b7}
