/* OpenLat, map-backed dark design. System fonts only, no CSS framework or CDN. */
:root {
  color-scheme:dark;
  font-family:"Avenir Next", "Trebuchet MS", "Segoe UI", ui-sans-serif, sans-serif;
  --background:#07131e; --ink:#e9f1f6; --muted:#a1b4c1; --soft:#8099aa;
  --line:#273949; --panel:#0c1e2b; --panel-raised:#102635;
  --accent:#59bba2;
  background:var(--background); color:var(--ink); font-synthesis:none;
}
*{box-sizing:border-box} html{background:var(--background);scroll-behavior:smooth}
body{margin:0;min-height:100vh} button,input,textarea,select{font:inherit} button{cursor:pointer} svg{width:100%;height:100%}
a{color:inherit;text-decoration:none} [hidden]{display:none!important}
:focus-visible{outline:2px solid #71cfd3;outline-offset:3px} ::selection{background:#325d70;color:#fff}
.site-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{height:72px;background:#07141fdc;border-bottom:1px solid #294252;position:relative;z-index:10}
.header-inner{width:min(1170px,calc(100% - 64px));height:100%;margin:auto;display:flex;align-items:center;justify-content:space-between}
.brand{display:inline-flex;align-items:center;gap:11px;min-height:48px}
.brand-icon{display:inline-block;width:36px;height:36px;color:#73ccdd}
.brand-name{font-weight:760;letter-spacing:-1px;font-size:24px;color:#f1f7fc}
.site-nav{display:flex;align-items:center;gap:34px;height:100%}
.nav-link{font-size:13px;font-weight:580;color:#b4c5d0;display:flex;align-items:center;height:100%;border-bottom:2px solid transparent;padding-top:2px}
.nav-link:hover,.nav-link.selected{color:#f5fbfe}.nav-link.selected{border-bottom-color:#74c4af}
.nav-divider{width:1px;height:20px;background:#304252;margin:0 0 0 4px}
.header-private{display:flex;align-items:center;gap:8px;color:#90b6ae;font-size:11px;white-space:nowrap}
.header-private svg{width:15px;height:15px}.mobile-menu{display:none}
.main{flex:1;max-width:1170px;width:calc(100% - 64px);margin:0 auto;padding:0 0 58px}
.hero{position:relative;isolation:isolate;overflow:hidden;min-height:360px;background:#091c28;margin:0 -2px;padding:47px 32px 34px 32px;display:flex;align-items:center;border-bottom:1px solid #254053}
.hero::before{content:"";position:absolute;z-index:-2;inset:0;background:url('./coastal-aerial.webp') center right/cover no-repeat;opacity:.98}
.hero::after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#071521 0%,#071521ef 27%,#071521cc 47%,#07152144 77%,#07152118 100%),linear-gradient(0deg,#071521c0,transparent 42%)}
.hero-content{max-width:690px}.section-kicker{font-size:10px;color:#9ddac9;letter-spacing:1.8px;font-weight:770;display:inline-flex;align-items:center;gap:9px}
.kicker-dot{height:6px;width:6px;background:#57cda4;border-radius:50%;box-shadow:0 0 0 4px #58caa31c}
.hero h1{font-size:clamp(35px,4.1vw,51px);font-weight:760;letter-spacing:-1.8px;line-height:1.08;margin:21px 0 16px;max-width:700px;color:#f5f8fb}
.hero p{max-width:565px;color:#b5c9d5;font-size:14.5px;line-height:1.75;margin:0 0 27px}
.search-wrap{display:flex;align-items:center;gap:12px;width:min(440px,100%);height:49px;border:1px solid #436177;background:#112739e0;border-radius:8px;padding:0 16px;transition:border-color .15s,box-shadow .15s}
.search-wrap:focus-within{border-color:#76c7c3;box-shadow:0 0 0 3px #50a29a30}
.search-wrap svg{width:17px;height:17px;flex:none;color:#b5c8d4}
.search-wrap input{min-width:0;flex:1;border:0;outline:0;color:#f2f8fa;background:transparent;height:100%;font-size:13px}
.search-wrap input::placeholder{color:#9db1c0}.search-wrap kbd{border:1px solid #466175;border-radius:4px;color:#9aafbd;padding:2px 5px;font-size:11px;font-family:inherit}
.hero-points{display:flex;gap:23px;flex-wrap:wrap;margin-top:20px;font-size:11px;color:#91b0bf}.checkmark{color:#70cca9;font-weight:760;margin-right:5px}
.tools-section{margin:34px 0 0}.tools-heading{display:flex;justify-content:space-between;align-items:end;margin:0 0 17px;gap:16px}
.eyebrow{font-size:10px;font-weight:700;color:#67ab9c;letter-spacing:1.5px;margin-bottom:6px}
.tools-heading h2{font-size:23px;font-weight:740;letter-spacing:-.6px;margin:0}
.tool-count{font-size:10px;color:#a1c1cf;background:#182a38;border:1px solid #31495a;border-radius:5px;padding:4px 6px;vertical-align:4px;margin-left:6px;letter-spacing:0}
.tools-heading p{font-size:12px;color:#8fa5b4;margin:0 0 3px}
.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid #284153;border-radius:10px;background:#0b1c29;overflow:hidden;gap:0}
.tool-card{display:flex;align-items:center;gap:17px;min-width:0;min-height:89px;padding:16px 21px;position:relative;background:#0b1d2b;transition:background .15s}
.tool-card:nth-child(odd){border-right:1px solid #253c4d}.tool-card:nth-child(-n+6){border-bottom:1px solid #253c4d}
.tool-card:hover{background:#132c3c}.tool-card:focus-visible{z-index:2}
.tool-icon{width:40px;height:40px;flex:0 0 40px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #244760;background:#122a3c;color:#4eaafa}
.tool-icon svg{width:21px;height:21px}
.icon-coordinate{color:#4a9ff5;background:#102b48;border-color:#1d4770}
.icon-measure{color:#6bd0a1;background:#123b35;border-color:#23564b}
.icon-geojson{color:#5eaeff;background:#152f4c;border-color:#274e70}
.icon-csv{color:#75d6a3;background:#15382f;border-color:#235b44}
.icon-kml{color:#b48fff;background:#2e224a;border-color:#46366f}
.icon-simplify{color:#b790ff;background:#30244b;border-color:#4b3a72}
.icon-bbox{color:#f1b86c;background:#3c2c20;border-color:#654a30}
.icon-maplink{color:#5aafff;background:#142e49;border-color:#294a6e}
.tool-card-copy{min-width:0;display:flex;flex-direction:column;gap:5px;flex:1}
.tool-card-copy strong{font-size:13.5px;letter-spacing:-.15px;color:#e5f0f6;font-weight:700}
.tool-card-copy>span{font-size:11.7px;line-height:1.45;color:#9db0be}
.tool-card .arrow{flex:none;margin-left:9px;color:#7ea5b9;font-size:20px;transition:transform .15s}
.tool-card:hover .arrow{transform:translateX(3px);color:#cee4f0}
.empty-search{text-align:center;border:1px dashed #406078;color:#aec3d0;padding:32px;border-radius:9px}.empty-search p{margin:5px 0 0;font-size:12px}
.summary-strip{display:flex;gap:14px;align-items:center;border:1px solid #284153;border-radius:8px;background:#0e2230;padding:17px 19px;margin-top:22px}
.summary-icon{flex:none;display:inline-flex;justify-content:center;align-items:center;border:1px solid #315446;background:#14362e;color:#86d3b0;border-radius:8px;width:36px;height:36px}
.summary-icon svg{width:18px;height:18px}.summary-strip>div{flex:1}.summary-strip strong{font-size:12px;color:#deecee}.summary-strip p{font-size:11.5px;color:#9cadba;margin:3px 0 0;line-height:1.55}
.privacy-pill{font-size:9px;font-weight:720;letter-spacing:.8px;white-space:nowrap;color:#93cbb9;border:1px solid #315446;background:#17362f;border-radius:20px;padding:6px 9px}
.page-footer{border-top:1px solid #23394b;background:#091721;color:#92a4b2;font-size:11px;padding:20px 0}
.footer-inner{width:min(1170px,calc(100% - 64px));margin:auto;display:flex;justify-content:space-between;gap:15px;align-items:center;flex-wrap:wrap}
.footer-inner strong{color:#c4d5de;font-weight:620}.footer-meta{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.footer-meta a{color:#b0d9f5}.footer-meta a:hover{text-decoration:underline}.footer-sep{color:#567080}
/* Tool pages maintain a consistent, streamlined 2-pane workspace. */
.tool-shell{padding-top:32px;max-width:1150px}.workspace-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}
.back-link{font-size:12.5px;color:#9fcce5;font-weight:680}.back-link:hover{text-decoration:underline;color:#d5eeff}
.workspace-tag{font-size:9px;letter-spacing:1.3px;color:#77baa8;font-weight:760}
.workspace-hero{display:flex;align-items:center;gap:17px;margin-bottom:26px;padding-bottom:23px;border-bottom:1px solid #273e4e}
.workspace-hero .tool-icon{width:51px;height:51px;flex-basis:51px}.workspace-hero .tool-icon svg{width:26px;height:26px}
.workspace-hero h1{font-size:29px;font-weight:730;letter-spacing:-.75px;margin:0 0 6px}.workspace-hero p{font-size:12.5px;color:#95aebd;line-height:1.6;margin:0}
.workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
.panel{min-width:0;padding:27px;border-radius:10px;border:1px solid #2a4152;background:#0e2130}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:9px;padding-bottom:17px;margin-bottom:23px;border-bottom:1px solid #284050}
.panel-heading h2{font-size:15px;font-weight:700;letter-spacing:-.1px;margin:0}.panel-heading span{font-size:10.5px;color:#84a69e}
.field{min-width:0;margin-bottom:20px}.field label{display:block;font-weight:620;font-size:12.5px;margin-bottom:8px;color:#cbdde7}
.input,.select,.textarea{display:block;width:100%;min-height:46px;padding:12px 13px;border:1px solid #395266;border-radius:7px;background:#091924;color:#ecf4f7;font-size:13px}
.select{padding-right:16px}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:#72c2c0;box-shadow:0 0 0 3px #33676755}
.textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.65;resize:vertical;min-height:145px}.textarea.long{min-height:200px}
.field-tip{color:#8ca6b6;font-size:11px;line-height:1.55;margin:7px 0 0}
.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-row.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.button-row{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0 0}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;padding:11px 17px;font-size:12.5px;font-weight:700;border-radius:7px;border:1px solid transparent;transition:background .15s}
.button.primary{background:#317fa1;color:#f8fdff;border-color:#408fb1}.button.primary:hover{background:#3b91b6}
.button.secondary{background:#152d3c;border-color:#3d586a;color:#c0dce9}.button.secondary:hover{background:#1f3b4d}.button.small{min-height:36px;padding:9px 12px;font-size:11.5px}
.button:disabled{opacity:.5;cursor:not-allowed}.result-card{min-height:322px}.result-empty{text-align:center;padding:52px 14px 35px}
.empty-icon{border:1px solid #355366;background:#173448;width:44px;height:44px;border-radius:10px;color:#9bc1d8;display:grid;place-items:center;font-size:20px;margin:0 auto 13px}
.result-empty h3{font-size:13px;font-weight:700;margin:0 0 7px}.result-empty p{font-size:11.5px;line-height:1.6;color:#92aaba;max-width:265px;margin:auto}
.result-status{display:none;color:#83d0aa;font-weight:700;font-size:11.5px;margin:0 0 12px}.result-status.on{display:block}
.output{display:none;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;max-height:380px;background:#081822;border:1px solid #335064;color:#d4e7ef;padding:15px;border-radius:7px;margin:0;font:12px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace}.output.on{display:block}
.result-actions{display:none;gap:9px;flex-wrap:wrap;margin-top:15px}.result-actions.on{display:flex}.result-note{font-size:11px;color:#9db2c0;margin:12px 0 0;line-height:1.6}
.dropzone{text-align:center;border:1px dashed #4c7086;background:#112a39;border-radius:8px;padding:18px 12px;margin-bottom:20px}.dropzone.dragging{background:#183f4f;border-color:#77c6c3}.dropzone p{font-size:12px;color:#c6dce8;margin:0;font-weight:650}.dropzone small{display:block;margin:8px 0 13px;color:#96b4c1;font-size:10.5px}.file-input{display:none}
.preview-canvas{display:none;width:100%;margin-top:15px;background:#0d1d2b;border:1px solid #365467;border-radius:7px;aspect-ratio:1.55}.preview-canvas.on{display:block}
.tool-hint{margin-top:22px;padding:12px 14px;background:#17303f;border-left:2px solid #54869b;color:#a6bfcd;font-size:11px;line-height:1.65}.tool-hint strong{color:#cee1ed}
.error-message{display:none;margin-top:12px;padding:12px;color:#f3b2b5;background:#322029;border:1px solid #744b50;border-radius:7px;font-size:12px;line-height:1.55}.error-message.on{display:block}
.about-block{max-width:960px;padding-top:36px}.about-block h1{font-size:clamp(30px,4vw,39px);letter-spacing:-1px;margin:17px 0}.about-block>p{font-size:14px;line-height:1.85;color:#aabfcc}
.about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-top:28px}.about-grid .panel h2{font-size:15px;margin:0 0 12px}.about-grid .panel p{font-size:12px;color:#a1bac8;line-height:1.8;margin:0}
.toast{position:fixed;right:24px;bottom:23px;background:#1e465b;border:1px solid #4a8596;color:#f4f9fc;padding:12px 17px;font-size:12px;border-radius:7px;z-index:100;opacity:0;pointer-events:none;transform:translateY(9px);transition:opacity .15s,transform .15s;box-shadow:0 12px 30px #01050844}.toast.show{opacity:1;transform:none}
@media(min-width:1180px){.hero{margin-left:0;margin-right:0;padding-left:37px}.main{padding-bottom:66px}}
@media(max-width:880px){.workspace-grid{grid-template-columns:1fr}.hero::before{background-position:60% center}}
@media(max-width:680px){
  .topbar{height:62px}.header-inner,.footer-inner{width:calc(100% - 34px)}.brand-icon{width:31px;height:31px}.brand-name{font-size:22px}
  .mobile-menu{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;background:#132a39;border:1px solid #304b5c;border-radius:7px;color:#cadbe5;padding:9px}
  .site-nav{display:none;position:absolute;top:62px;right:0;left:0;height:auto;flex-direction:column;align-items:stretch;gap:0;background:#0d2030;border-bottom:1px solid #345064;padding:10px 18px 15px;box-shadow:0 15px 25px #0005}
  .site-nav.open{display:flex}.nav-link{height:auto;padding:14px 9px;border:0;border-radius:6px}.nav-link.selected{background:#193647;border:0}.nav-divider{width:100%;height:1px;margin:6px 0}.header-private{padding:12px 9px}
  .main{width:100%;padding:0 17px 40px}.hero{margin:0 -17px;min-height:320px;padding:39px 24px 33px}.hero::after{background:linear-gradient(90deg,#071521ef,#071521da 60%,#0715218c),linear-gradient(0deg,#07152194,transparent 50%)}
  .hero h1{font-size:37px;line-height:1.1;letter-spacing:-1.35px}.hero p{font-size:13.5px}.hero-points{gap:13px;font-size:10.5px}
  .tools-section{margin-top:26px}.tools-heading h2{font-size:21px}.tools-heading p{font-size:11px}
  .tool-grid{grid-template-columns:1fr}.tool-card:nth-child(odd){border-right:0}.tool-card:nth-child(-n+7){border-bottom:1px solid #253c4d}.tool-card{min-height:84px;padding:14px}.tool-card-copy>span{font-size:11px}.tool-icon{width:38px;height:38px;flex-basis:38px}
  .summary-strip{align-items:flex-start;padding:15px}.privacy-pill{display:none}.page-footer{padding:22px 0}.footer-inner{align-items:flex-start;flex-direction:column;gap:10px}
  .tool-shell{padding-top:24px}.workspace-hero h1{font-size:25px}.panel{padding:19px}.about-grid{grid-template-columns:1fr}.about-block{padding-top:26px}
}
@media(max-width:405px){.form-row,.form-row.three{grid-template-columns:1fr;gap:0}.tools-heading p{display:none}.hero h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media(prefers-contrast:more){:root{--muted:#d1e0eb;--line:#577184}.input,.select,.textarea,.search-wrap{border-color:#86a3b6}}

/* Local aerial artwork is purely decorative; tools do not fetch map tiles. */
.workspace-hero{position:relative;isolation:isolate;overflow:hidden;border-radius:10px;padding:18px 20px 21px;margin-left:-2px;margin-right:-2px;background:#0a1d2b;border:1px solid #263f52}
.workspace-hero::before{content:'';position:absolute;inset:0;z-index:-2;background:url('./coastal-aerial.webp') center 48%/cover no-repeat;opacity:.52}
.workspace-hero::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#081924 0%,#081924ee 35%,#081924a6 69%,#08192468 100%)}
@media(max-width:680px){.workspace-hero::before{background-position:70% center}.workspace-hero::after{background:linear-gradient(90deg,#081924f7,#081924d9)}}

/* OpenLat bespoke typography and new-tool controls; no external font requests. */
.brand-name,.hero h1,.tools-heading h2,.workspace-hero h1,.panel-heading h2,.about-block h1{font-family:"Trebuchet MS","Avenir Next",ui-sans-serif,sans-serif;letter-spacing:-.045em}
.brand-name{font-size:26px;font-weight:800;letter-spacing:-1.5px}
.hero h1{font-weight:800;line-height:1.06}
.tool-card-copy strong{font-weight:750;letter-spacing:-.02em}
.tool-grid .tool-card{border-bottom:1px solid #253c4d}
.tool-grid .tool-card:nth-last-child(-n+1){border-bottom:0}
.tool-grid .tool-card:nth-last-child(2):nth-child(odd){border-bottom:0}
.icon-photo{color:#76c7e8;background:#123647;border-color:#315c70}
.icon-privacy{color:#94dfb5;background:#173e32;border-color:#2a6a51}
.icon-gpx{color:#ffa969;background:#403021;border-color:#6d4934}
.icon-convertfile{color:#c99bfa;background:#34264e;border-color:#503b70}
.icon-land{color:#ecce89;background:#403a26;border-color:#686040}
.extra-visual:not(:empty){margin-top:15px;padding:15px;border:1px solid #334e60;border-radius:8px;background:#0b1b29}
.extra-visual img{display:block;max-width:100%;max-height:290px;margin:auto;border-radius:6px;object-fit:contain}
.extra-visual a{display:inline-block;margin:12px 10px 2px 0;color:#a6e9dd;text-decoration:underline;text-underline-offset:3px;font-size:12px}
.extra-visual small{color:#9eb5c2;display:block;font-size:11px;line-height:1.6}
.file-selector{border:1px dashed #496a7c;border-radius:9px;padding:20px;text-align:center;background:#112735;transition:background .15s,border-color .15s}
.file-selector.dragging{background:#1e3d4e;border-color:#91cfc9}
.file-selector strong{display:block;font-size:13px;margin-bottom:7px}
.file-selector p{color:#a3bac9;line-height:1.6;font-size:11.5px;margin:0 0 12px}
.file-selector .file-picked{margin:11px auto 0;font-size:11.5px;color:#96e1be;overflow-wrap:anywhere}
.file-selector input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.select-helper{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:18px 0}
.pill-tag{font-size:10px;letter-spacing:.04em;border:1px solid #3c5a67;background:#193242;color:#add6db;border-radius:100px;padding:5px 9px}
.extra-note{font-size:11px;color:#a7bdc9;line-height:1.8;margin-top:17px}
.muted-inline{font-size:11px;color:#96abb8;line-height:1.6}
.output{font-variant-numeric:tabular-nums}
@media(max-width:680px){.brand-name{font-size:23px}.hero h1{letter-spacing:-.04em}.file-selector{padding:16px 12px}}

/* New utilities and keyboard accessibility. All visual assets remain local. */
.icon-geohash{color:#8ddad6;background:#14353e;border-color:#2e6570}
.icon-wkt{color:#d5b1f8;background:#302544;border-color:#5e4474}
.icon-polyline{color:#ffca83;background:#3b2d26;border-color:#765141}
.icon-bearing{color:#a1d9a2;background:#203e30;border-color:#3f6e53}
.icon-format{color:#88c0e7;background:#1d3347;border-color:#36617b}
.conversion-target{margin-top:19px}
.button:disabled{opacity:.66;cursor:progress}
.input:focus-visible,.textarea:focus-visible,.select:focus-visible,.button:focus-visible,.tool-card:focus-visible{outline:2px solid #8ed4cb;outline-offset:2px}
