@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@300;400;500&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:#0f1117;--bg2:#181c27;--bg3:#1e2335;
  --border:#2a3050;--accent:#3b82f6;--accent2:#60a5fa;
  --green:#22c55e;--amber:#f59e0b;--red:#ef4444;
  --text:#e2e8f0;--text2:#94a3b8;--text3:#4a5568;
  --sidebar-w:300px;
  --sheet-peek:80px;
  --sheet-full:75vh;
}

html,body{height:100%;overflow:hidden;font-family:'IBM Plex Sans',sans-serif;background:var(--bg);color:var(--text)}
#app{display:flex;height:100vh;position:relative}

/* ── SIDEBAR (DESKTOP) ───────────────────────────────── */
#sidebar{
  width:var(--sidebar-w);min-width:var(--sidebar-w);
  background:var(--bg2);border-right:1px solid var(--border);
  display:flex;flex-direction:column;overflow:hidden;
  transition:width .25s ease,min-width .25s ease;
  z-index:10;position:relative;flex-shrink:0;
}
#sidebar.collapsed{width:0;min-width:0;border-right:none}
#sidebar.collapsed #header,
#sidebar.collapsed #sidebar-scroll,
#sidebar.collapsed #status-bar,
#sidebar.collapsed #results-section{opacity:0;pointer-events:none;transition:opacity .15s}

#collapse-tab{
  position:absolute;top:50%;right:-14px;transform:translateY(-50%);
  width:14px;height:48px;background:var(--bg3);border:1px solid var(--border);
  border-left:none;border-radius:0 6px 6px 0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  z-index:11;transition:background .15s;
}
#collapse-tab:hover{background:var(--bg2)}
#collapse-tab svg{transition:transform .25s ease;flex-shrink:0}
#sidebar.collapsed #collapse-tab{opacity:1;pointer-events:auto}
#sidebar.collapsed #collapse-tab svg{transform:rotate(180deg)}

#header{padding:13px 18px;border-bottom:1px solid var(--border);background:var(--bg3);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
#header h1{font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent2);white-space:nowrap}
#header-actions{display:flex;gap:5px;flex-shrink:0}

.icon-btn{background:var(--bg2);border:1px solid var(--border);border-radius:4px;color:var(--text2);width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;flex-shrink:0}
.icon-btn:hover{border-color:var(--accent);color:var(--accent2)}
.icon-btn.dim{opacity:.35;cursor:default;pointer-events:none}

#sidebar-scroll{flex:1;overflow-y:auto;display:flex;flex-direction:column;min-height:0}
#sidebar-scroll::-webkit-scrollbar{width:3px}
#sidebar-scroll::-webkit-scrollbar-thumb{background:var(--border)}

.section{padding:11px 14px;border-bottom:1px solid var(--border);flex-shrink:0}
.section-label{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);margin-bottom:8px}

/* ── TOOLS ───────────────────────────────────────────── */
.tool-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}
.tool-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:8px 6px;border-radius:5px;cursor:pointer;font-size:11px;font-family:'IBM Plex Sans',sans-serif;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .15s;touch-action:manipulation}
.tool-btn:hover{border-color:var(--accent);color:var(--accent2)}
.tool-btn.active{border-color:var(--accent);background:rgba(59,130,246,.12);color:var(--accent2)}

