:root{--bg: #ececf0;--panel: #ffffff;--ink: #1f1f24;--muted: #6b6b75;--line: #dcdce2;--accent: #c2185b;--accent-soft: #fbe3ee;--good: #2e7d32;--ok: #b26a00;--low: #c62828}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font:14px/1.4 Noto Sans,system-ui,sans-serif;color:var(--ink);background:var(--bg);display:flex;flex-direction:column}button{font:inherit;cursor:pointer}[hidden]{display:none!important}.topbar{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{font-weight:700;color:var(--accent);white-space:nowrap}.tabs{display:flex;gap:6px;overflow-x:auto;flex:1;padding-bottom:2px}.tabs button{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:5px 10px;font-size:13px;color:var(--muted);white-space:nowrap}.tabs button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.bleed{font-size:13px;color:var(--muted);white-space:nowrap}.cloud-status{font-size:12px;color:var(--muted);white-space:nowrap}.cloud-status.saved{color:var(--good)}.cloud-status.error{color:var(--low)}.primary{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:8px 14px;font-weight:600;white-space:nowrap}.primary:disabled{opacity:.6;cursor:progress}.product-picker{max-width:220px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px;background:var(--panel)}.link-btn{text-decoration:none;white-space:nowrap;font-size:13px}.secondary{background:var(--panel);color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:7px 12px;font-weight:600}.layout{flex:1;display:flex;min-height:0}.sidebar{width:280px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.side-tabs{display:flex;border-bottom:1px solid var(--line)}.side-tabs button{flex:1;border:0;background:none;padding:11px 8px;color:var(--muted);border-bottom:2px solid transparent}.side-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.panel{padding:16px;overflow-y:auto;flex:1}.panel h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px}.group{margin-bottom:20px}.choices{display:flex;flex-wrap:wrap;gap:6px}.choices button{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:6px 10px}.choices button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.choices.schemes{flex-direction:column}.choices.schemes button{display:flex;align-items:center;gap:10px;text-align:left}.swatches{display:inline-flex}.swatch{width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);margin-left:-4px}.swatch:first-child{margin-left:0}.panel input[type=text],.panel textarea{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:6px;font:inherit}.panel textarea{resize:vertical;line-height:1.45}.hint{font-size:12px;color:var(--muted);margin:6px 0 14px}.photo-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}.photo-list{display:flex;flex-direction:column;gap:8px}.photo-row{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:center;padding:6px;border:1px solid var(--line);border-radius:8px}.photo-row.current{border-color:var(--accent)}.thumb{width:64px;height:44px;border-radius:4px;background:#e6e6ea center/cover no-repeat;border:1px dashed #b9b9c2;padding:0}.thumb.filled{border-style:solid;border-color:transparent}.photo-meta{min-width:0}.photo-meta .label{font-weight:600;font-size:13px}.photo-meta .links{font-size:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.photo-meta .links button{border:0;background:none;padding:0;color:var(--accent);font-size:12px}.badge{font-size:11px;font-weight:600;padding:1px 6px;border-radius:8px}.badge.good{color:var(--good);background:#e8f5e9}.badge.ok{color:var(--ok);background:#fff3e0}.badge.low{color:var(--low);background:#ffebee}.stage{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;min-width:0;overflow:auto}.stage.dragging .page{outline:3px dashed var(--accent);outline-offset:6px}.page{box-shadow:0 6px 24px #00000026;background:#fff;line-height:0}.page svg{display:block;width:100%;height:auto}.photo-slot{cursor:pointer}.photo-slot:hover{opacity:.88}.stage{position:relative}.page{touch-action:none}.crop-bar{position:absolute;left:50%;bottom:10px;transform:translate(-50%);display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 12px;box-shadow:0 6px 20px #00000026;max-width:calc(100% - 32px)}.crop-bar .crop-label{font-weight:600}.crop-bar .crop-hint{color:var(--muted);font-size:12px}.crop-bar input[type=range]{width:140px;accent-color:var(--accent)}.crop-bar button{padding:6px 10px;font-size:13px}.ai-group{padding-bottom:16px;border-bottom:1px solid var(--line)}.ai-row{display:flex;gap:10px;align-items:center;margin-bottom:10px}.ai-row .thumb{width:72px;height:54px}.ai-button{width:100%;padding:10px}.ai-button:disabled{opacity:.5;cursor:not-allowed}.ai-status{margin:8px 0 6px}.progress-bar{height:4px;border-radius:2px;background:var(--accent-soft);overflow:hidden;position:relative}.progress-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:35%;background:var(--accent);border-radius:2px;animation:slide 1.4s ease-in-out infinite}@keyframes slide{0%{left:-35%}to{left:100%}}.ai-group .links{margin-top:8px;font-size:12px}.ai-group .links button{border:0;background:none;padding:0;color:var(--accent)}.basket-btn{border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:6px 12px;font-weight:600;white-space:nowrap}.basket-btn.has-items{border-color:var(--accent);color:var(--accent)}.basket-panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--panel);box-shadow:-8px 0 30px #0000002e;display:flex;flex-direction:column;z-index:20}.basket-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}.basket-head h2{margin:0;font-size:17px}.icon-btn{border:1px solid var(--line);background:var(--panel);border-radius:6px;width:32px;height:32px}.basket-items{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.basket-item{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:10px;border:1px solid var(--line);border-radius:10px}.basket-item.editing{border-color:var(--accent);background:var(--accent-soft)}.basket-preview{line-height:0;box-shadow:0 2px 8px #00000026;background:#fff;align-self:start}.basket-preview svg{width:100%;height:auto;display:block}.basket-info{min-width:0;display:flex;flex-direction:column;gap:6px}.basket-info .name{font-weight:700}.basket-info .summary{font-size:12px;color:var(--muted)}.qty{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:6px;width:max-content}.qty button{border:0;background:none;width:28px;height:28px;font-size:16px;color:var(--accent)}.qty span{min-width:26px;text-align:center;font-weight:600}.basket-actions{display:flex;gap:12px;flex-wrap:wrap;font-size:13px}.basket-actions button{border:0;background:none;padding:0;color:var(--accent)}.basket-actions button.danger{color:var(--low)}.basket-foot{border-top:1px solid var(--line);padding:12px 16px;display:flex;flex-direction:column;gap:8px}.basket-foot .total{display:flex;justify-content:space-between;font-weight:600}.basket-foot .primary{width:100%}.editing-note{background:var(--accent-soft);border:1px solid var(--accent);border-radius:8px;padding:8px 10px;font-size:13px;margin-bottom:14px}.editing-note button{border:0;background:none;padding:0;color:var(--accent);font-weight:600}.toast{position:fixed;z-index:30;left:50%;bottom:20px;transform:translate(-50%);background:#1f1f24;color:#fff;padding:10px 16px;border-radius:8px;max-width:min(520px,calc(100% - 32px));box-shadow:0 6px 20px #00000040}@media (max-width: 760px){.topbar{flex-wrap:wrap;gap:8px;padding:8px 10px}.topbar .primary,.topbar .secondary,.basket-btn{padding:6px 10px;font-size:13px}.tabs{order:3;flex-basis:100%}.bleed{display:none}.layout{flex-direction:column}.stage{order:-1;flex:none;height:46vh;padding:12px}.sidebar{width:auto;border-right:0;border-top:1px solid var(--line);flex:1;min-height:0}.crop-bar{bottom:6px;padding:6px 8px;gap:6px}.crop-bar .crop-hint{display:none}.basket-item{grid-template-columns:90px 1fr}}
