:root {
  --blue-950: #062f55;
  --blue-900: #0b3b6a;
  --blue-850: #10487e;
  --blue-800: #145389;
  --blue-700: #1e649d;
  --blue-100: #eaf2f8;
  --blue-050: #f5f9fc;
  --ink: #132333;
  --muted: #6a7b8d;
  --line: #dbe5ee;
  --surface: #ffffff;
  --surface-alt: #f8fbfd;
  --danger: #b33939;
  --danger-bg: #fff2f2;
  --success: #2f7d59;
  --success-bg: #eef8f2;
  --shadow: 0 12px 36px rgba(17, 61, 94, 0.08);
  --radius-lg: 22px;
  --radius-md: 16px;
  --radius-sm: 12px;
  --sidebar: 252px;
}

* { box-sizing: border-box; }
html { color-scheme: light; background: var(--blue-050); }
body {
  margin: 0;
  min-width: 320px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", "Apple SD Gothic Neo", sans-serif;
  color: var(--ink);
  background:
    radial-gradient(circle at top right, rgba(20, 83, 137, 0.08), transparent 30%),
    var(--blue-050);
}
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: 0.55; }
input, select, textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  color: var(--ink);
  min-height: 46px;
  padding: 11px 13px;
  outline: none;
  transition: border-color .18s ease, box-shadow .18s ease;
}
textarea { resize: vertical; min-height: 104px; }
input:focus, select:focus, textarea:focus {
  border-color: var(--blue-700);
  box-shadow: 0 0 0 3px rgba(30, 100, 157, 0.12);
}
small { color: var(--muted); font-weight: 500; }
[hidden] { display: none !important; }

.login-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  background: linear-gradient(135deg, var(--blue-950), var(--blue-800) 52%, #195b92);
}
.login-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 38px;
  padding: 48px;
  color: #fff;
}
.brand-icon {
  width: min(34vw, 340px);
  border-radius: 28%;
  box-shadow: 0 24px 60px rgba(0,0,0,.22);
}
.login-brand h1 { font-size: clamp(34px, 5vw, 64px); margin: 8px 0 10px; letter-spacing: -0.04em; }
.brand-copy { max-width: 440px; font-size: 18px; line-height: 1.65; color: rgba(255,255,255,.84); }
.privacy-pill {
  display: inline-flex;
  margin-top: 18px;
  padding: 10px 14px;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 999px;
  background: rgba(255,255,255,.1);
  font-size: 13px;
  font-weight: 700;
}
.login-panel {
  display: grid;
  place-items: center;
  padding: 36px;
  background: #f7fafc;
  border-radius: 34px 0 0 34px;
}
.login-card { width: min(430px, 100%); }
.login-card h2 { font-size: 34px; margin: 8px 0 10px; }