#radius-controls{display:none;margin-top:8px;flex-direction:column;gap:6px}
#radius-controls.show{display:flex}
.radius-row{display:flex;align-items:center;gap:6px}
.radius-row label{font-size:11px;color:var(--text2);white-space:nowrap;min-width:52px}
.mini-input{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:6px 8px;font-size:14px;font-family:'IBM Plex Mono',monospace;outline:none;min-width:0}
.mini-input:focus{border-color:var(--accent)}
.mini-select{background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text2);padding:6px;font-size:13px;font-family:'IBM Plex Mono',monospace;cursor:pointer;outline:none}
.radius-hint{font-size:10px;color:var(--text3);padding:1px 0}
.go-btn{background:var(--accent);border:none;border-radius:5px;color:#fff;padding:6px 12px;font-size:13px;font-family:'IBM Plex Mono',monospace;cursor:pointer;white-space:nowrap;transition:background .15s;touch-action:manipulation;min-height:36px}
.go-btn:active{background:#1d4ed8}

.btn-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-top:7px}
.action-btn{width:100%;padding:8px 6px;border-radius:5px;border:1px solid;font-size:11px;font-family:'IBM Plex Sans',sans-serif;font-weight:500;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:5px;touch-action:manipulation;min-height:36px}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:active{background:#1d4ed8}
.btn-primary:disabled{opacity:.4;cursor:not-allowed}
.btn-ghost{background:transparent;border-color:var(--border);color:var(--text2)}
.btn-ghost:active{border-color:var(--text2);color:var(--text)}
.btn-ghost.dim{opacity:.4;cursor:default;pointer-events:none}

/* ── OUTPUT / FILTERS ─────────────────────────────────── */
.mode-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}
.mode-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text2);padding:7px 4px;border-radius:5px;cursor:pointer;font-size:11px;font-family:'IBM Plex Mono',monospace;text-align:center;transition:all .15s;touch-action:manipulation;min-height:34px}
.mode-btn:active{border-color:var(--accent);color:var(--accent2)}
.mode-btn.active{border-color:var(--accent);background:rgba(59,130,246,.12);color:var(--accent2)}

#pop-input-row{display:none;align-items:center;gap:8px;margin-top:7px}
#pop-input-row label{font-size:11px;color:var(--text2);white-space:nowrap}
#pop-input{width:80px;background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:5px 7px;font-size:14px;font-family:'IBM Plex Mono',monospace;outline:none}
#pop-input:focus{border-color:var(--accent)}
#pop-status{font-size:10px;color:var(--text3);flex:1}

/* ── TOGGLES ──────────────────────────────────────────── */
.opt-list{display:flex;flex-direction:column;gap:8px}
.opt-row{display:flex;align-items:center;justify-content:space-between;min-height:28px}
.opt-label{font-size:12px;color:var(--text2)}
.toggle{position:relative;width:38px;height:22px;flex-shrink:0}
.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;background:var(--bg3);border:1px solid var(--border);border-radius:11px;cursor:pointer;transition:all .2s}
.toggle-slider:before{content:'';position:absolute;width:16px;height:16px;left:2px;top:2px;background:var(--text3);border-radius:50%;transition:all .2s}
.toggle input:checked+.toggle-slider{background:rgba(59,130,246,.2);border-color:var(--accent)}
.toggle input:checked+.toggle-slider:before{transform:translateX(16px);background:var(--accent2)}

/* ── STATUS ───────────────────────────────────────────── */
#status-bar{padding:8px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text2);min-height:34px;flex-shrink:0}
#status-dot{width:6px;height:6px;border-radius:50%;background:var(--text3);flex-shrink:0;transition:background .3s}
#status-dot.ready{background:var(--green)}
#status-dot.loading{background:var(--amber);animation:pulse 1s infinite}
#status-dot.error{background:var(--red)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* ── RESULTS ──────────────────────────────────────────── */
#results-section{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}
#results-header{padding:8px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:6px;flex-shrink:0}
#results-header .section-label{margin:0;flex-shrink:0}
#result-count{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--accent2);background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.25);padding:2px 8px;border-radius:10px;display:none;white-space:nowrap}

#filter-wrap{padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0;display:none}
#filter-wrap.show{display:block}
#result-filter{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:6px 8px;font-size:14px;font-family:'IBM Plex Sans',sans-serif;outline:none}
#result-filter:focus{border-color:var(--accent)}
#result-filter::placeholder{color:var(--text3)}

#result-list{flex:1;overflow-y:auto;padding:5px;min-height:0;-webkit-overflow-scrolling:touch}
#result-list::-webkit-scrollbar{width:3px}
#result-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}

.result-item{display:flex;flex-direction:column;padding:6px 7px;border-radius:4px;cursor:pointer;transition:background .1s;gap:2px}
.result-item:active{background:var(--bg3)}
.result-row{display:flex;align-items:center;gap:6px;width:100%}
.result-code{font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:500;color:var(--accent2);min-width:46px;flex-shrink:0}
.result-city{font-size:11px;color:var(--text2);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.result-state{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text3);flex-shrink:0}
.result-pop{font-family:'IBM Plex Mono',monospace;font-size:9px;color:var(--text3);flex-shrink:0}
.city-zips{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text3);margin-top:1px}
.copy-row-btn{opacity:0;background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;align-items:center;transition:opacity .1s;flex-shrink:0;min-width:24px;min-height:24px;justify-content:center}
.copy-row-btn:active{color:var(--accent2)}

