:root{--ink:#24251f;--sub:#82837b;--lime:#d9f773;--line:#e3e4db}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f8f9f3;color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,select{font:inherit}button,a,label.drop{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}header{height:88px;margin:0 5%;display:flex;align-items:center;border-bottom:1px solid var(--line);justify-content:space-between}.brand{font-family:Manrope,sans-serif;display:flex;align-items:center;gap:9px;font-size:23px;font-weight:800;letter-spacing:-1px}.logo{font-size:36px}.badge{font:9px 'DM Sans';letter-spacing:1px;border:1px solid #d7d8cd;padding:4px 6px;margin-left:5px;border-radius:4px}nav{display:flex;gap:32px;font-size:13px}.private{font-size:11px;color:#6e7362}.hero{text-align:center;padding:53px 16px 34px}.eyebrow{font-size:10px;letter-spacing:2px;color:#717569}h1{font:800 clamp(48px,6vw,77px)/1.1 Manrope;margin:14px 0 18px;letter-spacing:-4px}h1 em{font-style:normal;position:relative;z-index:0}h1 em:after{content:'';position:absolute;bottom:3px;left:0;width:100%;height:17px;background:var(--lime);z-index:-1;transform:rotate(-2deg)}.hero p{color:#75796b;line-height:1.75;font-size:15px}.tags{display:flex;justify-content:center;gap:24px;font-size:11px;margin-top:22px}.studio{max-width:1160px;margin:0 auto;background:white;border:1px solid #daddce;border-radius:16px;overflow:hidden;box-shadow:0 12px 35px #313d1610}.studio-header{padding:17px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-weight:600;font-size:12px}.dot{display:inline-block;width:7px;height:7px;background:#89a750;border-radius:100%;margin-right:8px}.muted{color:#97998f;font-weight:400;margin-left:14px}.text-button{border:0;background:none;color:#85877d;font-size:12px}.workspace{display:grid;grid-template-columns:280px 1fr;min-height:464px}aside{padding:22px;border-right:1px solid var(--line)}.section-label{font-size:9px;color:#83877b;letter-spacing:1.4px;font-weight:700}.drop{margin-top:13px;border:1px dashed #cfd4c2;border-radius:8px;display:flex;align-items:center;flex-direction:column;background:#fafbf6;padding:18px 6px;gap:8px;font-size:11px}.drop.drag{background:#eaf6cc}.drop input{display:none}.upload-icon{border:1px solid #dce1cf;border-radius:9px;padding:4px 12px;font-size:25px}.drop strong{font-size:12px}.drop u{color:#626f42}.drop small{font-size:9px;color:#969b8d}#filename{color:#8c9183;font-size:10px;margin-top:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setting-title{margin-top:23px}.field{display:block;font-size:11px;margin-top:15px}.field select{display:block;width:100%;margin-top:8px;background:white;border:1px solid var(--line);border-radius:6px;padding:8px;font-size:11px}.field output{float:right;color:#7d836f;font-size:10px}input[type=range]{width:100%;height:4px;accent-color:#899b5d;margin:13px 0 4px}.range-labels{display:flex;justify-content:space-between;color:#a0a595;font-size:9px}.check{font-size:10px;display:flex;align-items:center;gap:6px;margin:18px 0;accent-color:#899b5d}.primary{width:100%;padding:12px;background:var(--lime);border:0;border-radius:7px;font-size:12px;font-weight:700;display:flex;justify-content:space-between}.local-note{font-size:9px;color:#939889;text-align:center;margin-bottom:0}.preview-area{display:flex;flex-direction:column;min-width:0}.preview-toolbar{height:55px;display:flex;align-items:center;justify-content:space-between;padding:0 22px}.tabs{background:#f1f3eb;padding:3px;border-radius:6px;display:flex}.tabs button{font-size:10px;background:none;border:0;border-radius:4px;padding:6px 13px;color:#8c9182}.tabs button.active{background:white;color:#343c28;box-shadow:0 1px 4px #0001}#previewLabel{font-size:9px;letter-spacing:1px;color:#999e91}#zoom{border:1px solid var(--line);background:white;border-radius:5px;font-size:19px}.canvas{min-height:365px;flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background-color:#fbfcf7;background-image:linear-gradient(45deg,#edf0e6 25%,transparent 25%),linear-gradient(-45deg,#edf0e6 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#edf0e6 75%),linear-gradient(-45deg,transparent 75%,#edf0e6 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0}.canvas svg,.canvas img{max-width:85%;max-height:340px;width:auto;height:auto;object-fit:contain}.canvas.large svg,.canvas.large img{max-width:100%;max-height:440px}.preview-bottom{display:flex;justify-content:space-between;padding:13px 22px;font-size:9px;color:#8c9282;border-top:1px solid var(--line)}.studio-footer{border-top:1px solid var(--line);padding:16px 22px;display:flex;justify-content:space-between;align-items:center}#status{font-size:10px;color:#818875}#download{background:#292e22;color:white;padding:10px 18px;border:0;border-radius:6px;font-size:11px}#download:disabled{opacity:.35;cursor:default}.examples{max-width:1160px;margin:35px auto}h2{font-size:15px;letter-spacing:-.3px}.examples p{font-size:11px;color:#8e9384}.samples{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:18px}.samples button{display:flex;text-align:left;align-items:center;gap:14px;border:1px solid var(--line);background:transparent;border-radius:9px;padding:12px;font-size:12px}.samples button:hover{background:#edf3e2;border-color:#bccd95}.samples small{display:block;color:#969c8c;font-size:10px;margin-top:5px}.samples b{margin-left:auto;font-size:16px;font-weight:400}.thumb{width:48px;height:48px;border-radius:6px;display:flex;justify-content:center;align-items:center}.flower{background:#f0e9db;color:#e66c42;font-size:45px}.orb{background:#eeedf4}.orb i{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#f1ddff,#ad7bf7 35%,#553fa0 75%,#29205d);box-shadow:3px 5px 5px #83749455}.icon{background:#e5eddb;font-size:40px;color:#506837}.how{max-width:1160px;margin:50px auto;display:grid;grid-template-columns:repeat(3,1fr);gap:55px;border-top:1px solid var(--line);padding-top:30px}.how span{font-size:9px;color:#8b917e;letter-spacing:1px}.how h3{font:700 17px Manrope}.how p,.about p{font-size:12px;line-height:1.8;color:#858c78}.about{max-width:1160px;margin:0 auto 40px;background:#eff2e6;padding:20px 25px;border-radius:9px;display:flex;align-items:center;gap:40px}.about strong{white-space:nowrap;font:700 15px Manrope}.about p{margin:0}footer{display:flex;justify-content:space-between;align-items:center;margin:0 5%;padding:28px 0;border-top:1px solid var(--line);color:#929987;font-size:10px}footer .brand{font-size:18px;color:#4d5740}@media(max-width:800px){nav{display:none}.private{font-size:9px}.studio,.examples,.how,.about{margin-left:16px;margin-right:16px}.workspace{grid-template-columns:1fr}aside{border-right:0;border-bottom:1px solid var(--line)}.drop{padding:12px}.canvas{min-height:320px}.samples,.how{grid-template-columns:1fr;gap:12px}.tags{gap:12px;font-size:9px}.studio-footer{gap:15px}.about{display:block}.about p{margin-top:10px}footer span:last-child{display:none}h1{letter-spacing:-2px}}

.brand-image{display:block;width:205px;height:50px;object-fit:contain}footer .brand-image{width:160px;height:39px}@media(max-width:800px){header .brand-image{width:155px;height:38px}}

/* Shared controls use consistent inset spacing and icon clearance. */
:root{--control-padding:12px}
button{min-height:36px;padding:8px var(--control-padding)}
.text-button{padding:8px var(--control-padding)}
.field select{appearance:none;min-height:40px;padding:10px 36px 10px var(--control-padding);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%2382837b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.primary{padding:12px var(--control-padding);gap:12px;align-items:center}
#download{padding:10px var(--control-padding)}
.tabs button{padding:8px var(--control-padding)}
.samples button{padding:var(--control-padding);gap:var(--control-padding)}
.zoom-controls{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:6px;padding:3px;background:white}
.zoom-controls button{border:0;background:none;min-height:30px;padding:6px 10px;border-radius:4px;font-size:16px;line-height:1}
.zoom-controls button:hover{background:#eff2e6}
.zoom-controls button:disabled{opacity:.35;cursor:default}
#zoomReset{font-size:10px;min-width:48px}
.preview-toolbar{gap:10px}
@media(max-width:420px){.preview-toolbar{padding:0 12px}#previewLabel{display:none}}

/* Preview: a fixed viewport beside the settings. The artwork is centered while it fits and
   scrolls edge to edge when zoomed (auto margins in a grid never push content out of reach). */
.preview-area{min-height:0;overflow:hidden}
.preview-viewport{position:relative;flex:1 1 0;min-height:365px}
.canvas{position:absolute;inset:0;min-height:0;display:grid;justify-content:normal;align-content:normal;justify-items:normal;align-items:normal;overflow:auto;padding:24px;cursor:grab;touch-action:pan-x pan-y;overscroll-behavior:contain;scrollbar-width:thin;isolation:isolate}
.canvas.panning{cursor:grabbing;user-select:none}
.preview-stage{margin:auto}
.canvas .preview-stage svg,.canvas .preview-stage img{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;pointer-events:none;user-select:none}
@media(max-width:800px){.preview-viewport{flex:none;height:340px;min-height:340px}}
.tabs button:disabled{opacity:.45;cursor:default}
.primary:disabled{opacity:.7;cursor:progress}

/* Tracing progress, shown over the original image. */
.trace-progress{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.trace-progress[hidden]{display:none}
.preview-stage{position:relative}
/* The scan sweeps over the image itself: a lime wash over the scanned part, led by a glowing line. */
.preview-stage.scanning{overflow:hidden}
.preview-stage.scanning::after{content:"";position:absolute;inset:0;background:linear-gradient(#d9f77300 0%,#d9f77333 70%,#d9f773aa 97%,#c3ea3f 99%,#ffffff 100%);box-shadow:0 4px 18px #c9ec5a;animation:scan 2.2s cubic-bezier(.5,0,.5,1) infinite;transform:translateY(-100%);pointer-events:none}
@keyframes scan{to{transform:translateY(100%)}}
.progress-card{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6px 10px;width:min(320px,calc(100% - 32px));padding:12px 14px;background:#fffffff2;border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 24px #24251f1a;font-size:12px}
.progress-card b{font-variant-numeric:tabular-nums;font-weight:600}
.progress-track{grid-column:1/-1;height:4px;border-radius:2px;background:#eef1e6;overflow:hidden}
.progress-track i{display:block;height:100%;width:0;background:#9fc23a;border-radius:2px;transition:width .2s ease}
.spinner{width:14px;height:14px;border-radius:50%;border:2px solid #dfe6c9;border-top-color:#7fa324;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.preview-stage.scanning::after{display:none}.spinner{animation:none}.progress-track i{transition:none}}
