:root{--ink: #0c2f33;--ink-soft: #1a454b;--teal: #147a7f;--teal-deep: #0a4f54;--sand: #c9985a;--sand-soft: #e8d2b0;--mist: #e8f2f1;--paper: #f3f7f6;--line: rgba(12, 47, 51, .12);--danger: #b42318;--radius: 18px;--font: "Figtree", "Segoe UI", sans-serif;--font-display: "Bricolage Grotesque", "Figtree", sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--shadow: 0 18px 50px rgba(12, 47, 51, .12)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,a{font:inherit}.page{position:relative;min-height:100dvh;display:flex;flex-direction:column;overflow-x:clip}.atmosphere{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(900px 520px at 8% -5%,rgba(20,122,127,.22),transparent 58%),radial-gradient(700px 480px at 96% 8%,rgba(201,152,90,.18),transparent 55%),radial-gradient(600px 400px at 50% 110%,rgba(10,79,84,.1),transparent 50%),repeating-linear-gradient(-18deg,transparent,transparent 14px,rgba(12,47,51,.015) 14px,rgba(12,47,51,.015) 15px),linear-gradient(165deg,#eef6f5,#f5f3ee 48%,#e7f0ef);animation:atmosphere-drift 18s ease-in-out infinite alternate}@keyframes atmosphere-drift{0%{filter:hue-rotate(0deg) saturate(1);transform:scale(1)}to{filter:hue-rotate(8deg) saturate(1.05);transform:scale(1.03)}}.topbar,.main,.footer{position:relative;z-index:1}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:calc(14px + var(--safe-top)) 22px 10px}.brand-lockup{display:inline-flex;text-decoration:none}.brand-logo{height:38px;width:auto;display:block;object-fit:contain}.privacy-banner{margin:0;padding:8px 12px;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--teal-deep);background:#e8f2f1d9;border:1px solid var(--line);border-radius:999px}.main{flex:1;width:min(1120px,calc(100% - 32px));margin:0 auto;padding:8px 0 48px}.hero{text-align:center;padding:clamp(28px,7vh,64px) 0 28px;animation:hero-rise .85s cubic-bezier(.22,1,.36,1) both}@keyframes hero-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.brand-eyebrow{margin:0 0 8px;font-family:var(--font-display);font-size:clamp(1.05rem,2.4vw,1.35rem);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--teal)}.brand-hero{margin:0;font-family:var(--font-display);font-size:clamp(2.4rem,11vw,6.4rem);font-weight:800;line-height:.92;letter-spacing:-.04em;color:var(--ink);overflow-wrap:anywhere}.hero-lead{margin:18px auto 28px;max-width:34rem;font-size:1.05rem;line-height:1.55;color:var(--ink-soft)}.dropzone{position:relative;isolation:isolate;width:min(520px,100%);margin:0 auto;padding:36px 24px;border-radius:var(--radius);border:1.5px dashed rgba(20,122,127,.45);background:#ffffff8c;box-shadow:var(--shadow);cursor:pointer;overflow:hidden;transition:border-color .25s ease,background .25s ease,transform .25s ease}.dropzone:hover,.dropzone.is-over,.dropzone:focus-visible{outline:none;border-color:var(--teal);background:#ffffffc7;transform:translateY(-2px)}.drop-pulse{position:absolute;inset:-40%;z-index:-1;background:radial-gradient(circle at 50% 50%,rgba(201,152,90,.16),transparent 45%);animation:pulse-breathe 3.6s ease-in-out infinite}@keyframes pulse-breathe{0%,to{opacity:.45;transform:scale(.92)}50%{opacity:1;transform:scale(1.05)}}.drop-copy{display:grid;gap:6px}.drop-copy strong{font-family:var(--font-display);font-size:1.25rem;font-weight:700;color:var(--ink)}.drop-copy span{font-size:.92rem;color:var(--ink-soft)}.progress-block{width:min(420px,100%);margin:22px auto 0}.progress-track{height:6px;border-radius:999px;background:#0c2f3314;overflow:hidden}.progress-bar{height:100%;width:40%;border-radius:inherit;background:linear-gradient(90deg,var(--teal-deep),var(--sand));animation:progress-slide 1.2s ease-in-out infinite}@keyframes progress-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}.progress-label{margin:10px 0 0;font-size:.88rem;color:var(--ink-soft)}.error-msg{margin:16px auto 0;max-width:36rem;color:var(--danger);font-weight:600}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.workspace{display:grid;gap:28px;margin-top:12px;padding-top:8px;border-top:1px solid var(--line)}.reveal{animation:reveal-up .7s cubic-bezier(.22,1,.36,1) both}@keyframes reveal-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media(min-width:900px){.workspace{grid-template-columns:minmax(240px,320px) 1fr;align-items:start}}.preview-pane{display:grid;gap:14px}.preview-frame{width:100%;max-width:100%;aspect-ratio:1;max-height:min(420px,55vw);border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#147a7f14,#c9985a14),#fff;border:1px solid var(--line)}.preview-frame img{width:100%;height:100%;max-width:100%;object-fit:contain;display:block}.preview-fallback{height:100%;display:grid;place-items:center;color:var(--ink-soft)}.file-meta{list-style:none;margin:0;padding:0;display:grid;gap:8px}.file-meta li{display:flex;justify-content:space-between;gap:12px;font-size:.9rem}.file-meta span{color:var(--ink-soft)}.file-meta strong{font-weight:600;text-align:right;overflow-wrap:anywhere;word-break:break-word;max-width:65%}.action-row{display:flex;flex-wrap:wrap;gap:10px}.btn{appearance:none;border:1px solid transparent;border-radius:12px;padding:11px 16px;font-weight:600;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:not(:disabled):hover{transform:translateY(-1px)}.btn-primary{background:var(--ink);color:#f4faf9}.btn-primary:not(:disabled):hover{background:var(--teal-deep)}.btn-accent{background:var(--sand);color:var(--ink)}.btn-accent:not(:disabled):hover{background:#d4a86a}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:not(:disabled):hover{border-color:var(--teal);color:var(--teal-deep)}.detail-pane{display:grid;gap:22px}.detail-pane h2{margin:0 0 10px;font-family:var(--font-display);font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.gps-block{padding-bottom:4px}.gps-coords{margin:0 0 8px;font-size:1.05rem;font-variant-numeric:tabular-nums}.gps-alt{color:var(--ink-soft);font-size:.95rem}.maps-link{color:var(--teal-deep);font-weight:650;text-underline-offset:3px}.maps-link:hover{color:var(--sand)}.info-grid{margin:0;display:grid;gap:6px 18px}@media(min-width:640px){.info-grid{grid-template-columns:1fr 1fr}}.info-row{display:grid;grid-template-columns:7.5rem 1fr;gap:8px;font-size:.92rem}.info-row dt{margin:0;color:var(--ink-soft)}.info-row dd{margin:0;font-weight:600;word-break:break-word}.edit-hint{margin:0 0 14px;font-size:.9rem;color:var(--ink-soft)}.edit-grid{display:grid;gap:12px;margin-bottom:14px}@media(min-width:640px){.edit-grid{grid-template-columns:1fr 1fr}.edit-grid .span-2{grid-column:1 / -1}}.edit-grid label{display:grid;gap:6px;font-size:.82rem;font-weight:600;color:var(--ink-soft)}.edit-grid input,.search-wrap input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#ffffffb3;color:var(--ink)}.edit-grid input:focus,.search-wrap input:focus{outline:2px solid rgba(20,122,127,.35);border-color:var(--teal)}.table-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}.table-head h2{margin:0}.search-wrap{flex:1;min-width:180px;max-width:280px}.table-scroll{max-height:min(420px,55vh);overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px;background:#ffffff8c;max-width:100%}table{width:100%;min-width:0;border-collapse:collapse;font-size:.86rem;table-layout:fixed}th,td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}th:first-child,td:first-child{width:38%}td code,.cell-value{display:block;overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap}th{position:sticky;top:0;background:#e7f0ef;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}td code{font-family:ui-monospace,Cascadia Code,SF Mono,Menlo,monospace;font-size:.8rem;color:var(--teal-deep)}.empty-cell{text-align:center;color:var(--ink-soft)}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding:18px 22px calc(18px + var(--safe-bottom));font-size:.82rem;color:var(--ink-soft);border-top:1px solid var(--line)}.footer a{color:var(--teal-deep)}.insight-block,.ela-block,.gps-block,.camera-block,.edit-block,.table-block{min-width:0;max-width:100%}.insight-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:8px}.insight-head h2{margin:0}.insight-body{margin:0 0 8px;font-size:.95rem;line-height:1.5;color:var(--ink-soft);overflow-wrap:anywhere}.insight-body.muted{color:#1a454bd9}.signal-list{margin:0;padding-left:1.1rem;color:var(--ink);font-size:.9rem}.verdict{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);background:#ffffffb3;white-space:nowrap}.verdict-verified{background:#b423181f;color:#8a1c14;border-color:#b4231840}.verdict-likely{background:#c9985a38;color:#6b4a1e;border-color:#c9985a66}.verdict-possible{background:#147a7f1f;color:var(--teal-deep)}.verdict-none{background:#0c2f330f;color:var(--ink-soft)}.ela-frame{width:100%;max-width:100%;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#111}.ela-frame img{display:block;width:100%;height:auto;max-height:min(360px,50vh);object-fit:contain}.main,.workspace,.detail-pane,.preview-pane{min-width:0}@media(max-width:640px){.topbar{flex-direction:column;align-items:flex-start}.privacy-banner{align-self:stretch;text-align:center}.info-row{grid-template-columns:1fr;gap:2px}.main{width:min(100% - 20px,1120px)}.preview-frame{max-height:52vw}.action-row .btn{flex:1 1 auto}th,td{padding:8px}}@media(prefers-reduced-motion:reduce){.atmosphere,.drop-pulse,.progress-bar,.hero,.reveal{animation:none!important}}
