:root{font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;color:#203e33;background:#f3f7f4;--green:#176c54;--line:#dbe6de}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a.button{min-height:44px;border:1px solid var(--line);border-radius:12px;padding:10px 15px;background:white;color:var(--green);font-weight:650;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover,a.button:hover{background:#edf6f0}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover{background:#125841}.danger{color:#b33c39}input{width:100%;min-height:48px;border:1px solid #c8d9cd;border-radius:12px;padding:11px 13px;background:white;color:#203e33}input:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #6bb39c;outline-offset:2px}label{display:block;font-size:13px;font-weight:600;margin:14px 0 5px}h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-.7px;line-height:1.2}h2{font-size:22px}h3{font-size:17px}.muted{color:#718478;font-size:13px}.brand{font-size:23px;font-weight:750;letter-spacing:-.7px;display:flex;align-items:center;gap:12px}.mark{width:42px;height:42px;border-radius:13px;background:#d8f1e6;color:var(--green);display:grid;place-items:center}.mark svg{width:27px;height:27px}.auth-page{min-height:100dvh;display:grid;place-items:center;padding:28px 16px;background:radial-gradient(ellipse at 0 0,#d9ece0,transparent 65%),#f3f7f4}.auth-card{width:100%;max-width:440px;padding:32px;border:1px solid #d8e5dc;background:#fffffff0;border-radius:26px;box-shadow:0 20px 70px #20483110}.auth-card .brand{margin-bottom:32px}.auth-card button{width:100%;margin-top:18px}.auth-card .muted{margin-top:18px;margin-bottom:0}.status{min-height:24px;color:#a33737;overflow-wrap:anywhere;margin:12px 0}.status.success{color:var(--green)}[hidden]{display:none!important}.layout{min-height:100dvh;display:grid;grid-template-columns:240px 1fr}.sidebar{background:#173f32;color:#e6f3eb;padding:28px 22px;display:flex;flex-direction:column;gap:24px}.sidebar .brand{color:white}.sidebar .muted{color:#b2c9bb}.nav-active{background:#ffffff12;padding:12px;border-radius:12px;font-weight:650}.sidebar footer{margin-top:auto;overflow-wrap:anywhere}.sidebar button{background:transparent;color:white;border-color:#ffffff40;width:100%}main{min-width:0;padding:32px 40px;max-width:1400px;width:100%;margin:auto}.topline{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.topline h1{margin:0}.card{background:white;border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-bottom:20px}.card-head{padding:20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.card-head h2{margin:0}.search{max-width:360px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px;text-align:left}th,td{padding:15px 20px;border-bottom:1px solid #eaf0ec;vertical-align:middle}th{color:#75877c;font-size:12px;font-weight:650;background:#fbfcfb}tr:last-child td{border-bottom:0}td .muted{font-size:12px}.badge{display:inline-block;background:#edf6f0;color:#30735a;border-radius:20px;padding:4px 9px;font-size:12px;white-space:nowrap}.badge.warn{background:#fff2df;color:#956821}.badge.bad{background:#fff0ed;color:#af4a3f}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions button{font-size:13px;padding:7px 12px;min-height:40px}.row-name{font-weight:650;overflow-wrap:anywhere;max-width:380px}.pagination{padding:15px 20px;display:flex;justify-content:space-between;align-items:center;gap:10px}.detail{padding:22px}.route-preview{width:100%;height:240px;background:linear-gradient(120deg,#f3f8f0,#edf5f2);border-radius:12px;margin:12px 0}.stats{display:flex;gap:24px;flex-wrap:wrap;margin:10px 0 20px}.stats strong{display:block;font-size:21px}.stats span{font-size:12px;color:#708175}.empty{padding:36px 20px;color:#718478;text-align:center}.subtitle{margin:6px 0 0;color:#718478}.back{margin-bottom:16px}@media(max-width:800px){.layout{display:block}.sidebar{padding:16px 20px;display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:12px}.sidebar .nav-active,.sidebar .muted,.sidebar footer p{display:none}.sidebar footer{margin:0}.sidebar .brand{font-size:20px}.sidebar footer button{min-width:80px}main{padding:24px 16px}th,td{padding:12px}.topline{align-items:flex-start}.auth-card{padding:26px}.card-head{padding:16px}.search{max-width:none;width:100%}}

.route-map{height:380px;min-height:240px;border-radius:14px;margin-bottom:18px;isolation:isolate}.avatar{width:48px;height:48px;flex:0 0 48px;border-radius:15px;object-fit:cover;background:#e0f0e7}.avatar.placeholder{padding:10px;text-align:center;font-size:24px;color:#176c54}.identity{display:flex;align-items:center;gap:12px;margin-bottom:6px}.identity h2{margin:0}.sidebar nav{display:flex;flex-direction:column;gap:8px}.leaflet-container{font:14px system-ui}.leaflet-control a{min-width:30px}@media(max-width:800px){.sidebar{flex-wrap:wrap}.sidebar nav{flex-direction:row;order:3;width:100%}.sidebar nav button{font-size:12px;padding:7px}.route-map{height:300px}}

/* Admin: preserve desktop tables; use labelled cards on touch screens. */
.admin-page .identity{min-width:0}.admin-page .identity> :last-child{min-width:0;overflow-wrap:anywhere}
.admin-page .card-head form.search{width:360px;max-width:100%}
.admin-page .topline>div{min-width:0}.admin-page .topline h1{overflow-wrap:anywhere}
.admin-page .picture{display:inline-grid;place-items:center;overflow:hidden;vertical-align:middle;background:#e0f0e7;color:var(--green)}
.admin-page .picture img{display:block;width:100%;height:100%;object-fit:cover}
.admin-page .picture-placeholder{display:grid;place-items:center;width:100%;height:100%;min-height:48px}
.admin-page .picture-placeholder svg{width:28px;height:28px}
.admin-page .feedback-picture{display:flex;width:100%;min-height:100px;border:1px dashed #c8d9cd;border-radius:14px;margin:16px 0}
.admin-page .feedback-picture img{width:auto;max-width:100%;max-height:600px;object-fit:contain}
.admin-page .detail{overflow-wrap:anywhere}.admin-page .detail pre{max-width:100%}
@media(max-width:800px){
 .admin-page main{padding:20px 12px;margin:0}
 .admin-page .sidebar{padding:12px 16px;gap:12px}
 .admin-page .sidebar nav{flex-wrap:wrap;gap:6px}
 .admin-page .sidebar nav button{flex:1 1 135px;width:auto;min-height:44px;font-size:13px;line-height:1.3}
 .admin-page .topline{gap:12px;margin-bottom:12px;align-items:center}
 .admin-page .topline h1{font-size:23px}.admin-page .topline>button{flex-shrink:0;padding:10px 12px}
 .admin-page .status:empty{display:none}
 .admin-page .table-wrap{overflow:visible}
 .admin-page table,.admin-page tbody{display:block;width:100%}
 .admin-page thead{display:none}
 .admin-page tbody>tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:16px;border-bottom:1px solid var(--line)}
 .admin-page tbody>tr:last-child{border-bottom:0}
 .admin-page td{display:block;min-width:0;padding:0;border:0;overflow-wrap:anywhere}
 .admin-page td[data-label]::before{content:attr(data-label);display:block;font-size:11px;font-weight:600;color:#718478;margin-bottom:4px}
 .admin-page td.primary-cell,.admin-page td.action-cell,.admin-page td.full-cell{grid-column:1/-1}
 .admin-page td.primary-cell::before{display:none}
 .admin-page .row-name{max-width:none;font-size:15px;line-height:1.4}
 .admin-page .identity{gap:10px;align-items:center}
 .admin-page .primary-cell>.muted,.admin-page .primary-cell>small{display:block;margin-top:6px}
 .admin-page .badge{white-space:normal;margin:0 3px 3px 0}
 .admin-page td.action-cell button,.admin-page td.action-cell a.button{width:100%;min-height:44px}
 .admin-page .card-head{padding:16px;gap:12px}.admin-page .card-head h2{font-size:20px}
 .admin-page .search{min-width:0}.admin-page .card-head form.search{width:100%}.admin-page .pagination{padding:12px;gap:6px;font-size:12px}
 .admin-page .pagination button{padding:8px 10px}
 .admin-page .detail{padding:16px}.admin-page .actions{display:grid;grid-template-columns:minmax(0,1fr);width:100%}
 .admin-page .actions button{min-height:44px;width:100%}
 .admin-page .stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
 .admin-page .route-map{height:260px}
}
