:root{
  --bg:#f4f6f8;
  --panel:#ffffff;
  --line:#d8dee6;
  --text:#1f2937;
  --sub:#5f6b7a;
  --accent:#184eae;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--text);background:var(--bg)}
button,input,select{font:inherit}
a{text-decoration:none;color:inherit}
.topbar{height:64px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:1200;gap:12px}
.brandBlock{display:flex;align-items:center;gap:10px;min-width:0;justify-self:start}.brandBlock h1{font-size:26px;margin:0 0 2px;font-weight:800}.brandBlock p{margin:0;color:var(--sub);font-size:13px}.topActions{display:flex;gap:8px;justify-self:center;align-items:center}.topLinks{display:flex;gap:8px;justify-self:end;align-items:center}
.iconBtn,.topActions button,.segButtons button,.row button,.fileBtn,.ghost,.tiny,.topLinkBtn,.printModeActions button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;cursor:pointer}.topActions button,.row button,.topLinkBtn,.printModeActions button{font-weight:700}
.iconBtn{font-size:18px;line-height:1;padding:10px 12px;display:none}
.topActions button,.segButtons button.active,.fileBtn.primary,.topLinkBtn{background:var(--accent);color:#fff;border-color:var(--accent)}
.layout{display:grid;grid-template-columns:330px 1fr;height:calc(100% - 64px)}
.panel{overflow:auto;padding:12px;border-right:1px solid var(--line);background:#f2f4f7}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.card h2{margin:0 0 12px;font-size:18px}
.label{display:block;font-weight:700;margin:0 0 6px}
input[type=text],input[type=search],select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}.savedProjectRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.deleteSavedBtn{white-space:nowrap;padding:11px 12px;min-width:72px}
.fileBtn{display:block;text-align:center;font-weight:700;margin-top:10px}.fileBtn.sublink{margin-top:8px;background:#fff}.fileBtn.ghost,button.ghost{background:#fff;color:var(--text)}
.helpText{font-size:13px;color:var(--sub);margin:8px 0 0}
.guideBox{margin-top:10px;padding:12px;border-radius:12px;background:#f7f8fb;border:1px solid #e7ebf2;font-size:13px;line-height:1.55}.guideBox p{margin:0 0 6px}.guideBox ol{margin:0;padding-left:20px}
.progressBox{margin-top:10px;padding:10px 12px;border-radius:12px;background:#f7f8fb;border:1px solid #e7ebf2;font-size:13px}.progressBox progress{width:100%;margin-top:8px}
.listBox,.layerList{border:1px solid var(--line);border-radius:12px;min-height:72px;max-height:240px;overflow:auto;background:#fff}
.pointRow{display:flex;gap:8px;align-items:center;width:100%;padding:10px 12px;border:0;border-bottom:1px solid #edf1f5;background:#fff;text-align:left;cursor:pointer}.pointRow:last-child{border-bottom:0}.pointTag{display:inline-flex;align-items:center;justify-content:center;min-width:42px;padding:3px 7px;border-radius:999px;font-size:12px;font-weight:800}
.empty{padding:12px;color:var(--sub);font-size:13px}
.calcSlots{display:grid;grid-template-columns:1fr;gap:10px}.calcSlot{border:1px solid var(--line);border-radius:12px;padding:10px;background:#fbfcfd}.calcHead{display:flex;justify-content:space-between;align-items:center;font-weight:800;margin-bottom:8px}.tiny{padding:4px 9px;border-radius:999px;font-size:12px}.calcPointBox{min-height:60px}.calcPointName{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.calcMeta{font-size:12px;color:var(--sub);margin-top:4px}.calcButtons{margin-top:10px}.calcResult{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff}.calcTable{width:100%;border-collapse:collapse;font-size:14px}.calcTable th,.calcTable td{padding:8px 6px;border-bottom:1px solid #edf1f5;text-align:left}.calcTable tr:last-child th,.calcTable tr:last-child td{border-bottom:0}.calcNote.warn,.warnBox{font-size:13px;color:#8a3f00;background:#fff6ea;border:1px solid #f2d3a4;border-radius:10px;padding:8px 10px;margin-bottom:8px}
.segButtons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.checkRow{display:flex;align-items:center;gap:8px;margin:8px 0}
.layerCard{padding:10px 12px;border-bottom:1px solid #edf1f5}.layerCard:last-child{border-bottom:0}.layerHead{display:flex;align-items:center;gap:8px}.layerHead strong{flex:1;min-width:0;word-break:break-all}.meta{font-size:12px;color:var(--sub);margin-top:6px;word-break:break-all}.status{font-size:12px;font-weight:800;color:#116329;background:#eaf7ee;padding:3px 8px;border-radius:999px}.status.warn{color:#8a3f00;background:#fff0da}.crsMini{margin-top:8px;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer}
.mapWrap{position:relative;min-width:0}#map{height:100%;width:100%;background:#dde3ea}.mapStatus{position:absolute;top:12px;left:58px;z-index:800;background:rgba(17,24,39,.84);color:#fff;padding:10px 12px;border-radius:12px;font-size:13px;max-width:min(440px,calc(100% - 24px))}.publicCanvas{position:absolute;inset:0;z-index:450;pointer-events:none}.leaflet-popup-pane{z-index:3000!important}.leaflet-popup{z-index:3001!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{position:relative;z-index:3002}.mapWrap.popup-open .publicCanvas,.mapWrap.popup-open .mapStatus,.mapWrap.popup-open .rangeSelectHint{visibility:hidden!important}
.pr-marker{background:transparent;border:0}.pr-wrap{position:relative;display:flex;align-items:center;gap:6px;white-space:nowrap;filter:drop-shadow(0 1px 1px rgba(255,255,255,.85))}.calc-slot-badges{position:absolute;left:-2px;top:-25px;display:flex;gap:3px;z-index:20}.calc-slot-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:8px;background:#e6007e;color:#fff;border:2px solid #fff;font-size:12px;font-weight:900;line-height:1;box-shadow:0 1px 4px rgba(0,0,0,.22)}.pr-symbol{font-size:19px;font-weight:900;color:var(--pt-color,#333);line-height:1}.pr-type{font-size:12px;font-weight:800;background:var(--pt-color,#333);color:var(--pt-text,#fff);padding:2px 7px;border-radius:999px}.pr-name{font-size:12px;font-weight:700;color:#111;background:rgba(255,255,255,.96);padding:2px 6px;border-radius:999px}
.parcel-label{background:rgba(255,255,255,.86);border:1px solid rgba(0,0,0,.08);color:#111;font-size:12px;padding:2px 4px;border-radius:4px}
.popup{font-size:13px;line-height:1.5}.popup small{color:var(--sub)}.popupActions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.popupActions button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}.popupActions .dangerAction{border-color:#b42318;color:#b42318;background:#fff7f6;font-weight:800}
dialog{border:0;border-radius:18px;padding:0;max-width:min(92vw,420px)}dialog::backdrop{background:rgba(17,24,39,.4)}.dialogBody{padding:18px}.dialogActions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:rgba(17,24,39,.92);color:#fff;padding:10px 14px;border-radius:999px;z-index:2000;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.18)}

.dropZoneHint{position:absolute;inset:18px;z-index:2600;border:3px dashed #e6007e;border-radius:18px;background:rgba(255,255,255,.90);display:flex;align-items:center;justify-content:center;text-align:center;font-size:22px;font-weight:900;color:#8a1c61;pointer-events:none;box-shadow:0 12px 36px rgba(0,0,0,.16)}.dropZoneHint[hidden]{display:none!important}.mapWrap.drop-active #map{filter:brightness(.92)}#measureStartBtn.active{background:#e6007e;color:#fff;border-color:#e6007e}
.toolBlock{border-top:1px solid #edf1f5;padding-top:12px;margin-top:12px}.toolBlock:first-of-type{border-top:0;padding-top:0;margin-top:0}.mapToolButtons{margin-top:8px}.measurePointGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.measurePointCard{border:1px solid var(--line);border-radius:12px;padding:10px;background:#fbfcfd}.measurePointHead{font-weight:800;margin-bottom:8px}.printModeBar{position:absolute;left:50%;top:12px;transform:translateX(-50%);z-index:1200;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:16px;padding:10px 14px;display:flex;align-items:center;gap:12px;box-shadow:0 8px 24px rgba(0,0,0,.14);max-width:min(calc(100% - 24px),760px)}.printModeBar[hidden]{display:none!important}.printModeBar span{font-size:13px;font-weight:700}.printModeActions{display:flex;gap:8px;margin-left:auto}.measureBadgeIcon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;background:#e6007e;color:#fff;border:2px solid #fff;font-size:14px;font-weight:900;box-shadow:0 2px 8px rgba(0,0,0,.22)}.mapToolLabel{background:rgba(255,255,255,.96);border:1px solid rgba(0,0,0,.08);color:#111;font-size:12px;padding:3px 6px;border-radius:999px;font-weight:800}.print-mode .topbar{display:none}.print-mode .layout{grid-template-columns:1fr;height:100vh}.print-mode .panel{display:none}.print-mode .mapWrap{height:100vh}.print-mode #map{height:100vh}
@media (max-width:760px){
  .layout{grid-template-columns:1fr}.panel{position:fixed;top:64px;left:0;bottom:0;width:min(92vw,360px);z-index:1300;transform:translateX(-105%);transition:transform .2s;background:#f2f4f7;display:block}.panel.open{transform:translateX(0)}
  .topbar{grid-template-columns:minmax(0,1fr) auto auto;height:auto;min-height:64px}.iconBtn{display:inline-flex}.topLinks{gap:6px}.topActions button,.topLinkBtn,.printModeActions button{padding:9px 11px}.brandBlock h1{font-size:20px}.brandBlock p{font-size:12px}.segButtons{grid-template-columns:repeat(3,1fr)}.measurePointGrid{grid-template-columns:1fr}.printModeBar{left:12px;right:12px;transform:none;max-width:none;flex-direction:column;align-items:stretch}.printModeActions{margin-left:0;justify-content:flex-end;width:100%}
}
.stepLabel{margin-top:14px;font-weight:800;font-size:14px;color:var(--text)}
.calcTabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}.calcTabs button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 6px;font-weight:800;font-size:12px;cursor:pointer}.calcTabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.calcPanel[hidden]{display:none!important}.calcInputBlock{margin-top:8px}.calcInputBlock input,.calcPanel>label input{width:100%;margin-top:5px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:#fff}.dmsGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.dmsGrid label{font-size:12px;font-weight:700}.dmsGrid input{width:100%;margin-top:4px;padding:9px 7px;border:1px solid var(--line);border-radius:9px}.wideAction{width:100%;margin-top:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:10px;padding:10px 12px;font-weight:800;cursor:pointer}.wideAction:disabled{opacity:.45;cursor:not-allowed}.addPointAction{background:#8a1c61;border-color:#8a1c61}.areaPointList{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;min-height:54px}.areaPointRow{display:grid;grid-template-columns:26px auto 1fr 30px;gap:7px;align-items:center;padding:8px 9px;border-bottom:1px solid #edf1f5}.areaPointRow:last-child{border-bottom:0}.areaPointRow button{border:0;background:transparent;font-size:18px;cursor:pointer;color:var(--sub)}.areaIndex{width:24px;height:24px;border-radius:999px;background:#eef2f7;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}.areaPointName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edgeDetails{margin-top:8px}.edgeDetails summary{cursor:pointer;font-weight:800;padding:6px 0}.calcTable small{color:var(--sub)}

.simaExportCard .simaModeButtons button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.simaExportRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;margin-top:10px}.simaExportRow .label{margin:0}.selectionStatus{margin:10px 0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;font-size:13px;font-weight:700}.selectionStatus.active{background:#eef5ff;border-color:#9bbcff;color:#123f8f}.export-selected-marker .pr-wrap{outline:3px solid #ff00a8;outline-offset:3px;border-radius:999px}.export-selected-parcel{filter:drop-shadow(0 0 2px rgba(255,0,168,.9))}.mapWrap.range-select-active{cursor:crosshair}.rangeSelectHint{position:absolute;top:54px;left:12px;z-index:850;background:#fff;color:#111;border:2px solid #ff00a8;border-radius:10px;padding:8px 10px;font-size:13px;font-weight:800;box-shadow:0 4px 16px rgba(0,0,0,.15)}
/* calculation suite */
.calcTabs{grid-template-columns:repeat(4,minmax(0,1fr))}
.calcSlots.twoCol{grid-template-columns:repeat(2,minmax(0,1fr))}
.manualCoordBox{border:1px solid var(--line);border-radius:12px;background:#fbfcfd;margin-bottom:10px;padding:8px 10px}
.manualCoordBox summary{cursor:pointer;font-weight:800;padding:4px 0}
.manualGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.manualGrid label,.twoInputGrid label{font-size:12px;font-weight:700}
.manualGrid input,.twoInputGrid input{width:100%;margin-top:4px;padding:9px 8px;border:1px solid var(--line);border-radius:9px;background:#fff}
.manualTargetButtons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}
.manualTargetButtons button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px;font-weight:700;cursor:pointer}
.manualTargetButtons button:last-child{grid-column:1/-1}
.twoInputGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.historyList{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:auto;max-height:360px;margin-top:10px}
.historyRow{padding:10px 12px;border-bottom:1px solid #edf1f5;font-size:12px;line-height:1.5}.historyRow:last-child{border-bottom:0}
.historyHead{display:flex;align-items:center;gap:8px}.historyHead strong{flex:1;font-size:13px}.historyTime{color:var(--sub)}
.historyMeta{color:var(--sub);margin-top:4px;white-space:pre-wrap;word-break:break-word}
.calcPointBox.summaryGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.areaWarn{font-size:13px;color:#8a3f00;background:#fff6ea;border:1px solid #f2d3a4;border-radius:10px;padding:8px 10px;margin:8px 0}
.calcGeneratedList{max-height:220px;overflow:auto;border-top:1px solid #edf1f5;margin-top:8px}
.calcGeneratedRow{display:grid;grid-template-columns:36px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid #edf1f5;font-size:12px}
@media (max-width:760px){.calcTabs{grid-template-columns:repeat(2,minmax(0,1fr))}.calcSlots.twoCol,.manualGrid,.twoInputGrid{grid-template-columns:1fr}}

@media print{body *{visibility:hidden!important} .mapWrap,.mapWrap *{visibility:visible!important} .mapWrap{position:fixed!important;inset:0!important;height:100vh!important;width:100vw!important} #map{height:100vh!important;width:100vw!important} .printModeBar{display:none!important}}

.nationalStatus{white-space:pre-line;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;font-size:13px;font-weight:800;line-height:1.5}.nationalStatus.active{background:#eef5ff;border-color:#9bbcff;color:#123f8f}.nationalStatus.warn{background:#fff6ea;border-color:#f2d3a4;color:#8a3f00}.nationalVisibleRow{margin-top:10px}.nationalButtons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.nationalButtons button,.nationalRegisterBtn{margin:0!important;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 8px;cursor:pointer;text-align:center;font-weight:800}.nationalRegisterBtn{display:flex;align-items:center;justify-content:center}.nationalButtons button:first-child,.nationalRegisterBtn{background:var(--accent);color:#fff;border-color:var(--accent)}
@media (max-width:760px){.mapStatus{left:58px;right:12px;max-width:none}.nationalButtons{grid-template-columns:1fr 1fr}.nationalButtons #nationalDeleteBtn{grid-column:1/-1}}
