*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Helvetica,Arial,sans-serif;background:#f4f2ee;color:#2b2b2b;padding:16px 24px;-webkit-print-color-adjust:exact;print-color-adjust:exact}h1{font-weight:600;font-size:26px;text-align:center;margin-bottom:16px}.workspace{max-width:1100px;margin:0 auto;display:flex;align-items:flex-start;gap:36px}.workspace-left{flex:0 0 calc(60% - 18px);max-width:calc(60% - 18px);display:flex;flex-direction:column;gap:18px}.workspace-right{flex:0 0 calc(40% - 18px);max-width:calc(40% - 18px);display:flex;flex-direction:column;gap:16px}.combination{display:flex;flex-direction:column;gap:12px;padding:12px 14px;border:1px solid #e6e2da;border-radius:10px;background:#faf9f6}.combination.is-collapsed{gap:0}.combination-header{display:flex;align-items:center;gap:6px}.combination-body{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);column-gap:10px;row-gap:12px;align-items:center;justify-items:start}.combination-name{flex:1;min-width:0;font:inherit;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:#999;font-weight:600;padding:3px 6px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:text}.combination-name:hover{border-color:#ddd}.combination-name:focus{outline:none;border-color:#bbb;background:#fff;color:#555}.collapse-toggle{font:inherit;font-size:11px;line-height:1;color:#777;border:none;background:transparent;cursor:pointer;padding:4px}.combo-action{font:inherit;font-size:14px;line-height:1;color:#777;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;padding:4px 7px}.combo-action:hover{border-color:#ccc;color:#333}.combo-action:disabled{opacity:.3;cursor:default;border-color:transparent;color:#777}.add-combination{font:inherit;font-size:13px;font-weight:600;color:#666;border:1px dashed #bbb;border-radius:10px;background:transparent;padding:12px;cursor:pointer}.add-combination:hover{border-color:#888;background:#faf9f6;color:#333}.visual-title{font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:#999;font-weight:600;margin-bottom:10px}.ribbon{display:flex;gap:14px;overflow-x:auto;margin-top:-12px;padding:8px 2px 6px;border-top:1px solid #e6e2da}.visual--mini{flex:0 0 auto;width:132px;display:flex;flex-direction:column;gap:6px;cursor:pointer;background:none;border:none;padding:0}.visual--mini .facade{height:155px;border-radius:8px;box-shadow:0 3px 10px #0000001f}.visual--mini:hover .facade{box-shadow:0 5px 16px #00000038}.visual--mini.is-active .facade{outline:3px solid #2b2b2b;outline-offset:2px}.visual--mini.is-active .visual-mini-name{color:#2b2b2b}.visual--mini:focus-visible{outline:2px solid #2b2b2b;outline-offset:3px;border-radius:10px}.visual--mini .tag{display:none}.visual--mini .band-wall{padding:10% 8% 0}.visual--mini .window{width:16px;height:48%;border-width:3px;border-radius:1px}.visual-mini-name{font-size:12px;color:#555;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 820px){.workspace{flex-direction:column;align-items:center}.workspace-left{flex:0 0 auto;max-width:100%}}.control{display:contents}.control-title{font-size:13px;color:#555;font-weight:600}.preview-chip{width:22px;height:22px;border-radius:5px;background-size:cover;background-position:center;box-shadow:inset 0 0 0 1px #0000001f}.seg{display:inline-flex;border:1px solid #ccc;border-radius:8px;overflow:hidden}.seg button{font:inherit;font-size:12px;padding:5px 10px;border:none;background:#fff;color:#777;cursor:pointer}.seg button+button{border-left:1px solid #ccc}.seg button.on{background:#2b2b2b;color:#fff}.picker,.uploader{position:relative;display:inline-flex;max-width:100%}.uploader{flex-wrap:wrap}.uploader-error{flex-basis:100%;margin-top:4px;font-size:12px;color:#b3261e}.picker-trigger{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13px;padding:6px 10px;border:1px solid #ccc;border-radius:8px;background:#fff;cursor:pointer}.picker-trigger:hover{border-color:#999}.picker-trigger{max-width:100%}.picker-current{min-width:64px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-trigger .caret{color:#999;font-size:11px}.picker-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:#fff;border:1px solid #ddd;border-radius:10px;box-shadow:0 10px 30px #0000002e;padding:12px;max-height:62vh;max-width:min(86vw,700px);overflow:auto}.matrix{display:grid;gap:4px;align-items:center}.matrix-corner,.matrix-head{position:sticky;top:0;background:#fff;z-index:1}.matrix-head{font-size:11px;color:#999;font-weight:700;text-align:center;padding-bottom:3px}.matrix-rowlabel{font-size:12px;color:#555;padding-right:10px;white-space:nowrap;text-align:right}.matrix-swatch{width:28px;height:28px;padding:0;border:none;border-radius:4px;cursor:pointer;box-shadow:inset 0 0 0 1px #00000014;transition:transform .08s}.matrix-swatch:hover{box-shadow:inset 0 0 0 1px #0000004d;transform:scale(1.15)}.matrix-swatch.is-selected{outline:2px solid #2b2b2b;outline-offset:1px}.matrix-empty{width:28px;height:28px}.facade{width:100%;display:flex;flex-direction:column;height:620px;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #00000024}.band{background-size:cover;background-position:center;position:relative}.band-wall{display:flex;align-items:flex-start;justify-content:space-around;padding:9% 6% 0}.window{width:92px;height:54%;background:linear-gradient(135deg,#cfdae1,#aebfc9 42%,#dde6ea 52%,#b6c6cf);border:10px solid #2b2b2b;border-radius:2px;box-shadow:0 3px 9px #0000004d}.tag{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:12px;padding:3px 10px;border-radius:12px;background:#ffffffd9;color:#333;font-weight:600}.band-wall .tag{top:auto;bottom:14px;transform:none}.error-fallback{max-width:480px;margin:15vh auto 0;padding:0 24px;text-align:center}.error-fallback h1{font-size:20px;margin:0 0 8px}.error-fallback p{color:#555;margin:0 0 16px}.error-fallback button{font:inherit;font-size:14px;padding:8px 16px;border:none;border-radius:8px;background:#2b2b2b;color:#fff;cursor:pointer}.error-fallback button:hover{background:#444}
