*{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}.toolbar{display:flex;align-items:center;justify-content:center;gap:24px;flex-wrap:wrap;margin-bottom:24px}.template-picker{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#999}.template-select{font:inherit;font-size:14px;font-weight:600;color:#2b2b2b;padding:8px 12px;border:1px solid #ccc;border-radius:8px;background:#fff;cursor:pointer}.template-select:hover{border-color:#999}.view-switch{display:inline-flex;border:1px solid #ccc;border-radius:999px;background:#fff;overflow:hidden}.view-switch button{font:inherit;font-size:14px;font-weight:600;padding:8px 26px;border:none;background:transparent;color:#777;cursor:pointer}.view-switch button+button{border-left:1px solid #ccc}.view-switch button.on{background:#2b2b2b;color:#fff}.main-menu{position:fixed;top:16px;left:16px;z-index:50}.menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid #ccc;border-radius:8px;background:#fff;cursor:pointer}.menu-toggle:hover{border-color:#999}.menu-bars,.menu-bars:before,.menu-bars:after{content:"";display:block;width:18px;height:2px;background:#2b2b2b;border-radius:2px}.menu-bars{position:relative}.menu-bars:before{position:absolute;top:-6px}.menu-bars:after{position:absolute;top:6px}.menu-panel{position:absolute;top:48px;left:0;min-width:240px;display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid #e6e2da;border-radius:10px;background:#fff;box-shadow:0 8px 24px #00000029}.menu-field{display:flex;flex-direction:column;gap:6px;margin-bottom:4px;font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#999}.menu-field input{font:inherit;font-size:14px;font-weight:500;letter-spacing:normal;text-transform:none;color:#2b2b2b;padding:8px 10px;border:1px solid #ccc;border-radius:8px;background:#fff}.menu-field input:focus{outline:none;border-color:#999}.menu-item{font:inherit;font-size:14px;font-weight:600;text-align:left;color:#2b2b2b;padding:9px 10px;border:none;border-radius:8px;background:transparent;cursor:pointer}.menu-item:hover{background:#f4f2ee}.menu-error{font-size:13px;color:#b3261e;margin:2px 2px 0}.about-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#0006}.about-modal{position:relative;max-width:560px;width:100%;max-height:80vh;overflow-y:auto;padding:28px 32px;border-radius:12px;background:#fff;box-shadow:0 12px 40px #0000003d}.about-modal h2{margin:0 0 12px;font-size:20px}.about-modal p{margin:0 0 12px;font-size:15px;line-height:1.6;color:#2b2b2b}.about-modal p:last-child{margin-bottom:0}.about-close{position:absolute;top:12px;right:14px;width:32px;height:32px;padding:0;font-size:22px;line-height:1;color:#666;border:none;border-radius:8px;background:transparent;cursor:pointer}.about-close:hover{background:#f4f2ee;color:#2b2b2b}.results-actions{max-width:1100px;margin:0 auto 16px;display:flex;align-items:center;justify-content:flex-end;gap:12px}.export-button{font:inherit;font-size:14px;font-weight:600;color:#fff;border:none;border-radius:8px;background:#2b2b2b;padding:9px 18px;cursor:pointer}.export-button:hover{background:#444}.export-button:disabled{opacity:.55;cursor:default}.export-error{font-size:13px;color:#b3261e}.results{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:28px 24px}.results .facade{height:auto;aspect-ratio:3 / 4}@media (max-width: 820px){.results{grid-template-columns:repeat(2,1fr)}}@media (max-width: 540px){.results{grid-template-columns:1fr}}.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}.circle-facade{display:flex;flex-direction:column;align-items:center;gap:16px}.circle-svg{width:100%;aspect-ratio:1 / 1;height:auto;display:block;filter:drop-shadow(0 6px 20px rgba(0,0,0,.14))}.circle-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;width:100%;max-width:380px}.circle-legend li{display:flex;align-items:center;gap:10px;font-size:13px}.circle-legend-label{font-weight:600;color:#555}.circle-legend-name{color:#888;margin-left:auto;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visual--mini .circle-facade{gap:0}.visual--mini .circle-svg{filter:drop-shadow(0 3px 10px rgba(0,0,0,.12))}.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}@page{size:A4 landscape;margin:10mm}@media print{body{padding:0;background:#fff}h1,.view-switch,.results-actions,.main-menu{display:none!important}.results{max-width:none;margin:0;gap:14px}.results .visual{break-inside:avoid}.facade{box-shadow:none}}
