/* Hallmark · macrostructure: Workbench · genre: editorial · tone: tactile stitch workshop · anchor hue: coral · theme: existing MyBeadPattern · enrichment: live chart only · pre-emit critique: P4 H4 E4 S5 R5 V4 */
@font-face{font-family:Pixelify;src:url('../fonts/pixelify-sans-latin-700.f54f30a241c6.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--paper:oklch(95% .025 82);--card:oklch(99% .012 82);--ink:oklch(25% .02 45);--muted:oklch(45% .025 45);--line:oklch(30% .02 45);--coral:oklch(54% .18 35);--accent-ink:oklch(99% .012 82);--focus:oklch(49% .18 250);--error:oklch(46% .18 25);--blank:oklch(93% .009 82);--display:Pixelify,ui-monospace,monospace;--sans:'Avenir Next',Avenir,system-ui,sans-serif;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.7,0,.84,1);--ease-in-out:cubic-bezier(.65,0,.35,1)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 var(--sans)}.wrap{width:min(1220px,calc(100% - 2rem));margin:auto}h1,h2,h3{font-family:var(--display);font-style:normal;line-height:1.12;overflow-wrap:anywhere;min-width:0}h1{font-size:clamp(2.1rem,4.2vw,3.5rem);margin:0 0 .5rem}h2{font-size:clamp(1.65rem,3vw,2.3rem);margin:0 0 .75rem}h3{font-size:1.35rem;margin:.5rem 0}a{color:var(--ink);text-underline-offset:3px}button,input,select{font:inherit;color:inherit}button,summary{cursor:pointer}button,input:not([type=range]):not([type=file]),select{min-height:44px;border:1px solid var(--line);border-radius:0;background:var(--card);padding:.5rem .65rem}button{font-size:.82rem;font-weight:700;white-space:nowrap}button:disabled{opacity:.55;cursor:not-allowed}button:active:not(:disabled){transform:translateY(1px)}button.primary{background:var(--coral);color:var(--accent-ink);width:100%}button.primary:hover:not(:disabled){opacity:.92}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible,canvas:focus-visible{outline:3px solid var(--focus);outline-offset:3px}input,select{width:100%;min-width:0}input[type=range]{accent-color:var(--coral);min-height:44px}.skip-link{position:fixed;top:-100px;left:1rem;padding:.75rem;background:var(--ink);color:var(--card);z-index:100}.skip-link:focus{top:.75rem}.site{background:var(--paper);border-bottom:2px solid var(--line);position:sticky;top:0;z-index:30}.site .wrap{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:1rem}.logo{font:700 1.3rem var(--display);text-decoration:none}.logo b{color:var(--coral)}.intro{padding:1.5rem 0 1.25rem;max-width:900px}.intro p{margin:0;color:var(--muted);max-width:80ch}.workbench{background:var(--card);border-top:3px solid var(--line);border-bottom:3px solid var(--line);padding:1rem 0 1.5rem;scroll-margin-top:80px}.bench-heading{display:flex;gap:1rem;align-items:center;justify-content:space-between;padding:0 1rem 1rem}.bench-heading h2{margin:0;font-size:1.65rem}.bench-heading p{font-size:.8rem;color:var(--muted);margin:0;max-width:48ch}.bench-heading p[data-error=true]{color:var(--error)}.bench-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:1.5rem;padding:0 1rem}.settings{display:grid;gap:1rem;align-content:start;min-width:0}fieldset{border:0;border-top:1px solid var(--line);padding:.75rem 0 0;margin:0;min-width:0}legend{font:700 1.2rem var(--display);padding:0 .5rem 0 0}label{display:grid;gap:.3rem;font-size:.8rem;font-weight:700;margin:.6rem 0}.pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.help{font-size:.75rem;color:var(--muted);margin:.5rem 0;line-height:1.45}.upload{padding:.8rem;border:1px dashed var(--line);background:var(--paper);cursor:pointer}.upload strong{font-size:1.03rem}.upload span{font-weight:400;font-size:.72rem;color:var(--muted)}.upload input{font-size:.7rem;max-width:100%}.source-line{display:flex;gap:.5rem;align-items:center;justify-content:space-between;font-size:.72rem;margin:.5rem 0}.source-line span{min-width:0;overflow-wrap:anywhere}.source-line button{padding:.3rem .45rem;font-size:.72rem;flex:none}#sourceCanvas{width:100%;height:auto;max-height:200px;object-fit:contain;background:var(--blank);border:1px solid var(--line)}summary{min-height:44px;padding:.5rem 0;font-size:.82rem;font-weight:700}.size-readout{font:700 .9rem/1.55 var(--mono);background:var(--paper);padding:.7rem;margin:.7rem 0}.export-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-top:.75rem}.chart-work{min-width:0}.stats{display:flex;flex-wrap:wrap;gap:.4rem;font:700 .78rem var(--mono);margin-bottom:.75rem}.stats span{background:var(--paper);padding:.4rem .5rem;border-bottom:1px solid var(--line)}.chart-toolbar{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr);gap:1rem;align-items:end}.chart-toolbar label{margin:0 0 .5rem}.chart-toolbar output{float:right}.chart-scroll{overflow:auto;max-width:100%;max-height:570px;border:1px solid var(--line);background:var(--blank);overscroll-behavior:contain;scrollbar-gutter:stable}#chartCanvas{display:block;max-width:none;touch-action:pan-x pan-y}.edit-toolbar{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap}.edit-toolbar label{flex:1;min-width:150px}.edit-toolbar button{margin:.6rem 0}.cell-tools{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.cell-tools label{width:75px}.cell-tools button{align-self:end;margin:.6rem 0}.cell-tools span{font-size:.75rem;color:var(--muted)}.add-thread{border-top:1px solid var(--line);margin-top:.5rem}.legend{margin:1rem 0 0}.legend-scroll{overflow:auto;max-height:360px}table{width:100%;border-collapse:collapse;font-size:.8rem;text-align:left}th{padding:.6rem .4rem;background:var(--paper);border-bottom:2px solid var(--line)}td{padding:.4rem;border-bottom:1px solid var(--blank)}td:first-child{font:700 1rem var(--mono)}td:last-child,th:last-child{text-align:right}.swatch{display:inline-block;width:16px;height:16px;border:1px solid var(--line);vertical-align:middle;margin-right:.4rem}.guide,.data-note,.related{padding:2.5rem 0;border-bottom:1px solid var(--line);max-width:100%}.guide{display:grid;grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);gap:2rem}.guide p,.data-note p,.related p{max-width:85ch;color:var(--muted)}.guide h3:not(:first-child){margin-top:1.5rem}.related{border-bottom:0}.site-foot{border-top:2px solid var(--line);padding:1rem 0;font-size:.8rem}.site-foot .wrap{display:flex;gap:1rem;justify-content:space-between;align-items:center}.site-foot nav{display:flex;gap:1rem}.site-foot a{white-space:nowrap}
@media(hover:hover){input:hover,select:hover,button:hover:not(:disabled){background:var(--paper)}button.primary:hover:not(:disabled){background:var(--coral);color:var(--accent-ink)}}
@media(max-width:850px){.bench-layout{grid-template-columns:260px minmax(0,1fr);gap:1rem}.bench-heading{align-items:start}.chart-toolbar{grid-template-columns:minmax(0,1fr)}.guide{grid-template-columns:minmax(0,1fr)}}
@media(max-width:680px){.wrap{width:calc(100% - 1.25rem)}.intro{padding:1rem 0}.intro p{font-size:.9rem}.site .wrap{min-height:56px}.bench-heading{display:block;padding:.2rem .6rem .75rem}.bench-heading p{margin-top:.4rem}.bench-layout{display:flex;flex-direction:column;padding:0 .6rem}.settings{display:contents}.settings fieldset:first-child{order:0}.settings fieldset:last-child{order:2}.chart-work{order:1}.chart-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.chart-scroll{max-height:450px}.edit-toolbar label{min-width:120px}.cell-tools span{width:100%}#sourceCanvas{max-height:100px}.source-line{margin:.3rem 0}.upload{padding:.55rem}.guide,.data-note,.related{padding:2rem 0}.guide{gap:.5rem}.site-foot .wrap{flex-direction:column;align-items:start}.site-foot p{margin:0}.stats{font-size:.72rem}h1{font-size:2.2rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* The shared polish layer sets every main to 100%; keep this tool's workbench
   inside the existing reading frame without changing any other route. */
body[data-page-route="cross-stitch-pattern-maker"] main.wrap{width:min(1220px,calc(100% - 2rem));margin-inline:auto;overflow-x:visible}
html,body{overflow-x:clip}
.intro p,.guide p,.data-note p,.related p{max-width:75ch}
@media(max-width:680px){body[data-page-route="cross-stitch-pattern-maker"] main.wrap{width:calc(100% - 1.25rem)}}
/* Keep the shared pink wordmark readable at its smaller mobile size. */
body[data-page-route="cross-stitch-pattern-maker"] header.site .logo-name b{color:#b33b74}
