:root{color:#273140;--cell-size:22px;background:#fbfaf8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#fbfaf8;min-width:320px;margin:0}button,input,select{font:inherit}button,label{cursor:pointer}button:focus-visible,label:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #2ca77b3d}.app-shell{color:#273140;min-height:100vh}.topbar{z-index:10;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffeb;border-bottom:1px solid #e8edf0;grid-template-columns:minmax(220px,280px) 1fr;align-items:center;gap:24px;height:72px;padding:0 24px;display:grid;position:sticky;top:0}.brand{letter-spacing:0;align-items:center;gap:12px;font-size:28px;font-weight:800;display:flex}.brand>span>span{color:#ff706f}.brand-mark{object-fit:contain;width:40px;height:40px;image-rendering:pixelated;border-radius:12px;display:block;box-shadow:0 10px 22px #2ca77b29}.workflow-tabs{justify-content:center;align-items:stretch;gap:44px;height:100%;display:flex}.workflow-tabs button,.workflow-tabs .tab-action{color:#727b8b;background:0 0;border:0;border-bottom:3px solid #0000;justify-content:center;align-items:center;gap:10px;min-width:112px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.workflow-tabs button.active,.workflow-tabs .tab-action.active{color:#2c9f79;border-bottom-color:#2c9f79}.workspace-grid{grid-template-columns:320px minmax(560px,1fr) 360px;min-height:calc(100vh - 72px);display:grid}.panel{background:#fff;border-right:1px solid #e9edf0;padding:22px;overflow:auto}.right-panel{border-left:1px solid #e9edf0;border-right:0}.left-panel,.canvas-panel,.right-panel .section-block{scroll-margin-top:92px}.section-block{border-bottom:1px solid #eceff2;margin-bottom:20px;padding-bottom:20px}.section-block h2{letter-spacing:0;margin:0 0 14px;font-size:16px;line-height:1.3}.section-title-row{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.section-title-row h2{margin:0}.section-title-row label{color:#23866c;background:#eefaf5;border:1px solid #42ad8b;border-radius:7px;align-items:center;height:30px;padding:0 10px;font-size:13px;font-weight:800;display:inline-flex}.dropzone-input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.upload-box{text-align:center;color:#488a78;cursor:pointer;background:linear-gradient(#f8fffc,#f6fbfa);border:1.5px dashed #54b899;border-radius:8px;outline:none;place-content:center;gap:8px;height:144px;display:grid;position:relative}.upload-box:hover,.upload-box:focus-visible{background:#f2fcf8;border-color:#2ca77b;box-shadow:0 0 0 3px #2ca77b1f}.upload-box strong{color:#466270;pointer-events:none;font-size:15px}.upload-box span{color:#8893a2;pointer-events:none;font-size:13px}.upload-box svg{pointer-events:none}.source-preview,.source-empty{background:#f4f6f6;border-radius:8px;margin-top:14px;position:relative;overflow:hidden}.source-preview img{object-fit:contain;width:100%;height:auto;display:block}.source-preview button{color:#4d5662;background:#ffffffe6;border:0;border-radius:50%;width:28px;height:28px;position:absolute;top:10px;right:10px}.source-empty{color:#8b96a6;text-align:center;place-content:center;gap:8px;min-height:132px;font-size:13px;display:grid}.preset-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.preset-grid button,.tool-group button,.tool-button{color:#4a5565;background:#fff;border:1px solid #dfe5e8;border-radius:7px;height:32px;font-size:13px;font-weight:700}.preset-grid button.selected{color:#27866e;background:#eefaf5;border-color:#46b493}.preset-grid button{white-space:nowrap;min-width:0;padding:0 8px}.dimension-row{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.dimension-row label,.select-label{color:#56606f;gap:7px;min-width:0;font-size:13px;font-weight:700;display:grid}.dimension-row input,.select-label select{color:#303b4a;background:#fff;border:1px solid #dfe5e8;border-radius:8px;outline:none;width:100%;height:42px;padding:0 12px}.select-label select{appearance:none;text-overflow:ellipsis;white-space:nowrap;background-image:linear-gradient(45deg,#0000 50%,#697586 50%),linear-gradient(135deg,#697586 50%,#0000 50%);background-position:calc(100% - 18px),calc(100% - 12px);background-repeat:no-repeat;background-size:6px 6px;min-width:0;padding-right:38px;overflow:hidden}.dimension-row input[aria-invalid=true]{background:#fff7f7;border-color:#ff7772}.hint{color:#8290a0;margin:10px 0 0;font-size:13px;line-height:1.5}.dimension-error{color:#bf3d3a;font-weight:700}.primary-action{color:#fff;background:#ff6f6b;border:0;border-radius:8px;justify-content:center;align-items:center;gap:10px;width:100%;height:54px;font-size:18px;font-weight:800;display:flex;box-shadow:0 12px 24px #ff6f6b42}.primary-action:disabled{opacity:.68;cursor:not-allowed;box-shadow:none}.error-banner,.warning-banner{border-radius:8px;margin-bottom:12px;padding:12px;font-size:13px;line-height:1.45}.error-banner{color:#be3a3a;background:#fff1f1}.warning-banner{color:#8a6417;background:#fff8e7}.canvas-panel{background:#fbfaf8;min-width:0;padding:22px 24px;overflow:hidden}.canvas-toolbar{justify-content:space-between;align-items:center;gap:14px;margin-bottom:22px;display:flex}.tool-group{background:#fff;border:1px solid #e1e6e9;border-radius:8px;align-items:center;display:inline-flex;overflow:hidden}.tool-group button{border:0;border-radius:0;width:40px}.tool-group span{text-align:center;color:#526071;min-width:68px;font-size:14px;font-weight:700}.tool-button{justify-content:center;align-items:center;gap:8px;height:38px;padding:0 12px;display:inline-flex}.tool-button.selected{color:#24846b;background:#eefaf5;border-color:#4db493}.toggle-label{color:#334155;align-items:center;gap:10px;margin-left:auto;font-size:14px;font-weight:700;display:inline-flex}.toggle-label input{display:none}.toggle-label span{background:#cad2d9;border-radius:999px;width:44px;height:24px;position:relative}.toggle-label span:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .18s;position:absolute;top:3px;left:3px}.toggle-label input:checked+span{background:#5bb99d}.toggle-label input:checked+span:after{transform:translate(20px)}.board-wrap{max-width:100%;padding:12px 10px 18px;overflow:auto}.board-frame{width:max-content;margin:0 auto}.board-wrap.pan-enabled{cursor:grab}.board-wrap.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.axis{color:#7c8797;font-size:11px;display:grid}.axis-x{width:max-content;margin-left:40px}.axis span{width:var(--cell-size);height:var(--cell-size);place-items:center;display:grid}.board-row{align-items:flex-start;display:flex}.axis-y{width:40px}.board-scroll{width:max-content;height:max-content;overflow:visible}.bead-board{background:#fff;border:1px solid #d7dde2;width:max-content;transition:transform .16s;display:grid}.bead-board.hide-grid .bead-cell{border-color:#0000}.bead-cell{width:var(--cell-size);height:var(--cell-size);border:.5px solid #ffffffd1;place-items:center;font-size:10px;font-weight:800;line-height:1;display:grid;overflow:hidden}.mobile-scroll-hint{color:#768393;margin:6px 0 0;font-size:12px;line-height:1.5;display:none}.progress-card{background:#fff;border:1px solid #dfe8e6;border-radius:8px;gap:12px;margin:18px 12px;padding:14px;display:grid}.progress-card div:first-child{gap:4px;display:grid}.progress-card span{color:#758294;font-size:13px}.progress-line{background:#e7eeee;border-radius:999px;height:8px;overflow:hidden}.progress-line span{background:#41ad86;height:100%;display:block}.palette-strip{border-top:1px solid #eceff2;margin-top:20px;padding:16px 20px}.palette-strip span{color:#56606f;margin-bottom:10px;font-size:13px;font-weight:700;display:block}.palette-strip div{flex-wrap:wrap;gap:8px;display:flex}.palette-strip button{border:1px solid #d9dee4;border-radius:5px;width:36px;height:32px;font-size:11px;font-weight:800}.result-actions{background:#fff;border:1px solid #dfe8e6;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;margin:0 20px 16px;padding:14px;display:flex}.result-actions>div:first-child{gap:4px;display:grid}.result-actions strong{color:#243041;font-size:15px}.result-actions span{color:#758294;font-size:13px}.result-action-links{align-items:center;gap:10px;display:flex}.result-action-links a,.result-action-links button{color:#268366;background:#fff;border:1px solid #31a981;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:86px;height:38px;font-weight:800;text-decoration:none;display:inline-flex}.result-action-links button{padding:0 12px}.result-action-links button:disabled{opacity:.45;cursor:not-allowed}.materials-table{min-width:0}.table-head,.table-row{grid-template-columns:46px 46px minmax(80px,1fr) 54px 58px;align-items:center;gap:8px;display:grid}.table-head{color:#647082;padding-bottom:8px;font-size:12px;font-weight:800}.table-row{color:#384354;min-height:34px;font-size:13px}.swatch{border:1px solid #d8dde2;border-radius:4px;width:20px;height:20px}.table-total{border-top:1px solid #edf0f2;grid-template-columns:1fr auto auto auto;gap:16px;margin-top:8px;padding-top:14px;font-size:14px;display:grid}.export-stack{gap:10px;display:grid}.export-stack a,.export-stack button{color:#268366;background:#fff;border:1px solid #31a981;border-radius:8px;justify-content:center;align-items:center;gap:10px;height:44px;font-weight:800;text-decoration:none;display:flex}.export-stack a.disabled,.export-stack button:disabled{pointer-events:none;opacity:.45;cursor:not-allowed}.export-message{color:#2f846a;font-weight:700}.album-preview{background:#fff;border:1px solid #dfe8e6;border-radius:8px;margin-top:14px;padding:10px}.album-preview-title{color:#2c3a4a;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;display:flex}.album-preview-title button{color:#4d5662;background:#f0f3f4;border:0;border-radius:50%;width:28px;height:28px}.album-preview img{touch-action:manipulation;-webkit-touch-callout:default;border-radius:6px;width:100%;height:auto;display:block}.status-card{min-height:150px;position:relative}.status-card-mobile{display:none}.status-row{color:#28a979;align-items:center;gap:10px;margin:16px 0 8px;display:flex}.status-card>span{color:#7b8797;font-size:13px}.ring{color:#334155;background:#fff;border:6px solid #4aa884;border-radius:50%;place-items:center;width:72px;height:72px;font-size:15px;font-weight:800;display:grid;position:absolute;bottom:14px;right:14px}@media (width<=1180px){.topbar{grid-template-columns:1fr;height:auto;padding:14px 16px}.workflow-tabs{justify-content:flex-start;gap:16px;height:52px;overflow-x:auto}.workspace-grid{grid-template-columns:1fr}.panel,.right-panel{border:0;border-bottom:1px solid #e9edf0}.canvas-panel{order:2;padding:18px 12px;overflow:visible}.left-panel{order:1}.right-panel{order:3}}@media (width<=640px){:root{--cell-size:11px}.topbar{gap:8px;padding:12px 16px 10px}.brand{font-size:24px}.brand-mark{border-radius:10px;width:34px;height:34px}.workflow-tabs button,.workflow-tabs .tab-action{gap:5px;min-width:72px;font-size:12px}.workflow-tabs{justify-content:space-between;gap:4px;height:42px}.panel{padding:16px}.section-block{margin-bottom:16px;padding-bottom:16px}.upload-box{height:116px}.source-empty{min-height:82px}.preset-grid{grid-template-columns:repeat(2,1fr)}.primary-action{position:static}.status-card-mobile{margin-top:14px;margin-bottom:0;display:block}.status-card-desktop{display:none}.canvas-toolbar{flex-wrap:wrap;gap:10px;margin-bottom:12px}.toggle-label{margin-left:0}.board-wrap{padding:8px 0 12px}.board-frame{margin:0 auto}.axis{font-size:9px}.axis-y{width:28px}.axis-x{margin-left:28px}.bead-cell{font-size:7px}.mobile-scroll-hint{display:block}.palette-strip{margin-top:12px;padding:14px 4px}.result-actions{align-items:stretch;margin:0 0 12px;display:grid}.result-action-links{grid-template-columns:1fr;display:grid}.result-action-links a{display:none}.export-stack{grid-template-columns:1fr}.export-stack a{display:none}.export-stack button,.result-action-links button{min-height:48px}.table-head,.table-row{grid-template-columns:34px 28px minmax(72px,1fr) 42px 42px;gap:6px;font-size:12px}.swatch{width:18px;height:18px}.table-total{gap:10px;font-size:13px}.ring{border-width:5px;width:60px;height:60px}}
