:root{color:#34373c;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f7f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#f7f7f5}body{overscroll-behavior:none;min-width:320px;min-height:100svh;margin:0}button,input{font:inherit}button{color:#34373c;background:#fff;border:0;border-radius:14px;min-height:44px;box-shadow:inset 0 0 0 1px #dfe3e8}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #aeb7c2}input{color:#34373c;background:#fff;border:1px solid #dfe3e8;border-radius:14px;width:100%;min-height:46px;padding:10px 12px}h1,h2,h3,p{margin:0}.app{min-height:100svh;padding:calc(14px + env(safe-area-inset-top)) 14px calc(118px + env(safe-area-inset-bottom));background:#f7f7f5}.topBar{z-index:5;padding:calc(14px + env(safe-area-inset-top)) 14px 12px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f7f5eb;grid-template-columns:72px minmax(0,1fr) 72px;align-items:center;gap:10px;margin:-14px -14px 12px;display:grid;position:sticky;top:0}.topBar h1{color:#2f3033;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:18px;line-height:1.2;overflow:hidden}.eyebrow{color:#767b83;text-align:center;font-size:12px;font-weight:700}.primaryButton{color:#fff;box-shadow:none;background:#ef8faa}.primaryButton:disabled{color:#9aa1aa;background:#e8eaed}.ghostButton{background:#fff}.dangerButton{color:#7a3f3f}.wideButton{width:100%}.page{width:min(100%,920px);margin:0 auto}.sectionHeading,.statsHeader{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.sectionHeading h2{color:#2f3033;font-size:22px}.sectionHeading span,.hint,.projectCard time{color:#767b83;font-size:13px}.emptyState,.settingsPanel,.projectCard{background:#fffffff0;border:1px solid #e2e4e8;border-radius:20px;box-shadow:0 12px 30px #22272e14}.emptyState{gap:18px;padding:22px;display:grid}.projectGrid{gap:12px;display:grid}.projectCard{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px;display:grid}.projectCard h3{color:#2f3033;font-size:18px}.projectCard p{color:#656b73;margin-top:4px}.cardActions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.entryActions{grid-template-columns:minmax(0,1fr);gap:10px;display:grid}.projectEntryActions{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.settingsPanel{gap:16px;padding:16px;display:grid}.settingsPanel label{color:#464b52;gap:8px;font-weight:700;display:grid}.settingsPanel .inlineCheck{align-items:center;gap:8px;font-size:14px;display:flex}.inlineCheck input{width:18px;min-height:18px}.settingsPanel select,.fieldGroup select{color:#34373c;width:100%;min-height:46px;font:inherit;background:#fff;border:1px solid #dfe3e8;border-radius:14px;padding:10px 12px}.twoColumns{grid-template-columns:1fr 1fr;gap:12px;display:grid}.editorPage{width:min(100%,1100px);min-height:calc(100svh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 118px);grid-template-rows:auto auto minmax(0,1fr);gap:10px;margin:0 auto;display:grid}.editorTopBar{z-index:12;margin:calc(-14px - env(safe-area-inset-top)) -14px 0;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f7f7f5f0;grid-template-columns:64px minmax(0,1fr) 104px;align-items:center;gap:8px;display:grid;position:sticky;top:0}.editorTitleBlock{justify-items:center;min-width:0;display:grid}.editorTitleBlock h1{color:#2f3033;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:17px;line-height:1.2;overflow:hidden}.savePill{color:#6b5c62;background:#fff0f5;border-radius:999px;margin-top:3px;padding:2px 8px;font-size:12px;font-weight:700}.savePill-error{color:#8a3d3d;background:#ffe8e8}.historyActions{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.historyActions button{border-radius:12px;min-height:38px;padding:0 4px;font-size:12px}.editorStatsBar{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.editorStatsBar span{color:#5b5357;text-align:center;background:#fffdfa;border:1px solid #ece3df;border-radius:12px;padding:8px 6px;font-size:12px;font-weight:700}.canvasShell{width:100%;min-height:320px;height:calc(100svh - 296px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain;touch-action:none;background:#fff;border:1px solid #e2e4e8;border-radius:18px;max-height:680px;position:relative;overflow:auto}.beadCanvas{cursor:crosshair;touch-action:none;border-radius:18px;width:100%;height:100%;display:block}.beadCanvas.isPanning{cursor:grab}.zoomBadge{color:#615b60;pointer-events:none;background:#fffdfaeb;border:1px solid #eadfe1;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:800;position:absolute;bottom:10px;right:10px}.bottomDrawer{right:14px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:8;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffcf8f5;border:1px solid #f0dce3;border-radius:22px 22px 16px 16px;max-height:240px;padding:8px 14px 14px;transition:transform .16s;position:fixed;left:14px;box-shadow:0 -10px 30px #57394421}.bottomDrawer.isClosed{transform:translateY(calc(100% - 38px))}.drawerHandle{width:42px;height:5px;min-height:5px;box-shadow:none;background:#d7dbe0;border:0;border-radius:999px;margin:0 auto 10px;padding:0;display:block}.currentColor{grid-template-columns:28px minmax(0,auto);align-items:center;gap:2px 8px;display:grid}.currentColor span{border:1px solid #51464c29;border-radius:50%;grid-row:span 2;width:28px;height:28px}.currentColor strong{color:#34373c;font-size:13px}.currentColor small{color:#767b83;font-size:12px}.paletteControls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.paletteControls label{color:#5c626b;align-items:center;gap:5px;font-size:12px;font-weight:700;display:inline-flex}.paletteControls input{width:16px;min-height:16px}.paletteControls select{min-height:34px;font:inherit;background:#fff;border:1px solid #dfe3e8;border-radius:10px;padding:0 8px;font-size:12px}.paletteStrip{scroll-snap-type:x proximity;gap:10px;padding:2px 2px 6px;display:flex;overflow-x:auto}.paletteBox{scroll-snap-align:start;background:linear-gradient(#fffffff0,#fff6f9e6);border:1px solid #dcbcc4d9;border-radius:16px;align-content:start;justify-items:stretch;gap:7px;min-width:112px;min-height:112px;padding:9px;display:grid;position:relative;box-shadow:inset 0 1px #ffffffe6,0 8px 18px #5b414a14}.beadTray{background:#ffffffb8;border:1px solid #e0cacde6;border-radius:11px;grid-template-columns:repeat(4,1fr);align-content:center;gap:4px;min-height:47px;padding:6px;display:grid;box-shadow:inset 0 1px 5px #583c4414}.beadDot{aspect-ratio:1;background-image:radial-gradient(circle at 34% 28%,#ffffffb8 0 18%,#fff0 42%);border:1px solid #3f31371f;border-radius:50%;width:100%;box-shadow:inset -1px -2px 3px #0000001f,0 1px 2px #46323a24}.paletteBoxMeta{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1px 6px;min-width:0;display:grid}.paletteBoxMeta b{color:#34373c;font-size:12px}.paletteBoxMeta small{color:#767b83;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11px;overflow:hidden}.paletteBoxMeta em{color:#73525d;background:#fff0f5;border-radius:999px;justify-self:end;padding:2px 6px;font-size:11px;font-style:normal;font-weight:800}.selectedPaletteBox{background:#fff3f7;border-color:#ef8faa;transform:translateY(-1px);box-shadow:inset 0 0 0 2px #ef8faa40,0 9px 22px #dc779429}.unusedPaletteBox{opacity:.58}.currentPaletteBadge{color:#fff;background:#ef8faa;border-radius:999px;padding:2px 6px;font-size:10px;font-weight:800;position:absolute;top:7px;right:7px}.toolBar{z-index:10;padding:10px 12px calc(10px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f7f5f5;border-top:1px solid #e2e4e8;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;display:grid;position:fixed;bottom:0;left:0;right:0}.toolBar button{border-radius:13px;align-content:center;justify-items:center;gap:2px;min-width:0;min-height:50px;padding:0 4px;font-size:12px;font-weight:800;display:grid}.toolBar button span{font-size:12px;line-height:1}.toolBar .activeTool{color:#fff;box-shadow:none;background:#ef8faa}.imagePreview{background:#fff;border:1px solid #e2e4e8;border-radius:18px;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:12px;padding:10px;display:grid}.imagePreview img{object-fit:cover;background:#f1f2f4;border-radius:14px;width:96px;height:96px}.imagePreview div{gap:10px;min-width:0;display:grid}.imagePreview strong{color:#34373c;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.formStatus{color:#4d5560;background:#f0f2f4;border-radius:14px;padding:10px 12px;font-size:14px}.errorStatus{color:#853e3e;background:#ffe9e9}.wizardSteps{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px;display:grid}.chartImportSteps{grid-template-columns:repeat(3,1fr)}.wizardSteps span{color:#68717b;text-align:center;background:#fff;border:1px solid #e0e3e7;border-radius:12px;padding:8px 4px;font-size:12px;font-weight:800}.wizardSteps .currentStep,.activeSegment{color:#fff;box-shadow:none;background:#3f8f83}.cropperBlock{gap:12px;display:grid}.cropperHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.cropperHeader strong{color:#34373c}.cropperHeader span{color:#68717b;font-size:13px;font-weight:800}.cropperCanvas{touch-action:none;-webkit-user-select:none;user-select:none;background:#eef1f4;border:1px solid #e2e4e8;border-radius:18px;width:100%;height:min(66svh,480px);min-height:300px;display:block}.chartImportLayout{gap:14px;display:grid}.chartCalibrationPanel{padding:10px}.chartCalibrationViewport{touch-action:none;background:#eef1f4;border:1px solid #dfe3e8;border-radius:16px;width:100%;height:min(62svh,520px);min-height:330px;position:relative;overflow:hidden}.chartCalibrationViewport img{-webkit-user-select:none;user-select:none;pointer-events:none;max-width:none;display:block;position:absolute}.chartCalibrationCanvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.cropperActions,.buttonRow{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.cropPresetGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.bottomActionRow{bottom:calc(8px + env(safe-area-inset-bottom));z-index:3;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f7f5f0;border:1px solid #e3e6ea;border-radius:18px;padding:8px;position:sticky}.chartPreviewOverlay{z-index:30;padding:calc(10px + env(safe-area-inset-top)) 10px calc(10px + env(safe-area-inset-bottom));background:#1a1d228a;display:grid;position:fixed;inset:0}.chartPreviewPanel{background:#f9fafb;border:1px solid #dfe3e8;border-radius:18px;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;display:grid;box-shadow:0 18px 48px #12161c47}.chartPreviewHeader{border-bottom:1px solid #e3e6ea;grid-template-columns:minmax(0,1fr) 72px;align-items:center;gap:10px;padding:12px;display:grid}.chartPreviewHeader h2{color:#252930;text-overflow:ellipsis;white-space:nowrap;font-size:17px;overflow:hidden}.chartPreviewHeader span{color:#67707b;font-size:12px;font-weight:700}.chartPreviewToolbar{border-bottom:1px solid #e3e6ea;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 12px;display:grid}.chartPreviewToolbar select{min-height:38px;font:inherit;background:#fff;border:1px solid #dfe3e8;border-radius:12px;grid-column:1/-1;padding:0 10px}.chartPreviewViewport{overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;background:#eef1f4;min-height:0;padding:12px;overflow:auto}.chartPreviewCanvas{background:#fff;border:1px solid #ccd3dc;display:block;box-shadow:0 8px 24px #2d343e24}.chartPreviewPanel>.hint{padding:8px 12px 12px}.presetGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.segmentedControl{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.wrapSegments{grid-template-columns:repeat(2,minmax(0,1fr))}.fieldGroup{border:0;gap:10px;min-width:0;margin:0;padding:0;display:grid}.fitModeOptions{gap:8px;display:grid}.fitModeOption{background:#fff;border:1px solid #e1e5ea;border-radius:14px;grid-template-columns:22px minmax(0,1fr);gap:3px 8px;min-height:58px;padding:10px;display:grid}.fitModeOption input{grid-row:span 2;align-self:center;width:18px;min-height:18px}.fitModeOption span{color:#383d43;font-size:14px;font-weight:800}.fitModeOption small{color:#68717b;font-size:12px;line-height:1.4}.activeFitMode{background:#effaf7;border-color:#3f8f83}.fieldGroup legend,.generatorSettingsPanel strong{color:#464b52;margin-bottom:2px;font-weight:800}.resultStats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.resultStats span{color:#5b5357;text-align:center;background:#fffdfa;border:1px solid #ece3df;border-radius:12px;padding:8px;font-size:12px;font-weight:800}.assemblyOverlay{z-index:40;padding:calc(10px + env(safe-area-inset-top)) 10px calc(10px + env(safe-area-inset-bottom));background:#1d2025ad;display:grid;position:fixed;inset:0}.assemblyPanel{background:#fbfaf7;border:1px solid #dfe3e8;border-radius:20px;grid-template-rows:auto auto minmax(0,1fr) auto auto auto;min-height:0;display:grid;overflow:hidden;box-shadow:0 20px 60px #12161c52}.assemblyHeader{border-bottom:1px solid #e4e7eb;grid-template-columns:86px minmax(0,1fr) 104px;align-items:center;gap:8px;padding:12px;display:grid}.assemblyHeader h2{color:#2f3033;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:17px;overflow:hidden}.assemblyHeaderActions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.assemblyHeaderActions button,.assemblyHeader>button{border-radius:12px;min-height:44px;padding:0 6px;font-size:12px}.assemblyProgress{color:#5b626b;grid-template-columns:46px minmax(0,1fr) 86px;align-items:center;gap:8px;padding:10px 12px;font-size:12px;font-weight:800;display:grid}.assemblyProgress progress{accent-color:#3f8f83;width:100%}.assemblyStage{touch-action:none;background:#eef1f4;place-items:center;min-height:0;padding:14px;display:grid;position:relative;overflow:hidden}.assemblyCanvas{border:0;border-radius:8px;width:100%;height:100%;min-height:280px}.assemblyToolbar{background:#f8f6f1;border-top:1px solid #e4e7eb;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 12px;display:grid}.assemblyToolbar fieldset{border:0;gap:6px;min-width:0;padding:0;display:flex}.assemblyToolbar legend{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.assemblyToolbar button,.assemblyToolbar select{color:#4b515a;background:#fff;border:1px solid #d8dde4;border-radius:12px;min-height:44px;padding:0 10px;font-size:12px;font-weight:800}.assemblyToolbar button.activeSegment{color:#28665d;background:#effaf7;border-color:#3f8f83}.assemblyToolbar label{color:#5b626b;grid-template-columns:auto auto;align-items:center;gap:6px;font-size:12px;font-weight:800;display:grid}.beadBoxRail{background:#fffdf9;border-top:1px solid #e4e7eb;gap:8px;padding:10px 12px;display:flex;overflow-x:auto}.miniBeadBox{background:#fff;border:1px solid #e1d8d7;border-radius:12px;grid-template-columns:18px auto;align-items:center;gap:1px 6px;min-width:76px;padding:7px;display:grid}.miniBeadBox span{border-radius:50%;grid-row:span 2;width:18px;height:18px}.miniBeadBox b,.miniBeadBox em{color:#4b515a;font-size:11px;font-style:normal}.activeMiniBeadBox{background:#fff3f7;border-color:#ef8faa}.easyEditorPage{place-items:center;min-height:100%;padding:20px;display:grid}.easyAssemblyEntry{justify-items:center;gap:24px;width:min(100%,420px);display:grid}.easyAssemblyEntry .editorTitleBlock{text-align:center}.easyAssemblyButton{width:min(100%,260px);min-height:58px;font-size:18px}.assemblyFooter{border-top:1px solid #e4e7eb;justify-content:space-between;align-items:center;gap:10px;min-height:60px;padding:10px 12px;display:flex}.keychainFooterActions{justify-content:flex-end;align-items:center;gap:10px;margin-left:auto;display:flex}.keychainPreview{place-items:center;width:100%;height:100%;min-height:0;display:grid}.keychainCanvas{width:auto;max-width:100%;height:auto;max-height:100%;image-rendering:pixelated;background:#fffdf9;display:block;box-shadow:0 16px 34px #22272e2e}.downloadError{color:#a33a3a;font-size:12px;font-weight:800}.progressPanel{bottom:calc(8px + env(safe-area-inset-bottom));z-index:4;background:#fffffff5;border:1px solid #dfe3e8;border-radius:18px;grid-template-columns:minmax(0,1fr) 82px;align-items:center;gap:8px;padding:12px;display:grid;position:sticky;box-shadow:0 12px 30px #22272e1f}.progressPanel span,.progressPanel progress{grid-column:1}.progressPanel button{grid-area:1/2/span 2}.previewPanel{gap:14px;display:grid}.previewCanvasShell{overscroll-behavior:contain;background:#fff;border:1px solid #e2e4e8;border-radius:18px;max-height:62svh;padding:10px;overflow:auto}.previewCanvasShell canvas,.previewCanvasShell img{max-width:none;image-rendering:pixelated;display:block}.sourceCropPreview{background-color:#fffdf9;background-image:linear-gradient(45deg,#f0eee9 25%,#0000 25%),linear-gradient(-45deg,#f0eee9 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#f0eee9 75%),linear-gradient(-45deg,#0000 75%,#f0eee9 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:16px 16px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;border-radius:12px;width:min(100%,520px);max-height:420px;margin:0 auto;position:relative;overflow:hidden}.sourceCropPreview img{object-fit:fill;transform-origin:50%;border-radius:0;max-width:none;max-height:none;position:absolute}.mappingSummary{background:#fbfcfc;border:1px solid #e4e8ed;border-radius:14px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;display:grid}.mappingSummary span,.mappingSummary strong{color:#4b535c;font-size:12px}.mappingSummary strong,.mappingSummary p{grid-column:1/-1}.mappingSummary p{color:#68717b;margin:0;font-size:13px;line-height:1.45}.previewCanvasShell img{object-fit:contain;border-radius:12px;width:100%;max-height:420px}.compactHeader{margin-bottom:0}.materialList{background:#fff;border:1px solid #e7e9ed;border-radius:14px;max-height:260px;display:grid;overflow:auto}.materialRow{border-bottom:1px solid #eef0f2;grid-template-columns:24px 58px minmax(0,1fr) 52px;align-items:center;gap:8px;min-height:42px;padding:8px 10px;display:grid}.materialRow:last-child{border-bottom:0}.materialRow span{border:1px solid #51464c24;border-radius:50%;width:22px;height:22px}.materialRow b,.materialRow em{color:#34373c;font-size:13px}.materialRow small{color:#68717b;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.materialRow em{justify-self:end;font-style:normal;font-weight:800}@media (width>=720px){.app{padding-left:28px;padding-right:28px}.topBar{margin-left:-28px;margin-right:-28px;padding-left:28px;padding-right:28px}.projectGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.generatorPage{width:min(100%,980px)}.presetGrid,.cropPresetGrid,.wrapSegments,.resultStats{grid-template-columns:repeat(4,minmax(0,1fr))}.buttonRow{grid-template-columns:repeat(3,minmax(0,1fr))}.projectCard{min-height:160px}.bottomDrawer{left:calc(50vw - min(100vw,980px)/2 + 28px);right:calc(50vw - min(100vw,980px)/2 + 28px)}.editorPage{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) 280px}.editorTopBar,.editorStatsBar{grid-column:1/-1}.canvasShell{height:calc(100svh - 190px)}.bottomDrawer{max-height:none;position:static;transform:none}.bottomDrawer.isClosed{transform:none}.paletteStrip{grid-template-columns:1fr;max-height:calc(100svh - 330px);display:grid;overflow-y:auto}.toolBar{left:calc(50vw - min(100vw,1100px)/2 + 28px);right:calc(50vw - min(100vw,1100px)/2 + 28px)}}