.demo-row{display:flex;gap:4px;flex-wrap:wrap;padding-left:52px;margin-top:2px}
.demo-badge{font-family:'IBM Plex Mono',monospace;font-size:9px;padding:2px 6px;border-radius:3px;white-space:nowrap}
.demo-own{background:rgba(34,197,94,.15);color:#4ade80;border:1px solid rgba(74,222,128,.2)}
.demo-val{background:rgba(59,130,246,.15);color:#60a5fa;border:1px solid rgba(96,165,250,.2)}
.demo-na{background:rgba(74,85,104,.2);color:var(--text3);border:1px solid var(--border)}
.demo-loading{background:rgba(74,85,104,.15);color:var(--text3);border:1px solid var(--border)}

.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100px;color:var(--text3);font-size:12px;text-align:center;gap:8px;padding:20px;line-height:1.6}

/* ── SAVES PANEL ──────────────────────────────────────── */
#saves-panel{display:none;position:absolute;top:0;left:var(--sidebar-w);width:240px;background:var(--bg2);border:1px solid var(--border);border-left:none;border-radius:0 8px 8px 0;z-index:20;box-shadow:4px 0 16px rgba(0,0,0,.5);flex-direction:column;max-height:100vh;overflow:hidden;transition:left .25s ease}
#saves-panel.open{display:flex}
#saves-header{padding:11px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--bg3);flex-shrink:0}
#saves-header span{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent2)}
#saves-list{flex:1;overflow-y:auto;padding:8px;min-height:0}
.save-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg3);margin-bottom:5px;cursor:pointer;transition:border-color .15s;touch-action:manipulation}
.save-item:active{border-color:var(--accent2)}
.save-name{flex:1;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.save-date{font-size:10px;color:var(--text3);white-space:nowrap}
.save-del{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px 8px;border-radius:3px;font-size:14px;line-height:1;transition:color .1s;flex-shrink:0;min-width:28px;min-height:28px;display:flex;align-items:center;justify-content:center}
.save-del:active{color:var(--red)}
#save-form{padding:10px 12px;border-top:1px solid var(--border);display:flex;gap:6px;flex-shrink:0}
#save-name-input{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:7px 8px;font-size:14px;font-family:'IBM Plex Sans',sans-serif;outline:none;min-width:0}
#save-name-input:focus{border-color:var(--accent)}
#save-name-input::placeholder{color:var(--text3)}
#do-save-btn{background:var(--accent);border:none;border-radius:5px;color:#fff;padding:7px 12px;font-size:13px;font-family:'IBM Plex Mono',monospace;cursor:pointer;white-space:nowrap;min-height:36px}
#do-save-btn:active{background:#1d4ed8}

/* ── EXPORT ───────────────────────────────────────────── */
#export-section{padding:8px 10px;border-top:1px solid var(--border);display:flex;gap:5px;flex-shrink:0}
.export-btn{flex:1;padding:8px 4px;background:var(--bg3);border:1px solid var(--border);border-radius:5px;color:var(--text2);font-size:10px;font-family:'IBM Plex Mono',monospace;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:4px;touch-action:manipulation;min-height:36px}
.export-btn:active{border-color:var(--accent);color:var(--accent2)}
.export-btn:disabled{opacity:.3;cursor:not-allowed;pointer-events:none}

/* ── MAP ──────────────────────────────────────────────── */
#map-wrap{flex:1;position:relative;min-width:0}
#map{width:100%;height:100%}
#map.placing-radius{cursor:crosshair}
.leaflet-draw-toolbar a{border-radius:4px !important}
.leaflet-control-zoom a{border-radius:4px !important}

/* Map search */
#map-search-wrap{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:999;width:360px;max-width:calc(100% - 24px)}
#map-search-row{display:flex;background:#fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.2);overflow:hidden;border:1px solid #ddd}
#map-search-input{flex:1;padding:10px 14px;font-size:14px;font-family:'IBM Plex Sans',sans-serif;border:none;outline:none;color:#222;background:#fff;min-width:0}
#map-search-input::placeholder{color:#aaa}
#map-search-btn{background:#3b82f6;border:none;padding:0 14px;cursor:pointer;color:#fff;display:flex;align-items:center;flex-shrink:0;transition:background .15s;min-width:44px;min-height:44px;justify-content:center}
#map-search-btn:active{background:#1d4ed8}
#map-search-results{background:#fff;border-radius:0 0 8px 8px;border:1px solid #ddd;border-top:none;max-height:220px;overflow-y:auto;display:none}
.search-result-item{padding:10px 14px;font-size:13px;color:#333;cursor:pointer;border-top:1px solid #f0f0f0;line-height:1.4;touch-action:manipulation}
.search-result-item:first-child{border-top:none}
.search-result-item:active{background:#f5f9ff}
.search-result-item strong{color:#111;display:block;font-weight:500}
.search-result-item span{color:#888;font-size:11px}

/* Toast */
#toast{position:fixed;bottom:20px;right:20px;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:10px 14px;border-radius:6px;font-size:12px;font-family:'IBM Plex Mono',monospace;z-index:9999;opacity:0;transform:translateY(6px);transition:all .2s;pointer-events:none;max-width:280px}
#toast.show{opacity:1;transform:translateY(0)}

.zip-label-icon{background:transparent !important;border:none !important;box-shadow:none !important}
.zip-label-text{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;color:#1d4ed8;text-shadow:0 0 3px #fff,0 0 3px #fff;white-space:nowrap;pointer-events:none}

/* ── MOBILE ───────────────────────────────────────────── */
@media(max-width:768px){
  /* Sidebar hidden off-screen */
  #sidebar{
    position:fixed;top:0;left:0;bottom:0;z-index:100;
    width:88vw !important;min-width:0 !important;max-width:340px;
    transform:translateX(0);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    box-shadow:4px 0 24px rgba(0,0,0,.5);
  }
  #sidebar.collapsed{transform:translateX(-105%)}
  #sidebar.collapsed #header,
  #sidebar.collapsed #sidebar-scroll,
  #sidebar.collapsed #status-bar,
  #sidebar.collapsed #results-section{opacity:1;pointer-events:auto}
  #collapse-tab{display:none}

  /* Map full screen */
  #map-wrap{position:fixed;inset:0;z-index:1}

  /* Backdrop */
  #sidebar-backdrop{
    display:block;position:fixed;inset:0;z-index:99;
    background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .28s;
  }
  #sidebar-backdrop.show{opacity:1;pointer-events:auto}

  /* Hide desktop draw controls on mobile */
  .leaflet-draw-toolbar{display:none !important}

  /* Mobile FAB cluster — bottom right */
  #mobile-fabs{
    display:flex;flex-direction:column;align-items:center;gap:10px;
    position:fixed;bottom:calc(var(--sheet-peek) + 16px);right:16px;z-index:50;
  }
  .fab{
    width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 3px 14px rgba(0,0,0,.35);transition:transform .15s,opacity .15s;
    touch-action:manipulation;
  }
  .fab:active{transform:scale(.9)}
  #fab-menu{background:var(--bg3);border:1px solid var(--border);color:var(--text2)}
  #fab-search{background:var(--accent);color:#fff}
  #fab-search.disabled{opacity:.4;pointer-events:none}
  #fab-clear{background:var(--bg3);border:1px solid var(--border);color:var(--text2);width:40px;height:40px}

  /* Bottom sheet */
  #bottom-sheet{
    position:fixed;bottom:0;left:0;right:0;z-index:40;
    background:var(--bg2);border-top:1px solid var(--border);
    border-radius:16px 16px 0 0;
    height:var(--sheet-full);
    transform:translateY(calc(100% - var(--sheet-peek)));
    transition:transform .3s cubic-bezier(.4,0,.2,1);
    display:flex;flex-direction:column;
    box-shadow:0 -4px 20px rgba(0,0,0,.3);
  }
  #bottom-sheet.expanded{transform:translateY(0)}

  #sheet-handle{
    display:flex;flex-direction:column;align-items:center;padding:10px 14px 6px;
    flex-shrink:0;cursor:pointer;user-select:none;touch-action:none;
  }
  #sheet-drag-bar{width:40px;height:4px;background:var(--border);border-radius:2px;margin-bottom:8px}
  #sheet-header{display:flex;align-items:center;justify-content:space-between;width:100%}
  #sheet-title{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text3)}
  #sheet-count{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--accent2);font-weight:500}

  /* Move results section into bottom sheet */
  #results-section{flex:1;min-height:0}

  /* Saves panel full width on mobile */
  #saves-panel{left:0 !important;width:100% !important;border-radius:0;border-left:1px solid var(--border)}

  /* Search box clears the FABs */
  #map-search-wrap{width:calc(100% - 100px);left:12px;transform:none;right:auto;top:12px}

  /* Toast top on mobile */
  #toast{bottom:auto;top:16px;left:50%;right:auto;transform:translateX(-50%) translateY(-8px);max-width:90vw;text-align:center}
  #toast.show{transform:translateX(-50%) translateY(0)}

  /* Bigger radius input on mobile */
  .mini-input{font-size:16px;padding:8px} /* 16px prevents iOS zoom */
  #zip-center-input{font-size:16px}
  #result-filter{font-size:16px}
  #save-name-input{font-size:16px}

  /* Copy buttons always visible */
  .copy-row-btn{opacity:.5}
  .result-item{padding:9px 7px}
}

/* Hide mobile elements on desktop */
#mobile-fabs{display:none}
#bottom-sheet{display:none}
#sidebar-backdrop{display:none}

/* ── ADDITIVE MODE BADGE ──────────────────────────────── */
.additive-badge{
  display:inline-block;
  font-family:'IBM Plex Mono',monospace;
  font-size:8px;font-weight:700;
  letter-spacing:.08em;
  background:rgba(34,197,94,.2);
  border:1px solid rgba(34,197,94,.4);
  color:#4ade80;
  padding:1px 5px;
  border-radius:3px;
  margin-left:5px;
  vertical-align:middle;
}

/* ── STATE FILTER ─────────────────────────────────────── */
#state-filter-row{
  padding:5px 10px;
  border-bottom:1px solid var(--border);
  flex-shrink:0;
  display:flex;
  align-items:center;
  min-height:0;
}
#state-filter-select{
  width:100%;
  background:var(--bg3);
  border:1px solid var(--border);
  border-radius:5px;
  color:var(--text2);
  padding:6px 8px;
  font-size:12px;
  font-family:'IBM Plex Mono',monospace;
  outline:none;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%234a5568' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 8px center;
  padding-right:26px;
}
#state-filter-select:focus{border-color:var(--accent)}
#state-filter-select option{background:var(--bg2);color:var(--text)}