.app-shell { min-height: 100vh; }
.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--sidebar);
  display: flex;
  flex-direction: column;
  z-index: 30;
  background: linear-gradient(180deg, var(--blue-950), var(--blue-850));
  color: #fff;
  padding: 22px 16px;
  box-shadow: 12px 0 36px rgba(6, 47, 85, .08);
}
.sidebar-brand { display: flex; gap: 12px; align-items: center; padding: 4px 8px 22px; }
.sidebar-logo { width: 44px; height: 44px; border-radius: 13px; }
.sidebar-brand strong { display: block; font-size: 16px; }
.sidebar-brand span { display: block; color: rgba(255,255,255,.62); font-size: 12px; margin-top: 3px; }
.nav-list { display: grid; gap: 6px; }
.nav-item {
  width: 100%; border: 0; color: rgba(255,255,255,.78); background: transparent;
  border-radius: 13px; padding: 13px 14px; display: flex; gap: 12px; align-items: center; text-align: left;
  min-height: 48px; transition: background .18s ease, color .18s ease;
}
.nav-item:hover, .nav-item:focus-visible { background: rgba(255,255,255,.08); color: #fff; }
.nav-item.active { background: #fff; color: var(--blue-900); font-weight: 800; }
.nav-icon { width: 22px; text-align: center; font-size: 18px; }
.sidebar-footer { margin-top: auto; display: grid; gap: 14px; }
.local-badge {
  border: 1px solid rgba(255,255,255,.15); background: rgba(255,255,255,.07); border-radius: 12px;
  padding: 10px 12px; font-size: 12px; color: rgba(255,255,255,.86); display: flex; align-items: center; gap: 8px;
}
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: #87e7b8; box-shadow: 0 0 0 4px rgba(135,231,184,.12); }
.account-mini { display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 0; }
.account-mini strong { display:block; font-size: 14px; }
.account-mini span { display:block; font-size:11px; color:rgba(255,255,255,.56); margin-top:2px; }
.sidebar .icon-button { color:#fff; border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.07); }

.app-main { margin-left: var(--sidebar); min-height: 100vh; }
.topbar {
  position: sticky; top: 0; z-index: 20; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding: 18px clamp(18px, 3vw, 38px); background: rgba(245,249,252,.9); backdrop-filter: blur(16px); border-bottom: 1px solid rgba(219,229,238,.8);
}
.topbar h1 { font-size: clamp(22px, 3vw, 30px); margin: 2px 0 0; letter-spacing: -0.03em; }
.topbar-actions { display:flex; align-items:center; gap:10px; }
.privacy-chip { font-size: 11px; letter-spacing: .12em; font-weight: 900; color: var(--blue-800); background: var(--blue-100); border-radius: 999px; padding: 8px 10px; }
.content-wrap { padding: 28px clamp(18px, 3vw, 38px) 48px; max-width: 1580px; margin: 0 auto; }

.tab-panel { display: none; }
.tab-panel.active { display: block; animation: fade .18s ease; }
@keyframes fade { from {opacity:.3; transform: translateY(4px);} to {opacity:1; transform:none;} }

.card {
  background: var(--surface); border: 1px solid rgba(219,229,238,.95); border-radius: var(--radius-lg);
  box-shadow: var(--shadow); padding: 22px;
}
.card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:20px; }
.card-head.compact { margin-bottom:16px; }
.card-head h2, .toolbar-title { margin: 4px 0 0; font-size: 21px; letter-spacing: -0.025em; }
.section-kicker, .eyebrow { font-size: 10px; letter-spacing: .14em; font-weight: 900; color: var(--blue-700); text-transform: uppercase; }
.login-brand .eyebrow { color: rgba(255,255,255,.68); }
.muted { color: var(--muted); line-height: 1.65; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.small { font-size: 12px; word-break: break-all; }

.btn {
  border: 0; border-radius: 12px; min-height: 44px; padding: 11px 16px; font-weight: 800; display:inline-flex; align-items:center; justify-content:center; gap:8px;
  transition: transform .12s ease, box-shadow .18s ease, background .18s ease;
}
.btn:active { transform: translateY(1px); }
.btn-primary { color:#fff; background: linear-gradient(135deg, var(--blue-900), var(--blue-700)); box-shadow: 0 8px 18px rgba(16,72,126,.2); }
.btn-secondary { color: var(--blue-900); background: var(--blue-100); border:1px solid #d8e6f1; }
.btn-quiet { color: var(--blue-900); background: #fff; border:1px solid var(--line); }
.btn-danger { color:#fff; background: var(--danger); }
.btn-danger-outline { color:var(--danger); background:#fff; border:1px solid #efc8c8; }
.btn-lg { min-height: 50px; width: 100%; }
.text-button { border:0; background:transparent; color:var(--blue-700); font-weight:800; padding:6px 2px; }
.icon-button { width:42px; height:42px; display:grid; place-items:center; border:1px solid var(--line); background:#fff; border-radius:12px; font-size:20px; }

.stack-lg { display:grid; gap:18px; }
.stack-md { display:grid; gap:13px; margin-top:16px; }
.form-grid { display:grid; grid-template-columns: 1fr 1fr; gap:16px; }
.field { display:grid; gap:7px; min-width:0; }
.field > span { font-size:13px; font-weight:800; color:#314455; }
.field.full, .full { grid-column: 1 / -1; }
.action-row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.local-hint { font-size:12px; color: var(--muted); }
.form-message { font-size: 13px; margin: 8px 0 0; }
.form-message.error, .error { color: var(--danger); }
.form-message.success { color: var(--success); }
.divider { height:1px; background:var(--line); margin:2px 0; }

.stats-grid { display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap:14px; margin-bottom:18px; }
.stat-card { background:linear-gradient(180deg,#fff,#fbfdff); border:1px solid var(--line); border-radius:18px; padding:18px; min-width:0; }
.stat-label { font-size:12px; color:var(--muted); font-weight:700; }
.stat-value { font-size:30px; font-weight:900; color:var(--blue-900); margin-top:7px; letter-spacing:-.04em; }
.stat-sub { margin-top:4px; font-size:11px; color:var(--muted); }
.two-column { display:grid; grid-template-columns: 1fr 1fr; gap:18px; }
.list-stack { display:grid; gap:10px; }
.list-row {
  display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 14px;
  border:1px solid #e5edf3; border-radius:14px; background:#fbfdff;
}
.list-row .main { min-width:0; }
.list-row .main strong { display:block; font-size:14px; }
.list-row .main span { display:block; margin-top:4px; color:var(--muted); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.list-row .value { font-weight:900; color:var(--blue-900); white-space:nowrap; }
.row-actions { display:flex; gap:8px; align-items:center; }
.mini-button { border:1px solid var(--line); background:#fff; border-radius:9px; min-width:34px; height:34px; padding:0 9px; color:#536779; }
.empty-inline { text-align:center; color:var(--muted); font-size:13px; padding:28px 12px; }

.section-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:16px; }
.search-box { flex:1; max-width:560px; position:relative; }
.search-box span { position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--muted); }
.search-box input { padding-left:40px; background:#fff; }
.inline-field { display:flex; align-items:center; gap:10px; font-size:12px; font-weight:800; color:#415567; }
.inline-field input { width:auto; }
.revisit-layout { display:grid; grid-template-columns: minmax(320px, .75fr) minmax(0, 1.25fr); gap:18px; align-items:start; }
.list-card { padding:18px; }
.revisit-list { display:grid; gap:8px; max-height: calc(100vh - 235px); overflow:auto; padding-right:2px; }
.revisit-item {
  width:100%; border:1px solid #e4edf3; background:#fbfdff; border-radius:14px; padding:14px;
  display:grid; gap:8px; text-align:left; color:var(--ink);
}
.revisit-item.active { border-color:#9bbbd5; background:var(--blue-050); box-shadow: inset 3px 0 0 var(--blue-700); }
.revisit-item strong { font-size:14px; }
.revisit-item .meta { display:flex; flex-wrap:wrap; gap:6px 12px; font-size:11px; color:var(--muted); }
.count-badge { min-width:30px; height:30px; padding:0 9px; display:grid; place-items:center; background:var(--blue-100); color:var(--blue-900); border-radius:999px; font-weight:900; font-size:12px; }
.detail-card { min-height:420px; }
.empty-state { min-height:350px; display:grid; place-items:center; align-content:center; text-align:center; color:var(--muted); padding:28px; }
.empty-state h3 { color:var(--ink); margin:10px 0 4px; }
.empty-state p { max-width:420px; line-height:1.6; margin:0; }
.empty-icon { width:54px; height:54px; border-radius:18px; background:var(--blue-100); color:var(--blue-800); display:grid; place-items:center; font-size:24px; }
.detail-top { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
.detail-top h2 { margin:4px 0 0; font-size:24px; }
.detail-meta-grid { display:grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap:10px; margin:14px 0 20px; }
.info-cell { border:1px solid #e5edf3; border-radius:13px; padding:12px 13px; background:#fbfdff; }
.info-cell span { display:block; font-size:10px; color:var(--muted); font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.info-cell strong { display:block; margin-top:4px; font-size:13px; word-break:break-word; }
.custom-chip-wrap { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:18px; }
.custom-chip { background:var(--blue-050); border:1px solid #dce8f2; padding:7px 9px; border-radius:10px; font-size:12px; }
.comment-compose { display:grid; grid-template-columns: 120px 1fr auto; gap:9px; align-items:end; margin:12px 0 18px; }
.comment-compose textarea { min-height:78px; }
.timeline { display:grid; gap:12px; }
.timeline-item { position:relative; padding:0 0 14px 22px; border-left:2px solid #dbe8f2; }
.timeline-item::before { content:""; position:absolute; width:10px; height:10px; border-radius:50%; background:var(--blue-700); left:-6px; top:5px; box-shadow:0 0 0 4px #edf4f9; }
.timeline-head { display:flex; justify-content:space-between; gap:12px; align-items:center; }
.timeline-head strong { font-size:13px; }
.timeline-head span { font-size:11px; color:var(--muted); }
.timeline-body { margin-top:5px; color:#425466; line-height:1.55; white-space:pre-wrap; font-size:13px; }
.status-tag { display:inline-flex; padding:4px 7px; border-radius:999px; font-size:10px; font-weight:900; background:var(--blue-100); color:var(--blue-900); }

.privacy-notice { display:flex; gap:13px; align-items:flex-start; padding:15px 16px; border:1px solid #cfe0ed; border-radius:16px; background:#f7fbfe; margin-bottom:16px; }
.notice-icon { width:38px; height:38px; border-radius:12px; display:grid; place-items:center; background:var(--blue-100); color:var(--blue-800); font-size:18px; flex:0 0 auto; }
.privacy-notice strong { font-size:14px; }
.privacy-notice p { margin:4px 0 0; color:var(--muted); line-height:1.55; font-size:12px; }
.map-grid { display:grid; grid-template-columns: minmax(0,1.4fr) minmax(300px,.6fr); gap:18px; align-items:start; }
.map-head { align-items:center; }
.map-controls { display:flex; gap:8px; align-items:center; }
.map-controls select { width:auto; min-width:95px; }
.private-map {
  position:relative; aspect-ratio: 1.55 / 1; min-height:360px; overflow:hidden; border-radius:18px;
  background:
    radial-gradient(circle at 50% 50%, rgba(20,83,137,.09), transparent 28%),
    linear-gradient(135deg, #f9fcfe, #edf4f9);
  border:1px solid #dbe7f0;
}
.map-ring { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); border:1px dashed rgba(20,83,137,.25); border-radius:50%; }
.ring-1 { width:28%; aspect-ratio:1; }
.ring-2 { width:55%; aspect-ratio:1; }
.ring-3 { width:82%; aspect-ratio:1; }
.map-axis { position:absolute; background:rgba(20,83,137,.08); }
.axis-x { height:1px; left:8%; right:8%; top:50%; }
.axis-y { width:1px; top:8%; bottom:8%; left:50%; }
.map-compass { position:absolute; color:#7991a5; font-size:10px; font-weight:900; z-index:2; }
.map-compass.north { top:8px; left:50%; transform:translateX(-50%); }
.map-compass.south { bottom:8px; left:50%; transform:translateX(-50%); }
.map-compass.east { right:10px; top:50%; transform:translateY(-50%); }
.map-compass.west { left:10px; top:50%; transform:translateY(-50%); }
.you-pin { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:26px; height:26px; border-radius:50%; background:#fff; box-shadow:0 5px 18px rgba(11,59,106,.22); display:grid; place-items:center; z-index:5; }
.you-pin span { width:12px; height:12px; border-radius:50%; background:var(--blue-700); box-shadow:0 0 0 5px rgba(30,100,157,.14); }
.map-pin { position:absolute; transform:translate(-50%,-100%); z-index:6; border:0; background:transparent; color:var(--blue-900); padding:0; }
.map-pin-marker { width:28px; height:36px; background:linear-gradient(180deg,var(--blue-700),var(--blue-950)); border:3px solid #fff; border-radius:18px 18px 18px 3px; transform:rotate(-45deg); box-shadow:0 6px 16px rgba(11,59,106,.22); display:grid; place-items:center; }
.map-pin-marker::after { content:""; width:8px; height:8px; border-radius:50%; background:#fff; }
.map-pin-label { position:absolute; left:50%; top:40px; transform:translateX(-50%); background:#fff; border:1px solid var(--line); border-radius:8px; padding:4px 7px; box-shadow:0 4px 12px rgba(12,55,90,.09); white-space:nowrap; max-width:160px; overflow:hidden; text-overflow:ellipsis; font-size:10px; font-weight:800; }
.map-placeholder { position:absolute; left:50%; bottom:20px; transform:translateX(-50%); width:min(420px,82%); text-align:center; color:var(--muted); font-size:12px; background:rgba(255,255,255,.84); border:1px solid var(--line); border-radius:999px; padding:9px 12px; z-index:3; }
.map-status { margin-top:10px; font-size:11px; color:var(--muted); }

.settings-grid { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:18px; align-items:start; }
.secure-badge { font-size:10px; font-weight:900; color:var(--success); background:var(--success-bg); padding:7px 9px; border-radius:999px; }
.privacy-diagram { display:grid; grid-template-columns:1fr auto 1fr; gap:12px; align-items:center; margin:14px 0 10px; }
.diagram-node { border:1px solid var(--line); border-radius:14px; padding:14px; text-align:center; }
.diagram-node.active { background:var(--blue-050); border-color:#c8ddeb; }
.diagram-node.muted { background:#fafafa; color:#7b8792; }
.diagram-node strong { display:block; font-size:13px; }
.diagram-node span { display:block; margin-top:4px; font-size:10px; color:var(--muted); }
.diagram-arrow.blocked { color:var(--danger); font-size:22px; font-weight:900; }
.backup-grid { display:grid; gap:11px; margin-top:16px; }
.account-details { display:grid; gap:0; margin:0 0 8px; }
.account-details > div { display:grid; grid-template-columns:100px 1fr; gap:14px; padding:10px 0; border-bottom:1px solid #edf2f6; }
.account-details dt { color:var(--muted); font-size:12px; }
.account-details dd { margin:0; font-weight:800; font-size:13px; }
.settings-details { border-top:1px solid var(--line); margin-top:10px; padding-top:10px; }
.settings-details summary { cursor:pointer; font-weight:800; color:var(--blue-800); font-size:13px; padding:7px 0; }
.admin-card { grid-column:1/-1; }
.admin-privacy-copy { border:1px solid #d6e5ef; background:#f7fbfe; color:#4d6274; padding:12px 14px; border-radius:13px; font-size:12px; line-height:1.55; margin-bottom:14px; }
.admin-user-form { display:grid; grid-template-columns: 1fr 1fr 1fr auto; gap:10px; align-items:end; }
.admin-user-list { display:grid; gap:8px; margin-top:16px; }
.admin-user-row { display:grid; grid-template-columns: 1.2fr 1fr 1fr auto; gap:12px; align-items:center; border:1px solid #e4edf3; border-radius:12px; padding:11px 12px; }
.admin-user-row strong { font-size:13px; }
.admin-user-row span { font-size:11px; color:var(--muted); }
.danger-card { border-color:#f0d5d5; }

.dialog { width:min(760px, calc(100% - 28px)); max-height:calc(100vh - 28px); border:0; padding:0; border-radius:22px; background:transparent; }
.dialog::backdrop { background:rgba(5,29,49,.52); backdrop-filter:blur(3px); }
.dialog-card { background:#fff; border-radius:22px; padding:22px; overflow:auto; max-height:calc(100vh - 28px); }
.dialog-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:18px; }
.dialog-head h2 { margin:4px 0 0; }
.dialog-actions { display:flex; gap:9px; align-items:center; margin-top:20px; padding-top:16px; border-top:1px solid var(--line); }
.spacer { flex:1; }
.location-capture { border:1px dashed #cddde8; background:#f9fcfe; border-radius:13px; padding:12px; }
.location-row { display:flex; gap:8px; flex-wrap:wrap; }
.coord-text { font-size:11px; color:var(--muted); margin-top:3px; }
.custom-fields-block { border-top:1px solid var(--line); padding-top:12px; }
.custom-fields-head { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.custom-fields { display:grid; gap:8px; margin-top:8px; }
.custom-row { display:grid; grid-template-columns:1fr 1.5fr auto; gap:8px; align-items:center; }

.toast { position:fixed; left:50%; bottom:24px; transform:translate(-50%, 18px); z-index:100; max-width:min(520px,calc(100% - 32px)); background:#122b40; color:#fff; border-radius:13px; padding:12px 16px; box-shadow:0 16px 34px rgba(0,0,0,.22); opacity:0; pointer-events:none; transition:.2s ease; font-size:13px; }
.toast.show { opacity:1; transform:translate(-50%,0); }
.toast.error { background:#7f2f2f; }
.mobile-only { display:none; }

@media (max-width: 1180px) {
  .stats-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .map-grid { grid-template-columns: 1fr; }
  .settings-grid { grid-template-columns: 1fr; }
  .admin-card { grid-column:auto; }
  .admin-user-form { grid-template-columns:1fr 1fr; }
  .admin-user-form .btn { align-self:end; }
}

@media (max-width: 860px) {
  :root { --sidebar: 238px; }
  .login-shell { grid-template-columns:1fr; min-height:100vh; background:#f7fafc; }
  .login-brand { padding:28px 24px 10px; background:linear-gradient(135deg,var(--blue-950),var(--blue-800)); min-height:230px; justify-content:flex-start; }
  .brand-icon { width:112px; border-radius:30px; }
  .login-brand h1 { font-size:34px; }
  .brand-copy { font-size:14px; margin:6px 0; }
  .privacy-pill { margin-top:8px; }
  .login-panel { border-radius:0; padding:26px 22px 40px; align-items:start; }
  .login-card { width:100%; max-width:520px; margin:0 auto; }

  .sidebar { transform:translateX(-100%); transition:transform .2s ease; box-shadow:18px 0 50px rgba(0,0,0,.18); }
  .sidebar.open { transform:translateX(0); }
  .app-main { margin-left:0; }
  .mobile-only { display:grid; }
  .topbar { padding:14px 16px; }
  .content-wrap { padding:18px 14px 36px; }
  .two-column, .revisit-layout { grid-template-columns:1fr; }
  .revisit-list { max-height:none; }
  .detail-card { min-height:300px; }
  .admin-user-row { grid-template-columns:1fr auto; }
  .admin-user-row .hide-mobile { display:none; }
}

@media (max-width: 600px) {
  body { background:#f6f9fb; }
  .login-brand { gap:18px; min-height:200px; }
  .brand-icon { width:84px; border-radius:24px; }
  .login-brand h1 { font-size:28px; margin-top:4px; }
  .brand-copy { display:none; }
  .privacy-pill { font-size:11px; padding:8px 10px; }
  .login-card h2 { font-size:28px; }
  .privacy-chip { display:none; }
  .topbar-actions .btn { display:none; }
  .stats-grid { grid-template-columns:1fr 1fr; gap:9px; }
  .stat-card { padding:14px; border-radius:15px; }
  .stat-value { font-size:24px; }
  .card { padding:16px; border-radius:18px; box-shadow:0 8px 22px rgba(17,61,94,.05); }
  .form-grid { grid-template-columns:1fr 1fr; gap:12px; }
  .form-grid .field.full { grid-column:1/-1; }
  .section-toolbar { align-items:stretch; flex-direction:column; }
  .section-toolbar .btn { width:100%; }
  .search-box { max-width:none; }
  .inline-field { justify-content:space-between; }
  .inline-field input { width:170px; }
  .detail-meta-grid { grid-template-columns:1fr; }
  .comment-compose { grid-template-columns:1fr; }
  .map-head { align-items:flex-start; flex-direction:column; }
  .map-controls { width:100%; }
  .map-controls select, .map-controls .btn { flex:1; }
  .private-map { min-height:310px; aspect-ratio:1/1; }
  .privacy-diagram { grid-template-columns:1fr; }
  .diagram-arrow.blocked { transform:rotate(90deg); justify-self:center; }
  .admin-user-form { grid-template-columns:1fr; }
  .admin-user-row { grid-template-columns:1fr auto; }
  .dialog { width:100%; max-height:100vh; margin:0; border-radius:0; }
  .dialog-card { min-height:100vh; max-height:100vh; border-radius:0; padding:18px 14px 28px; }
  .custom-row { grid-template-columns:1fr 1fr auto; }
  .dialog-actions { position:sticky; bottom:0; background:#fff; margin-inline:-14px; padding:12px 14px max(12px, env(safe-area-inset-bottom)); }
}

@media (min-width: 861px) and (max-width: 1120px) {
  .sidebar { width:220px; }
  .app-main { margin-left:220px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
