@font-face{font-family:Satoshi;src:url(/fonts/satoshi/satoshi-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi/satoshi-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi/satoshi-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi/satoshi-900.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--bg: #f4f1ea;--panel: #fbfaf6;--ink: #1f1c17;--ink-soft: #5b554b;--line: #ddd6c8;--accent: #2c7a44;--accent-ink: #fff;--beta: #b07a1e;--live: #3f7a3f;--green: #2f9e44;--shadow: 0 1px 2px rgba(31, 28, 23, .06), 0 8px 24px rgba(31, 28, 23, .06);font-family:Satoshi,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100vh;display:flex;flex-direction:column}.site-header{display:flex;align-items:baseline;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--line);flex-wrap:wrap}.wordmark{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.wordmark:hover{text-decoration:none}.wordmark-dot{color:var(--green)}.tagline{color:var(--ink-soft);font-size:.9rem}.site-main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:2rem 1.5rem 3rem}.site-footer{border-top:1px solid var(--line);padding:1.25rem 1.5rem;color:var(--ink-soft);font-size:.85rem;text-align:center}.landing{min-height:calc(100vh - 220px);display:flex;align-items:center;position:relative;padding:2rem 0 1rem}.landing-inner{max-width:40rem}.landing h1{font-size:clamp(2.6rem,7vw,5rem);font-weight:900;line-height:1.02;letter-spacing:-.03em;margin:0 0 1.1rem;max-width:13ch}.headline-dot{color:var(--green)}.landing-sub{color:var(--ink-soft);font-size:clamp(1.05rem,2.2vw,1.3rem);line-height:1.55;margin:0 0 1.75rem;max-width:44ch}.scroll-cue{display:inline-flex;align-items:center;gap:.45rem;font-weight:600}.scroll-cue:hover{text-decoration:none}.scroll-cue span{display:inline-block;animation:cue-bob 1.6s ease-in-out infinite}@keyframes cue-bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.tools-section{padding:1rem 0;scroll-margin-top:1.5rem}.section-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:0 0 1rem}.tool-category{margin-bottom:2.25rem}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.tool-card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1.25rem;color:var(--ink);box-shadow:var(--shadow);transition:transform .12s ease,box-shadow .12s ease}.tool-card:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 2px 4px #1f1c1714,0 14px 32px #1f1c171a}.tool-card-disabled{opacity:.6;cursor:default}.tool-card-disabled:hover{transform:none;box-shadow:var(--shadow)}.tool-card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.tool-card h3{font-size:1.15rem;margin:0}.tool-card p{margin:0;color:var(--ink-soft);line-height:1.5;font-size:.95rem}.badge{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .5rem;border-radius:999px;color:#fff;white-space:nowrap}.badge-beta{background:var(--green)}.badge-live{background:var(--live)}.badge-planned{background:var(--ink-soft)}.archsupply-cta{margin-top:2.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.25rem 1.5rem;border-radius:12px;background:var(--ink);color:#f4f1ea;box-shadow:var(--shadow);transition:transform .12s ease,box-shadow .12s ease}.archsupply-cta:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 2px 4px #1f1c172e,0 16px 36px #1f1c1747}.archsupply-cta-text{display:flex;flex-direction:column;gap:.15rem}.archsupply-eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#b8b09f}.archsupply-wordmark{font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.archsupply-dot{color:var(--green)}.archsupply-tagline{font-size:.9rem;color:#cfc8b8;font-style:italic}.archsupply-go{flex:none;font-weight:600;padding:.55rem 1rem;border-radius:8px;border:1px solid rgba(244,241,234,.35);color:#f4f1ea;white-space:nowrap}.archsupply-cta:hover .archsupply-go{background:var(--green);border-color:var(--green)}.tool-nav{margin-bottom:1rem;font-size:.9rem}.tool h1{font-size:1.75rem;margin:0 0 .5rem}.tool-intro{color:var(--ink-soft);line-height:1.6;max-width:44rem}.loading{color:var(--ink-soft)}.drop-zone{border:2px dashed var(--line);border-radius:12px;background:var(--panel);min-height:120px;display:flex;align-items:center;justify-content:center;padding:1.25rem;margin:1.5rem 0 1rem;cursor:pointer;text-align:center;color:var(--ink-soft);transition:border-color .12s ease,background .12s ease}.drop-zone-over{border-color:var(--accent);background:#f3ece1}.drop-zone strong{color:var(--ink)}.scan-list{list-style:none;margin:0 0 1.25rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.scan-item{display:flex;align-items:center;gap:.75rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.5rem .75rem}.scan-index{flex:none;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--accent);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center}.scan-item img{width:56px;height:56px;object-fit:cover;border-radius:6px;border:1px solid var(--line);flex:none}.scan-name{flex:1;font-size:.9rem;word-break:break-all}.scan-actions{display:flex;gap:.25rem;flex:none}.scan-actions button{font:inherit;width:2rem;height:2rem;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;line-height:1}.scan-actions button:disabled{opacity:.4;cursor:not-allowed}.scan-handle{flex:none;cursor:grab;color:var(--ink-soft);font-size:1.15rem;line-height:1;user-select:none}.scan-handle:active{cursor:grabbing}.scan-item-dragging{opacity:.5}.scan-item-over{border-color:var(--accent);box-shadow:inset 0 2px 0 0 var(--accent)}.progress{margin:.5rem 0 1rem}.progress-label{font-size:.85rem;color:var(--ink-soft);margin-bottom:.35rem}.progress-track{height:8px;background:var(--line);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .2s ease}.action-row{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem}.btn-primary,.btn-secondary{font:inherit;font-weight:600;padding:.6rem 1.1rem;border-radius:8px;cursor:pointer;border:1px solid transparent}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:disabled{background:var(--line);color:var(--ink-soft);cursor:not-allowed}.btn-secondary{background:transparent;border-color:var(--accent);color:var(--accent)}.error-msg{color:#9a2b2b;background:#f7e7e2;border:1px solid #e6c4bb;padding:.75rem 1rem;border-radius:8px}.stats-line{color:var(--ink-soft);font-size:.95rem}.quality-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.quality-label{font-size:.85rem;color:var(--ink-soft)}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel)}.segmented-btn{font:inherit;font-size:.9rem;padding:.4rem .85rem;border:none;background:transparent;color:var(--ink-soft);cursor:pointer;border-right:1px solid var(--line)}.segmented-btn:last-child{border-right:none}.segmented-btn-active{background:var(--accent);color:#fff}.segmented-btn:disabled{cursor:not-allowed}.warn-msg{color:#7a5310;background:#f8efda;border:1px solid #e7d4a7;padding:.75rem 1rem;border-radius:8px;line-height:1.5}.export-panel{margin-top:1.5rem;padding:1.25rem;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.export-title{font-size:1rem;margin:0 0 .85rem}.export-controls{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.85rem}.export-field{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem;color:var(--ink-soft);min-width:9rem}.export-field select,.export-field input[type=range]{font:inherit;padding:.4rem .5rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}.export-field input[type=range]{padding:0;accent-color:var(--accent)}.export-readout{font-size:.9rem;color:var(--ink-soft);margin:0 0 1rem}.result-host{margin-top:1rem}.ocr-lang{font:inherit;padding:.4rem .6rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}.ocr-layout{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:1rem}@media (max-width: 720px){.ocr-layout{grid-template-columns:1fr}}.ocr-preview{width:100%;max-height:480px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.ocr-output{display:flex;flex-direction:column;gap:.6rem}.ocr-output textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;line-height:1.5;padding:.75rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);resize:vertical;width:100%}.adjust-controls{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:flex-end;margin:1.25rem 0 1rem}.adjust-controls .export-field{min-width:12rem;flex:1}.adjust-toggles{display:flex;gap:.4rem;flex-wrap:wrap}.toggle-btn{font:inherit;font-size:.9rem;padding:.45rem .85rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink-soft);cursor:pointer}.toggle-btn-active{background:var(--accent);color:#fff;border-color:var(--accent)}.palette-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.6rem;margin-top:1rem}.swatch{font:inherit;border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;background:var(--panel);padding:0;box-shadow:var(--shadow)}.swatch-color{display:block;height:72px}.swatch-hex{display:block;padding:.45rem .5rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;text-align:center;color:var(--ink)}.redact-canvas{max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;cursor:crosshair;touch-action:none;box-shadow:var(--shadow);display:block}.metastrip-flags{flex:1;font-size:.88rem;color:var(--ink-soft);display:flex;align-items:center;gap:.5rem}.metastrip-gps{background:#9a2b2b;color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.04em;padding:.1rem .45rem;border-radius:999px}.convert-row{gap:.85rem}.convert-thumb{width:44px;height:44px;object-fit:cover;border-radius:6px;border:1px solid var(--line);flex:none}.convert-row .hash-name{width:auto;flex:1}.convert-sizes{flex:none;font-size:.88rem;color:var(--ink-soft);white-space:nowrap}.convert-dl{flex:none;padding:.35rem .75rem}.convert-savings{color:var(--green);font-weight:600}.manifest-input{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.manifest-input textarea{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;padding:.6rem .75rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);resize:vertical}.manifest-input .btn-secondary{align-self:flex-start}.hash-table{margin-top:1rem;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}.hash-row{display:flex;align-items:center;gap:1rem;padding:.6rem .85rem;border-bottom:1px solid var(--line)}.hash-row:last-child{border-bottom:none}.hash-name{flex:none;width:14rem;word-break:break-all;font-size:.9rem}.hash-size{display:block;color:var(--ink-soft);font-size:.78rem}.hash-value{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:var(--ink-soft);word-break:break-all}.hash-status{flex:none;font-size:.85rem;font-weight:600}.hash-row-match{background:#e9f3ec}.hash-row-match .hash-status{color:#1f6b39}.hash-row-mismatch{background:#f7e7e2}.hash-row-mismatch .hash-status{color:#9a2b2b}.hash-row-missing .hash-status{color:var(--ink-soft)}.verify-bad{color:#9a2b2b;font-weight:600}.meta-result{margin-top:1.5rem}.meta-head{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:flex-start;margin-bottom:1.5rem}.meta-head>img{width:160px;height:160px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:var(--panel);flex:none}.meta-summary{display:flex;flex-direction:column;gap:.5rem;min-width:16rem;flex:1}.meta-filename{font-weight:700;word-break:break-all}.meta-facts{font-size:.9rem;color:var(--ink-soft)}.meta-banner{margin:.25rem 0;padding:.6rem .85rem;border-radius:8px;background:#eef3ee;border:1px solid var(--line);font-size:.92rem}.meta-banner-warn{background:#f7e7e2;border-color:#e6c4bb;color:#9a2b2b;font-weight:600}.meta-banner-clean{background:#e9f3ec;border-color:#bfe0c8;color:#1f6b39}.meta-removed{font-size:.82rem;color:var(--ink-soft)}.meta-group{margin-bottom:1.25rem}.meta-group h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 .4rem}.meta-group dl{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}.meta-row{display:flex;gap:1rem;padding:.55rem .85rem;border-bottom:1px solid var(--line)}.meta-row:last-child{border-bottom:none}.meta-row dt{flex:none;width:11rem;color:var(--ink-soft);font-size:.9rem}.meta-row dd{margin:0;word-break:break-word;font-size:.92rem}.meta-row-sensitive{background:#f7e7e2}.meta-row-sensitive dt{color:#9a2b2b}.meta-maplink{margin-left:.6rem;font-size:.85rem}.viewer-backdrop{position:fixed;inset:0;z-index:50;background:#14120edb}.viewer-stage{position:absolute;inset:0;overflow:hidden;cursor:grab;touch-action:none}.viewer-stage:active{cursor:grabbing}.viewer-img{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform;background:repeating-conic-gradient(#3a372f 0% 25%,#2a2823 0% 50%) 50% / 24px 24px}.viewer-toolbar{position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.4rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.4rem .5rem;box-shadow:var(--shadow)}.viewer-toolbar button{font:inherit;min-width:2.2rem;height:2.2rem;padding:0 .6rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);cursor:pointer}.viewer-zoom{min-width:3.2rem;text-align:center;font-size:.85rem;color:var(--ink-soft)}.result-canvas{max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;background:repeating-conic-gradient(#eceae3 0% 25%,#f8f6f0 0% 50%) 50% / 20px 20px;box-shadow:var(--shadow)}