/* ── POPULATION TOTAL BADGE ───────────────────────────── */
.pop-total-badge{
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  color:var(--text3);
  white-space:nowrap;
  flex-shrink:0;
}
#results-header-right{
  display:flex;
  align-items:center;
  gap:6px;
  flex-shrink:0;
}

/* ── COPY BUTTON: always visible on touch devices ─────── */
@media (hover: none) {
  .copy-row-btn { opacity: 1 !important; }
}
/* Desktop: show on row hover */
@media (hover: hover) {
  .result-item:hover .copy-row-btn { opacity: 1; }
}

/* ── EXPORT BUTTON TOOLTIPS ───────────────────────────── */
.export-btn[title]:hover::after{
  content:attr(title);
  position:absolute;
  bottom:calc(100% + 6px);
  left:50%;
  transform:translateX(-50%);
  background:var(--bg3);
  border:1px solid var(--border);
  color:var(--text2);
  font-size:10px;
  padding:4px 8px;
  border-radius:4px;
  white-space:nowrap;
  pointer-events:none;
  z-index:100;
  max-width:200px;
  text-align:center;
  white-space:normal;
  line-height:1.4;
}
#export-section{position:relative}

/* ── FAB DISABLED STATE ───────────────────────────────── */
.fab:disabled{
  opacity:.35;
  cursor:not-allowed;
  pointer-events:none;
}
