:root{--bg: #f4ede1;--panel: #fffbf3;--ink: #3d3021;--ink-soft: #7a6a55;--line: #e3d7c2;--accent: #b5432f;--chart-bg: #fffdf8;--accent-soft: #f7d0c8;--plane-bg: #f4ede1;--grid: rgba(122, 106, 85, .13);--grid-strong: rgba(122, 106, 85, .3);--chart-dim: rgba(244, 237, 225, .35)}*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}body{display:flex;flex-direction:column;overflow:hidden}#topbar{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--ink);color:#f4ede1;flex:0 0 auto;position:relative;z-index:35}#design-name{flex:0 1 280px;background:#ffffff1f;border:1px solid rgba(255,255,255,.25);color:#fff;padding:5px 9px;border-radius:6px;font-size:13px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.top-actions .sep{width:1px;height:18px;background:#ffffff40;margin:0 4px}button{font:inherit;font-size:12.5px;padding:5px 10px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}button:hover{border-color:var(--accent);color:var(--accent)}#topbar button{background:transparent;color:#e8ddc9;border-color:#ffffff4d}#topbar button:hover{color:#fff;border-color:#e8a87c}#topbar button.active{color:#fff;border-color:#e8a87c;background:#e8a87c2e}#workspace{flex:1 1 auto;display:flex;min-height:0}#rail{flex:0 0 38px;display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:10px;background:var(--bg);border-right:1px solid var(--line)}.rail-btn{width:26px;height:26px;padding:0;display:grid;place-items:center;border-radius:6px;font-size:14px;line-height:1}.rail-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}#flyout-layer{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;position:relative}.flyout{position:absolute;top:8px;left:8px;z-index:40;width:280px;max-height:calc(100% - 16px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 4px 16px #3d302138;padding:10px}.flyout[hidden]{display:none}#flyout-layer .flyout label{display:block;font-size:12.5px;margin-bottom:7px;color:var(--ink)}#flyout-layer .flyout input[type=number],#flyout-layer .flyout input[type=text],.flyout select{width:100%;margin-top:3px;padding:5px 7px;border:1px solid var(--line);border-radius:6px;background:#fff;font:inherit;font-size:12.5px}.link-btn{border:none;background:none;padding:6px 0 0;font-size:11.5px;color:var(--ink-soft);cursor:pointer}.link-btn:hover{color:var(--accent)}.pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.colour-row{display:flex;gap:6px;margin-top:3px}.colour-row input[type=color]{width:42px;height:30px;padding:0;border:1px solid var(--line);border-radius:6px;background:#fff}.colour-row input[type=text]{flex:1;margin-top:0}.hint{font-size:11.5px;color:var(--ink-soft);line-height:1.45;margin-top:4px}.hint.warn{color:var(--accent)}.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.preset-card{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:4px}.preset-card canvas{width:100%;height:auto;border-radius:4px;border:1px solid var(--line)}.preset-card .preset-name{font-size:11px;text-align:center}.preset-card.active{background:var(--accent);border-color:var(--accent)}.preset-card.active .preset-name{color:#fff}.preset-card.active canvas{border-color:var(--accent)}.preset-card.off-multiple canvas{border-style:dashed}.preset-card.off-multiple .preset-name:after{content:" ·";opacity:.7}.legend{display:flex;flex-direction:column;gap:4px}.legend .item{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink)}.legend .sym{width:26px;height:26px;border:1px solid var(--line);background:var(--chart-bg);flex:0 0 auto}#main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0}#views{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;min-width:0;position:relative}#view-2d{flex:1 1 auto;position:relative;min-height:0;min-width:0}#peek-panel{position:absolute;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 3px 12px #3d302138;z-index:30;overflow:hidden}#peek-panel[hidden]{display:none}.peek-head{flex:0 0 auto;height:22px;display:flex;align-items:center;gap:2px;padding:0 4px 0 8px;border-bottom:1px solid var(--line);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.peek-head:active{cursor:grabbing}.peek-title{font-size:11px;color:var(--ink-soft);margin-right:auto}.peek-head button{border:none;background:none;padding:1px 5px;font-size:11px;line-height:1.2;color:var(--ink-soft)}#view-3d{flex:1 1 auto;position:relative;min-height:0}.peek-size{position:absolute;right:0;bottom:0;width:12px;height:12px;cursor:nwse-resize;touch-action:none;border-right:2px solid var(--line);border-bottom:2px solid var(--line);border-bottom-right-radius:6px}.peek-dock-handle{display:none}#views.docked .peek-dock-handle{display:block;position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;touch-action:none;z-index:2}#views.docked{flex-direction:row}#views.docked #view-2d{flex:1 1 auto;min-width:0}#views.docked #peek-panel{position:relative;border-radius:0;box-shadow:none;border-left:1px solid var(--line)}#views.docked .peek-size{display:none}#peek-panel.dock-hint:after{content:"";position:absolute;top:0;right:0;bottom:0;width:6px;background:var(--accent)}#chart{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}#print-chart{display:none}html[data-theme=dark]{--bg: #241c14;--panel: #2f2519;--ink: #ede3d1;--ink-soft: #b3a58c;--line: #453a2a;--chart-bg: #fffdf8;--plane-bg: #3a3227;--grid: rgba(237, 227, 209, .1);--grid-strong: rgba(237, 227, 209, .25);--chart-dim: rgba(0, 0, 0, .3);color-scheme:dark}html[data-theme=dark] #flyout-layer .flyout input[type=number],html[data-theme=dark] #flyout-layer .flyout input[type=text],html[data-theme=dark] .flyout select,html[data-theme=dark] .colour-row input[type=color],html[data-theme=dark] .colour-row input[type=text],html[data-theme=dark] .card-name-input,html[data-theme=dark] .gallery-search,html[data-theme=dark] #gallery-search,html[data-theme=dark] #plane-toolbar,html[data-theme=dark] .chart-rename,html[data-theme=dark] .afm-panel,html[data-theme=dark] #autofix-modal .issue-item,html[data-theme=dark] #autofix-modal .afm-chart,html[data-theme=dark] #options-dialog .opts-panel{background:#2f2519;color:var(--ink)}html[data-theme=dark] .flyout input,html[data-theme=dark] .flyout select{border-color:var(--line)}html[data-theme=dark] #plane-toolbar button:hover{background:#3a3227}html[data-theme=dark] #plane-toolbar button.active{background:var(--accent-soft);border-color:var(--accent)}html[data-theme=dark] #plane-toolbar .pt-sep{background:#453a2a}html[data-theme=dark] #plane-toolbar .pt-yarn-pop{background:#2f2519;border-color:#453a2a}html[data-theme=dark] #plane-toolbar .pt-yarn-pop input[type=text]{background:#241c10;color:var(--ink);border-color:var(--line)}html[data-theme=dark] #view3d-controls{background:#2f2519;border-color:#453a2a}html[data-theme=dark] #view3d-controls button:hover{background:#3a3227}html[data-theme=dark] .rot-group+.rot-group{border-left-color:#453a2a}html[data-theme=dark] .rot-group select,html[data-theme=dark] .photo-import input[type=text],html[data-theme=dark] .photo-import select{background:#241c10;color:var(--ink);border-color:var(--line)}html[data-theme=dark] #topbar{background:#17110b}html[data-theme=dark] .issue-item{background:#2f2519;border-color:#453a2a}html[data-theme=dark] .gallery-head h1{color:var(--ink)}#statusbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:3px 12px;background:var(--panel);border-top:1px solid var(--line);font-size:11px;color:var(--ink-soft);min-height:24px;position:relative;z-index:35}#statusbar[hidden]{display:none}#statusbar .sb-right{margin-left:auto}#statusbar .sb-sep{width:1px;height:12px;background:var(--line)}#btn-peek{padding:0 8px;font-size:11px;line-height:16px;color:var(--ink-soft);background:none}#options-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}#options-dialog .opts-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#140e0873}#options-dialog .opts-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:480px;height:540px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 40px #0000004d;overflow:hidden}#options-dialog .opts-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}#options-dialog .opts-head b{font-size:15px;color:var(--ink)}#options-dialog #opts-close{background:none;border:none;font-size:15px;cursor:pointer;color:var(--ink-soft)}#options-dialog #opts-close:hover{color:var(--accent)}#options-dialog .opts-tabs{display:flex;gap:4px;padding:10px 16px 0;border-bottom:1px solid var(--line)}#options-dialog .opts-tabs button{border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;background:none;color:var(--ink-soft);padding:7px 14px;cursor:pointer;font-size:12.5px}#options-dialog .opts-tabs button.active{background:var(--chart-bg);border-color:var(--line);color:#3d3021;font-weight:600}#options-dialog .opts-content{flex:1;min-height:0;overflow-y:auto;padding:16px}#options-dialog .opts-page[hidden]{display:none}#options-dialog .opts-row-label{font-size:11.5px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-soft);margin:14px 0 8px}#options-dialog .opts-row-label:first-child{margin-top:0}#options-dialog .opts-seg{display:flex;gap:4px}#options-dialog .opts-seg button{border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:6px 14px;cursor:pointer;font-size:12.5px}#options-dialog .opts-seg button.active{background:var(--accent);border-color:var(--accent);color:#fff}#options-dialog .opts-swatches{display:flex;gap:10px}#options-dialog .opts-swatches button{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px}#options-dialog .opts-swatches button.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}#options-dialog .opts-swatches .sw{width:30px;height:22px;border-radius:4px;display:block;border:1px solid rgba(0,0,0,.2)}#options-dialog .opts-swatches .sw.dark{border-color:#ffffff40}#options-dialog .opts-swatches .sw.wide{width:44px}#options-dialog .opts-swatches .sw-label{font-size:10.5px;color:var(--ink-soft)}#options-dialog .opts-note{font-size:11.5px;color:var(--ink-soft);margin-top:16px;line-height:1.5}#options-dialog .opts-about{text-align:center;padding:24px 20px;color:var(--ink)}#options-dialog .opts-name{font-size:26px;font-weight:700;letter-spacing:.5px;margin-top:6px}#options-dialog .opts-name span{color:var(--accent)}#options-dialog .opts-version{font-size:12px;color:var(--ink-soft);margin:4px 0 14px}#options-dialog .opts-about p{font-size:12.5px;color:var(--ink-soft);line-height:1.6;margin:0}#plane-toolbar{position:absolute;top:10px;left:10px;z-index:5;display:flex;align-items:center;gap:6px;background:#fffbf3;border:1px solid #e4dac6;border-radius:8px;padding:4px 6px;box-shadow:0 2px 8px #3d30212e;user-select:none;-webkit-user-select:none}#plane-toolbar .pt-grip{cursor:grab;color:#b5a88f;font-size:13px;padding:0 1px;touch-action:none}#plane-toolbar .pt-grip:active{cursor:grabbing}#plane-toolbar .pt-group{display:flex;gap:2px;align-items:center}#plane-toolbar .pt-sep{width:1px;height:20px;background:#e4dac6}#plane-toolbar button{background:none;border:1px solid transparent;border-radius:4px;cursor:pointer;display:grid;place-items:center;line-height:1}#plane-toolbar button:hover{background:#f3e9d4}#plane-toolbar button.active{border-color:var(--accent);background:var(--accent-soft)}#plane-toolbar button:disabled{opacity:.35;cursor:default}#plane-toolbar button:disabled:hover{background:none}#plane-toolbar .pt-colour{position:relative;gap:5px}#plane-toolbar .pt-brush{display:grid;place-items:center}#plane-toolbar .pt-brush canvas{border:1px solid #d8cdb8;border-radius:3px}#plane-toolbar .pt-chip{width:14px;height:14px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.25)}#plane-toolbar .pt-yarn-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:6;display:flex;align-items:center;gap:6px;background:#fffbf3;border:1px solid #e4dac6;border-radius:6px;padding:6px 8px;box-shadow:0 2px 8px #3d30212e}#plane-toolbar .pt-yarn-pop[hidden]{display:none}#plane-toolbar .pt-yarn-pop input[type=color]{width:26px;height:22px;padding:0;border:1px solid #e4dac6;border-radius:4px;background:none;cursor:pointer}#plane-toolbar .pt-yarn-pop input[type=text]{width:110px;font:12px system-ui,sans-serif;color:#241c10;background:#fff;border:1px solid #e4dac6;border-radius:4px;padding:3px 6px;outline:none}.chart-rename{position:fixed;z-index:60;font:600 11px system-ui,-apple-system,Segoe UI,sans-serif;color:#241c10;background:#fffbf3;border:1px solid #e07b00;border-radius:4px;padding:2px 6px;outline:none;box-shadow:0 2px 8px #3d30212e}#three{width:100%;height:100%}#three canvas{display:block;width:100%;height:100%}#instructions-panel{flex:0 0 auto;border-top:1px solid var(--line);background:var(--panel);max-height:260px;display:flex;flex-direction:column}.instructions-head{display:flex;align-items:center;gap:8px;padding:6px 12px}.flyout.export-menu{left:auto;right:8px;width:230px;padding:6px;display:flex;flex-direction:column;gap:2px}.flyout.export-menu button{display:block;width:100%;text-align:left;border:none;background:none;border-radius:6px;padding:7px 9px;font:12.5px system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);cursor:pointer}.flyout.export-menu button:hover{background:var(--accent-soft);border:none;color:var(--ink)}html[data-theme=dark] .flyout.export-menu button:hover{background:#453a2a}.flyout.export-menu[hidden]{display:none}#instructions{margin:0;padding:10px 16px 14px;overflow:auto;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap}#instructions-panel.collapsed{max-height:37px;overflow:hidden}#instructions-panel.collapsed #instructions{display:none}#toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:12.5px;padding:8px 14px;border-radius:8px;box-shadow:0 4px 14px #00000040;z-index:50}@media print{#topbar,#rail,.flyout,#peek-panel,#three,.instructions-head{display:none!important}body,#workspace,#flyout-layer,#main{overflow:visible;height:auto}#view-2d{display:block!important}#chart{display:none!important}#print-chart{display:block!important;max-width:100%}#instructions-panel{max-height:none}}#workspace[hidden],#gallery[hidden]{display:none}#view-world{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5}#view-world[hidden]{display:none}#world-canvas{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}#world-pause[hidden]{display:none}.pause-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#28201673;z-index:20}.pause-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:250px;display:flex;flex-direction:column;gap:7px;padding:14px 16px;background:#fffbf3f7;border:1px solid #e4dac6;border-radius:10px;box-shadow:0 6px 24px #28201659;font-size:12px;color:var(--ink);z-index:21;user-select:none;-webkit-user-select:none}.pause-card h2{margin:0 0 4px;font-size:15px}.pause-card button{background:none;border:1px solid #e4dac6;border-radius:5px;padding:6px 10px;font-size:12px;text-align:left;color:var(--ink);cursor:pointer}.pause-card button:hover{background:#f3e9d4}.pause-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px;font-weight:700}.pause-row input[type=range]{flex:1;accent-color:var(--accent, #b5432f)}.pause-row select{font:inherit;font-weight:400;padding:2px 4px;border:1px solid #e4dac6;border-radius:4px;background:#fffbf3;color:var(--ink)}.world-hint{position:absolute;top:10px;left:50%;transform:translate(-50%);padding:5px 12px;background:#fffbf3eb;border:1px solid #e4dac6;border-radius:8px;box-shadow:0 2px 8px #3d30212e;font-size:11.5px;color:var(--ink);z-index:10;white-space:nowrap}.world-hint[hidden]{display:none}.world-tray{position:absolute;top:10px;right:10px;width:230px;max-height:70%;overflow-y:auto;padding:8px 9px;background:#fffbf3f2;border:1px solid #e4dac6;border-radius:8px;box-shadow:0 2px 8px #3d30212e;font-size:11.5px;color:var(--ink);z-index:10;user-select:none;-webkit-user-select:none}.world-tray[hidden]{display:none}.world-tray h3{margin:0 0 6px;font-size:12px}.world-tray-list{display:flex;flex-direction:column;gap:3px}.world-tray-row,.world-tray-piece{display:block;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:4px;padding:3px 6px;font-size:11.5px;line-height:1.3;color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.world-tray-row:hover,.world-tray-piece:hover{background:#f3e9d4}.world-tray-piece{padding-left:16px}.world-tray-pieces{display:flex;flex-direction:column;gap:2px}.world-tray-empty{color:#8a7a5f;padding:2px 4px}.world-tray-stale-head{color:#8a7a5f;font-size:11px;margin:6px 0 2px;text-transform:uppercase;letter-spacing:.05em}.world-tray-stale{color:#8a6a4f;padding:2px 4px;font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.gallery-mode #design-name,body.gallery-mode .home-link,body.gallery-mode #knit-status,body.gallery-mode .top-actions{display:none}.brand{display:inline-flex;align-items:center;gap:7px;font-size:19px;font-weight:800;letter-spacing:.4px}.brand .logo{flex:none}.brand-dim,.brand-knit,.brand-three{background-clip:text;-webkit-background-clip:text;color:transparent;text-shadow:none}.brand-dim{background-image:radial-gradient(circle at 50% 0%,#f2b541 0 1.1px,transparent 1.5px),radial-gradient(circle at 50% 0%,#b06a10 0 1.1px,transparent 1.5px),linear-gradient(#d98c1f,#b06a10);background-size:4px 3.2px,4px 3.2px,100% 100%;background-position:0 0,2px 1.6px,0 0}.brand-knit{background-image:radial-gradient(circle at 50% 0%,#f7f1e2 0 1.1px,transparent 1.5px),radial-gradient(circle at 50% 0%,#a8946f 0 1.1px,transparent 1.5px),linear-gradient(#e8ddc9,#c9b98f);background-size:4px 3.2px,4px 3.2px,100% 100%;background-position:0 0,2px 1.6px,0 0}.brand-three{font-style:italic;margin-left:1px;background-image:radial-gradient(circle at 50% 0%,#e8927c 0 1.1px,transparent 1.5px),radial-gradient(circle at 50% 0%,#7e2c20 0 1.1px,transparent 1.5px),linear-gradient(#c94f42,#8e3125);background-size:4px 3.2px,4px 3.2px,100% 100%;background-position:0 0,2px 1.6px,0 0}.opts-name{display:inline-flex;align-items:baseline;gap:1px}.brand{text-decoration:none;color:inherit;cursor:pointer}.home-link{color:#cfc3ae;font-size:12.5px;text-decoration:none;white-space:nowrap}.home-link:hover{color:#fff}#gallery{flex:1 1 auto;overflow-y:auto;padding:26px 34px}.gallery-head{display:flex;align-items:center;gap:16px;margin-bottom:18px}.gallery-head h1{flex:1;margin:0;font-size:22px;color:var(--ink)}.gallery-head .sort-wrap{color:var(--ink-soft);font-size:13px;display:inline-flex;align-items:center;gap:6px}.gallery-head select{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}#gallery-search{flex:0 1 240px;font:inherit;font-size:13px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink)}#gallery-search:focus{outline:none;border-color:var(--accent)}#gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}.card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.card:hover{border-color:var(--accent);box-shadow:0 2px 12px #3d302124}.card .thumb{aspect-ratio:4 / 3;background:var(--chart-bg);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden}.card .thumb img{width:100%;height:100%;object-fit:cover;display:block}.card .thumb-empty{color:var(--ink-soft);font-size:12px}.card-meta{display:flex;align-items:center;gap:8px;padding:8px 10px}.card-name{flex:1;min-width:0;font-weight:600;font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:4px}.card-name:hover{color:var(--accent)}.card-name-input{flex:1;min-width:0;font:inherit;font-size:13px;padding:2px 5px;border:1px solid var(--accent);border-radius:4px;color:var(--ink);background:#fff}.card-time{color:var(--ink-soft);font-size:11.5px;white-space:nowrap}.card-dup{border:none;background:transparent;color:var(--ink-soft);font-size:12.5px;padding:2px 6px;border-radius:4px}.card-dup:hover{color:var(--accent);background:#b5432f1a}.card-tags{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:0 10px 9px}.tag-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-soft);cursor:pointer;white-space:nowrap}.tag-chip:hover,.tag-chip.active{border-color:var(--accent);color:var(--accent)}.tag-chip.active{background:#b5432f12}.tag-x{border:none;background:none;padding:0;font-size:10px;color:inherit;cursor:pointer}.tag-x:hover{color:var(--accent)}.tag-add{font-size:11px;padding:2px 8px;border:1px dashed var(--line);border-radius:999px;background:none;color:var(--ink-soft)}.tag-add:hover{border-color:var(--accent);color:var(--accent)}.tag-input{font:inherit;font-size:11px;width:92px;padding:2px 8px;border:1px solid var(--accent);border-radius:999px;color:var(--ink);background:#fff}#gallery-tagbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:14px}#gallery-tagbar[hidden]{display:none}.tagbar-label{color:var(--ink-soft);font-size:12px;margin-right:2px}.tagbar-clear{font-size:12px;padding:2px 9px;margin-left:4px}#gallery-nomatch{margin-top:50px;text-align:center;color:var(--ink-soft)}#gallery-nomatch button{margin-top:10px}.card-delete{border:none;background:transparent;color:var(--ink-soft);font-size:13px;padding:2px 6px;border-radius:4px}.card-delete:hover{color:var(--accent);background:#b5432f1a}.gallery-banner{margin-bottom:16px;padding:9px 12px;border:1px solid #e0c37a;border-radius:8px;background:#fdf3da;color:#6b5518;font-size:13px}#gallery-empty{margin-top:70px;text-align:center;color:var(--ink-soft)}#gallery-empty button{margin-top:10px}body.printing #instructions-panel{max-height:none}.piece-tabs{display:flex;gap:6px;align-items:center;padding:6px 12px 0}.piece-tabs .piece-tab{border-radius:6px;font-size:12px}.piece-tabs .piece-tab.active{border-color:var(--accent);color:var(--accent);font-weight:600}#gallery-examples{margin-top:36px}#gallery-examples h2{font-size:14px;color:var(--ink);margin:0 0 10px}#gallery-stress{margin-top:28px}#gallery-stress h2{font-size:14px;color:var(--ink);margin:0 0 6px}#gallery-stress .stress-note{font-size:12px;color:#8a7a63;margin:0 0 10px;max-width:640px}.examples-row{display:flex;flex-wrap:wrap;gap:10px}.example-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;max-width:250px;padding:8px 12px;text-align:left}.example-card:hover{border-color:var(--accent)}.example-card .example-name{font-weight:600;font-size:12.5px;color:var(--ink)}.example-card:hover .example-name{color:var(--accent)}.example-card .example-desc{font-size:11px;color:var(--ink-soft);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.issue-summary{padding:6px 8px 8px;font-size:12px;line-height:1.5;color:var(--ink);border-bottom:1px dashed #d8cdb8;margin-bottom:4px}.issue-summary b{color:var(--accent)}.swatch{width:16px;height:16px;border-radius:4px;border:1px solid var(--line);display:inline-block}#knit-status{position:relative}#status-chip{border:none;border-radius:14px;padding:4px 14px;font-weight:700;font-size:12px;color:#fff;cursor:pointer;white-space:nowrap}#status-chip.ok{background:#2e7d32}#status-chip.warn{background:#c28a1d}#status-chip.err{background:#b5432f}#issue-pop{position:absolute;top:calc(100% + 8px);left:0;width:360px;max-height:340px;overflow:auto;background:#fffdf8;border:1px solid #d8cdb8;border-radius:6px;box-shadow:0 8px 22px #3d302147;z-index:100;padding:6px}#issue-pop[hidden]{display:none}.issue-head{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#7a6a55;padding:4px 6px;position:sticky;top:0;background:#fffdf8;display:flex;justify-content:space-between;align-items:center;gap:8px}.issue-head label{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:400;text-transform:none;letter-spacing:0;color:#241c10;cursor:pointer;white-space:nowrap}#topbar #issue-pop .issue-item{display:block;width:100%;text-align:left;background:none;border:none;border-radius:4px;padding:6px 8px;cursor:pointer;font-size:12px;color:#241c10;line-height:1.4}#topbar #issue-pop .issue-item:hover{background:#efe5d2;color:#241c10}#topbar #issue-pop .issue-item.selected{outline:2px solid #e07b00;color:#241c10}.issue-entry{display:block}#topbar #issue-pop .fix-btn{display:inline-block;margin:2px 0 6px 30px;padding:2px 8px;font-size:11px;background:#f3ead8;border:1px solid #b39b6f;border-radius:4px;color:#241c10;cursor:pointer}#topbar #issue-pop .fix-btn:hover{border-color:#e07b00;background:#fff3dd;color:#241c10}#btn-autofix{border:1px solid #e0a43c;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;color:#3a2a10;cursor:pointer;background:linear-gradient(110deg,#ffce85 25%,#fff6e2,#ffce85 65%);background-size:240% 100%;animation:afm-glimmer 2.4s linear infinite}#btn-autofix:hover{border-color:#e07b00}@keyframes afm-glimmer{to{background-position:-240% 0}}@media(prefers-reduced-motion:reduce){#btn-autofix{animation:none}}#autofix-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center}#autofix-modal .afm-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#1e160a8c}#autofix-modal .afm-panel{position:relative;width:min(1220px,96vw);height:min(760px,90vh);display:flex;flex-direction:column;background:#fffdf8;border:1px solid #d8cdb8;border-radius:10px;box-shadow:0 18px 60px #1e160a59;overflow:hidden}#autofix-modal .afm-head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #e4dac6}#autofix-modal .afm-head b{font-size:15px;color:#241c10}#autofix-modal .afm-verdict{font-size:12px;padding:3px 8px;border-radius:4px}#autofix-modal .afm-verdict.good{background:#e3f0d9;color:#2f5d1e}#autofix-modal .afm-verdict.partial{background:#fbe9c8;color:#7a4c00}#autofix-modal .afm-modes{margin-left:auto;display:flex;flex:none;border:1px solid #e0d5be;border-radius:6px;overflow:hidden}#autofix-modal .afm-modes button{background:#fbf6ea;border:none;padding:4px 12px;font-size:12px;cursor:pointer;color:#7a6a55}#autofix-modal .afm-modes button+button{border-left:1px solid #e0d5be}#autofix-modal .afm-modes button.active{background:#3d3021;color:#f4ede1}#autofix-modal #afm-close{background:none;border:none;font-size:15px;cursor:pointer;color:#7a6a55}#autofix-modal #afm-close:hover{color:#e07b00}#autofix-modal .afm-body{flex:1;display:flex;gap:12px;padding:12px 16px;min-height:0}#autofix-modal .afm-list{width:300px;flex:none;overflow:auto;display:flex;flex-direction:column;gap:4px}#autofix-modal .issue-item{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:#fbf6ea;border:1px solid #e0d5be;border-radius:6px;padding:6px 8px;font-size:12px;color:#241c10;cursor:pointer}#autofix-modal .issue-item:hover{background:#f3e9d4;border-color:#e0a43c}#autofix-modal .issue-item .badge{font-size:10px;padding:1px 6px;border-radius:3px;background:#e8dcc2;flex:none}#autofix-modal .issue-item .badge.cut{background:#f7d0c8;color:#8a2f1d}#autofix-modal .issue-item .badge.ladder{background:#fbe9c8;color:#7a4c00}#autofix-modal .afm-view{flex:1;display:flex;flex-direction:column;min-width:0}#autofix-modal .afm-view h3{font-size:12px;margin:0 0 6px;color:#7a6a55;font-weight:600}#autofix-modal .afm-view>div{position:relative}#autofix-modal .afm-chart{display:none;flex:1;min-height:0;overflow:auto;justify-content:center;background:#fffdf8;border:1px solid #e4dac6;border-radius:6px;padding:8px}#autofix-modal .afm-chart canvas{height:auto;box-shadow:0 1px 4px #3d30211f}#autofix-modal.charts .afm-chart{display:flex}#autofix-modal.charts .afm-3d,#autofix-modal.charts .afm-controls{display:none!important}#autofix-modal .afm-controls{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:1px;z-index:5;background:#fffdf8eb;border:1px solid #d8cdb8;border-radius:6px;padding:2px 4px}#autofix-modal .afm-controls button{background:none;border:none;padding:1px 6px;font-size:12px;color:#3d3011;cursor:pointer}#autofix-modal .afm-controls button:hover{color:#e07b00}#autofix-modal .afm-controls button.active{color:#e07b00;font-weight:700}#autofix-modal .afm-controls .sep{width:1px;align-self:stretch;margin:2px 3px;background:#ddd2bb}#autofix-modal .afm-view>div{flex:1;min-height:0;border:1px solid #e4dac6;border-radius:8px;overflow:hidden;background:#ece4d6}#autofix-modal .afm-foot{display:flex;align-items:center;gap:10px;padding:10px 16px;border-top:1px solid #e4dac6}#autofix-modal .afm-foot span{flex:1;font-size:12px;color:#5a4a30}#autofix-modal .afm-foot button{padding:7px 14px;border-radius:6px;font-size:13px;cursor:pointer;border:1px solid #b39b6f;background:#fffdf8;color:#241c10}#autofix-modal #afm-apply{background:#e07b00;border-color:#b36400;color:#fff;font-weight:600}#autofix-modal #afm-apply:hover{background:#c96e00}#autofix-modal #afm-apply.partial{background:#d99a2b;border-color:#a8761a}#autofix-modal #afm-apply.partial:hover{background:#c48a1e}.issue-item .badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;margin-right:6px;color:#fff;text-transform:uppercase}.issue-item .badge.count{background:#b5432f}.issue-item .badge.hole{background:#a05a00}.issue-item .badge.cable{background:#5b4a8a}.issue-note{padding:6px 8px;font-size:12px;color:#7a6208;border-top:1px dashed #d8cdb8;margin-top:4px}#hint{position:fixed;z-index:300;max-width:320px;background:#2a2118;color:#f4ede1;font-size:12px;line-height:1.45;padding:7px 10px;border-radius:6px;box-shadow:0 4px 14px #140e0666;pointer-events:none}#hint[hidden]{display:none}#hint .hint-warning{color:#ffd21a}#view3d-controls{position:absolute;left:8px;right:8px;bottom:6px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:0 2px;padding:3px 4px;background:#fffbf3eb;border:1px solid #e4dac6;border-radius:8px;box-shadow:0 2px 8px #3d30212e;z-index:10;user-select:none;-webkit-user-select:none;pointer-events:none}#view3d-controls>*{pointer-events:auto}#view3d-controls button{background:none;border:1px solid transparent;border-radius:4px;padding:2px 5px;font-size:11px;line-height:1.25;color:var(--ink);cursor:pointer}#view3d-controls button:hover{background:#f3e9d4}.rot-group{display:flex;align-items:center;gap:1px;padding:0 3px}.rot-group+.rot-group{border-left:1px solid #e4dac6}.rot-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);margin:0 2px 0 1px}.rot-group button{background:none;border:none;border-radius:4px;padding:2px 3px;font-size:15px;line-height:1;color:var(--ink);cursor:pointer}.rot-group button:hover{background:#f3e9d4}#view3d-controls button.active{background:var(--accent-soft);color:var(--accent);font-weight:700}#btn-sim{font-size:11px}.rot-group select{border:1px solid #d8cdb8;border-radius:4px;background:#fffdf8;color:var(--ink);font-size:11px;padding:0 1px;cursor:pointer}#three.simulating canvas{cursor:grab}#three.simulating canvas:active{cursor:grabbing}.photo-import .pi-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14110e73;z-index:40}.photo-import .pi-modal{position:fixed;z-index:41;top:0;right:0;bottom:0;left:0;margin:auto;width:min(720px,92vw);height:fit-content;max-height:92vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 20px}.photo-import .pi-hint{color:var(--ink-soft);font-size:12.5px}.photo-import .pi-footer{display:flex;gap:8px;margin-top:14px}.photo-import .pi-flex{flex:1}.photo-import .pi-cropcanvas{border:1px solid var(--line);border-radius:6px;max-width:100%;display:block}.photo-import .pi-create{padding:7px 16px;border-radius:6px;font-size:13px;cursor:pointer;background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:600}.photo-import .pi-create:hover{filter:brightness(.92)}.photo-import .pi-create:disabled{opacity:.55;cursor:not-allowed;filter:none}.photo-import .pi-summary{margin:10px 0 12px;font-size:13px;color:var(--ink-soft)}.photo-import .pi-views{display:flex;gap:12px;margin:10px 0 8px}.photo-import .pi-view{flex:1;min-width:0;display:flex;flex-direction:column}.photo-import .pi-viewhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;color:var(--ink-soft);font-size:12px}.photo-import .pi-viewhead b{color:var(--ink);font-size:12px}.photo-import .pi-full-btn{padding:1px 7px;font-size:12.5px;line-height:1.4}.photo-import .pi-vp{position:relative;height:300px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--chart-bg)}.photo-import .pi-vp canvas{display:block;width:100%;height:100%}.photo-import .pi-preview{cursor:grab}.photo-import .pi-preview.panning{cursor:grabbing}.photo-import .pi-controls{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:1px;z-index:5;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:2px 4px}.photo-import .pi-controls button{background:none;border:none;padding:1px 6px;font-size:12px;color:var(--ink);cursor:pointer}.photo-import .pi-controls button:hover{color:var(--accent)}.photo-import .pi-controls button.active{color:var(--accent);font-weight:700}.photo-import .pi-controls .sep{width:1px;align-self:stretch;margin:2px 3px;background:var(--line)}.photo-import .pi-full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#14110e8c}.photo-import .pi-full-panel{position:absolute;top:14px;right:14px;bottom:14px;left:14px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.photo-import .pi-full-head{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--line);color:var(--ink)}.photo-import .pi-full-head b{font-size:13px}.photo-import .pi-full-body{flex:1;min-height:0;position:relative}.photo-import .pi-full-body .pi-vp{height:100%;border:none;border-radius:0}.xhair{position:absolute;left:50%;top:50%;width:8px;height:8px;transform:translate(-50%,-50%);border-radius:50%;background:#3d3021d9;pointer-events:none;z-index:12}.xhair[data-state=target]{width:18px;height:18px;background:transparent;border:2px solid var(--accent)}.xhair[data-state=carry]{width:12px;height:12px;border-radius:3px;background:var(--accent)}.xhair[hidden],.xhair-ring{display:none}.xhair-chip{position:absolute;left:50%;top:calc(50% + 22px);transform:translate(-50%);padding:3px 10px;background:#fffbf3eb;border:1px solid #e4dac6;border-radius:6px;font-size:11px;color:var(--ink);white-space:nowrap;pointer-events:none;z-index:12}.xhair-chip[hidden]{display:none}.world-tray-tabs{display:flex;gap:6px;margin-bottom:8px}.tray-tab{flex:1;padding:6px 10px;border:1px solid #e4dac6;border-radius:6px;background:#f7efe0;color:var(--ink);font-size:12px;cursor:pointer}.tray-tab.active{background:var(--accent-soft);color:var(--accent);font-weight:700}.world-furnish-card{text-align:left;display:block;width:100%;padding:8px 10px;margin-bottom:6px;background:#f7efe0;border:1px solid #e4dac6;border-radius:8px;cursor:pointer;font-size:12.5px;color:var(--ink)}.world-furnish-card:hover{background:#f3e9d4}.world-furnish-card .furnish-blurb{display:block;font-size:11px;color:#7a6a52;margin-top:2px}#world-furnish-list[hidden]{display:none}
