:root{--primary:#16a34a;--primary-dark:#15803d;--primary-light:#dcfce7;--accent:#f59e0b;--dark:#0f172a;--gray-900:#1e293b;--gray-700:#475569;--gray-500:#94a3b8;--gray-300:#cbd5e1;--gray-200:#e2e8f0;--gray-100:#f1f5f9;--gray-50:#f8fafc;--white:#fff;--danger:#ef4444;--info:#3b82f6;--shadow-sm:0 1px 2px rgba(0,0,0,.06);--shadow:0 2px 8px rgba(0,0,0,.08);--shadow-lg:0 8px 30px rgba(0,0,0,.12);--radius:12px;--radius-sm:8px;--surface:#fff}
*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--gray-50);color:var(--gray-900);line-height:1.5}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:10px;font-size:14px;font-weight:600;transition:all .2s;white-space:nowrap}.btn-primary{background:var(--primary);color:var(--white)}.btn-primary:hover{background:var(--primary-dark)}.btn-outline{background:var(--surface);color:var(--gray-900);border:1.5px solid var(--gray-200)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.btn-ghost{background:transparent;color:var(--gray-700);border:none}.btn-ghost:hover{color:var(--primary)}.btn-lg{padding:14px 28px;font-size:15px}.btn-block{width:100%}.btn-sm{padding:6px 14px;font-size:13px;border-radius:8px}.btn-danger{background:var(--danger);color:#fff}
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600}.badge-green{background:var(--primary-light);color:var(--primary-dark)}.badge-blue{background:#dbeafe;color:#1e40af}.badge-amber{background:#fef3c7;color:#92400e}.badge-gray{background:var(--gray-100);color:var(--gray-700)}.badge-red{background:#fee2e2;color:#991b1b}
.input{width:100%;height:42px;padding:0 14px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:14px;outline:none;transition:border-color .2s;background:var(--surface)}.input:focus{border-color:var(--primary)}textarea.input{padding:10px 14px;height:auto;resize:vertical;min-height:80px}select.input{cursor:pointer}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:13px;font-weight:600;color:var(--gray-700);margin-bottom:6px}
.header{position:sticky;top:0;z-index:1000;background:var(--surface);border-bottom:1px solid var(--gray-200);box-shadow:var(--shadow-sm)}.header-inner{max-width:1440px;margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;gap:24px}.logo{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:800;color:var(--primary);white-space:nowrap;cursor:pointer}.logo-mark{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--primary);color:#fff;border-radius:10px;font-size:18px;font-weight:800}.header-search{flex:1;max-width:420px;position:relative}.header-search input{width:100%;height:40px;padding:0 16px 0 40px;border:1.5px solid var(--gray-200);border-radius:10px;font-size:14px;outline:none}.header-search input:focus{border-color:var(--primary)}.city-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;background:var(--surface);white-space:nowrap}.header-actions{display:flex;align-items:center;gap:10px;margin-left:auto}
.page{max-width:1100px;margin:0 auto;padding:24px}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gray-500);margin-bottom:20px}.breadcrumb a:hover{color:var(--primary)}.breadcrumb span{color:var(--gray-300)}
.card{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:20px;margin-bottom:16px}.card h2{font-size:17px;font-weight:700;margin-bottom:12px}
.error-msg{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:16px}.success-msg{background:var(--primary-light);color:var(--primary-dark);padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:16px}.empty{text-align:center;padding:48px 20px;color:var(--gray-500)}
.main-layout{display:flex;height:calc(100vh - 64px);max-width:1440px;margin:0 auto}.sidebar{width:380px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--gray-200);display:flex;flex-direction:column;overflow:hidden}.sidebar-filters{padding:12px 16px;border-bottom:1px solid var(--gray-200)}.filter-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--gray-500);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}.filter-row{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap;max-height:116px;overflow-y:auto}.filter-chip{padding:4px 10px;border:1.5px solid var(--gray-200);border-radius:16px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s;background:var(--surface);line-height:1.4}.filter-chip:hover{border-color:var(--primary)}.filter-chip.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark)}
.task-list-header{padding:14px 20px;border-bottom:1px solid var(--gray-200);display:flex;align-items:center;justify-content:space-between}.task-list-title{font-size:15px;font-weight:700}.task-count{font-size:13px;color:var(--gray-500)}.task-list{flex:1;overflow-y:auto;padding:12px 16px}.task-list::-webkit-scrollbar{width:6px}.task-list::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px}
.task-card-mini{display:flex;gap:12px;padding:12px;border-radius:var(--radius-sm);cursor:pointer;transition:all .2s;border:1px solid var(--gray-200);margin-bottom:10px;background:var(--surface);box-shadow:0 1px 2px rgba(16,24,40,.05)}.task-card-mini:hover{background:var(--gray-50);border-color:var(--primary)}.task-card-hover{border-color:var(--primary)!important;box-shadow:0 2px 8px rgba(16,24,40,.14)!important;background:var(--primary-light)!important}.task-card-mini-img{width:72px;height:72px;border-radius:8px;object-fit:cover;flex-shrink:0;background:var(--gray-100)}.task-card-mini-body{flex:1;min-width:0}.task-card-mini-title{font-size:14px;font-weight:600;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-card-mini-price{font-size:16px;font-weight:800;color:var(--primary-dark);margin-bottom:6px}.task-card-mini-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--gray-500)}.task-card-mini-meta span{display:inline-flex;align-items:center;gap:3px}
.map-area{flex:1;position:relative;overflow:hidden}#map{width:100%;height:100%}.price-marker{background:#fff;border:2px solid var(--primary);border-radius:20px;padding:4px 10px;font-size:13px;font-weight:800;color:var(--primary-dark);box-shadow:var(--shadow);white-space:nowrap;cursor:pointer}.price-marker:hover{background:var(--primary);color:#fff}.cluster-marker{background:var(--primary);color:#fff;border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;box-shadow:var(--shadow-lg);border:3px solid #fff}.map-controls{position:absolute;top:16px;right:16px;z-index:500;display:flex;flex-direction:column;gap:8px}.map-btn{width:44px;height:44px;background:#fff;border:none;border-radius:10px;box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--gray-700)}.map-btn:hover{color:var(--primary)}
.leaflet-popup-content-wrapper{border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:0;overflow:hidden}.leaflet-popup-content{margin:0;width:240px!important}.popup-card{cursor:pointer}.popup-card img{width:100%;height:130px;object-fit:cover}.popup-body{padding:12px 14px}.popup-title{font-size:14px;font-weight:700;margin-bottom:4px}.popup-price{font-size:18px;font-weight:800;color:var(--primary-dark);margin-bottom:6px}.popup-meta{font-size:12px;color:var(--gray-500);display:flex;gap:8px;flex-wrap:wrap}
.task-detail-grid{display:grid;grid-template-columns:1fr 360px;gap:24px;align-items:start}.task-main h1{font-size:26px;font-weight:800;margin-bottom:12px;line-height:1.3}.task-meta-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.task-gallery{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-bottom:24px;border-radius:var(--radius);overflow:hidden}.task-gallery-main{height:380px;background:var(--gray-100);border-radius:var(--radius);overflow:hidden}.task-gallery-main img{width:100%;height:100%;object-fit:cover}.task-gallery-thumbs{display:grid;grid-template-rows:repeat(2,1fr);gap:8px}.task-gallery-thumb{height:186px;background:var(--gray-100);border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;position:relative}.task-gallery-thumb img{width:100%;height:100%;object-fit:cover}.task-gallery-thumb-more{position:absolute;inset:0;background:rgba(0,0,0,.5);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700}
.params-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.param-item{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--gray-50);border-radius:var(--radius-sm);font-size:14px}.param-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.param-icon.yes{background:var(--primary-light);color:var(--primary-dark)}.param-icon.no{background:#fee2e2;color:var(--danger)}.param-label{font-size:12px;color:var(--gray-500)}.param-value{font-size:14px;font-weight:600}
.task-sidebar{position:sticky;top:80px}.task-price-card{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:20px;margin-bottom:16px}.task-price-big{font-size:32px;font-weight:800;color:var(--primary-dark);margin-bottom:4px}.task-price-note{font-size:13px;color:var(--gray-500);margin-bottom:16px}.task-info-list{list-style:none;margin-bottom:16px}.task-info-list li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--gray-100);font-size:14px}.task-info-list li:last-child{border-bottom:none}.task-info-list .label{color:var(--gray-500)}.task-info-list .value{font-weight:600}.task-mini-map{height:160px;border-radius:var(--radius-sm);overflow:hidden;margin-bottom:16px;background:var(--gray-100)}
.response-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--gray-100)}.response-item:last-child{border-bottom:none}.response-avatar{width:44px;height:44px;border-radius:50%;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--primary-dark);flex-shrink:0}.response-body{flex:1}.response-name{font-size:14px;font-weight:600;margin-bottom:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.response-text{font-size:13px;color:var(--gray-700);margin-bottom:4px}.response-meta{font-size:12px;color:var(--gray-500)}.rating-stars{display:inline-flex;align-items:center;gap:2px;color:var(--accent);font-size:14px}.rating-text{font-size:13px;color:var(--gray-500);margin-left:4px}
.profile-layout{max-width:1100px;margin:0 auto;padding:24px;display:grid;grid-template-columns:320px 1fr;gap:24px;align-items:start}.profile-card{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);overflow:hidden;position:sticky;top:80px}.profile-card-header{background:linear-gradient(135deg,var(--primary) 0%,#0d7c3a 100%);padding:24px 20px;text-align:center}.profile-avatar{width:84px;height:84px;border-radius:50%;border:3px solid #fff;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:800;color:var(--primary-dark);background:#fff}.profile-name{font-size:18px;font-weight:700;color:#fff;margin-bottom:4px}.profile-city{font-size:13px;color:rgba(255,255,255,.8)}.profile-card-body{padding:20px}.profile-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px}.profile-stat{text-align:center;padding:12px;background:var(--gray-50);border-radius:var(--radius-sm)}.profile-stat-num{font-size:22px;font-weight:800}.profile-stat-label{font-size:11px;color:var(--gray-500);text-transform:uppercase}.profile-section{margin-bottom:18px}.profile-section h3{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--gray-500);margin-bottom:8px}.profile-tags{display:flex;flex-wrap:wrap;gap:6px}.profile-tag{padding:5px 12px;background:var(--gray-100);border-radius:6px;font-size:13px;font-weight:500}.profile-bio{font-size:14px;color:var(--gray-700);line-height:1.6;padding:12px;background:var(--gray-50);border-radius:var(--radius-sm)}.verified-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--primary-light);color:var(--primary-dark);border-radius:6px;font-size:12px;font-weight:600;margin-top:8px}
.tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:4px;overflow-x:auto}.tab{padding:10px 18px;border:none;background:transparent;border-radius:8px;font-size:14px;font-weight:600;color:var(--gray-500);cursor:pointer;transition:all .2s;white-space:nowrap}.tab:hover{color:var(--gray-900)}.tab.active{background:var(--primary);color:#fff}.tab-content{display:none}.tab-content.active{display:block}
.my-task-item{display:flex;gap:14px;padding:16px;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);margin-bottom:12px}.my-task-item:hover{box-shadow:var(--shadow)}.my-task-img{width:88px;height:88px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.my-task-body{flex:1;min-width:0}.my-task-top{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:6px}.my-task-title{font-size:15px;font-weight:700;cursor:pointer}.my-task-title:hover{color:var(--primary)}.my-task-price{font-size:17px;font-weight:800;color:var(--primary-dark);white-space:nowrap}.my-task-info{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--gray-500);margin-bottom:8px}.my-task-actions{display:flex;gap:8px;flex-wrap:wrap}
.settings-group{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:20px;margin-bottom:16px}.settings-group h3{font-size:16px;font-weight:700;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--gray-100)}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--gray-100);gap:12px}.setting-row:last-child{border-bottom:none}.setting-label{font-size:14px;font-weight:500}.setting-desc{font-size:13px;color:var(--gray-500)}.toggle{position:relative;width:44px;height:24px;background:var(--gray-300);border-radius:12px;cursor:pointer;transition:background .2s;flex-shrink:0}.toggle.on{background:var(--primary)}.toggle::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:var(--shadow-sm)}.toggle.on::after{transform:translateX(20px)}
.review-item{padding:16px;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);margin-bottom:12px}.review-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.review-avatar{width:40px;height:40px;border-radius:50%;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--primary-dark);font-size:15px}.review-author{font-size:14px;font-weight:600}.review-date{font-size:12px;color:var(--gray-500)}.review-rating{margin-left:auto}.review-text{font-size:14px;color:var(--gray-700);line-height:1.6}
.auth-page{min-height:calc(100vh - 64px);display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{max-width:440px;width:100%;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:32px;box-shadow:var(--shadow-lg)}.auth-card h1{font-size:24px;font-weight:800;margin-bottom:8px;text-align:center}.auth-subtitle{font-size:14px;color:var(--gray-500);text-align:center;margin-bottom:24px}.code-input-group{display:flex;gap:8px;justify-content:center;margin:20px 0}.code-input{width:52px;height:60px;text-align:center;font-size:24px;font-weight:800;border:2px solid var(--gray-200);border-radius:10px;outline:none}.code-input:focus{border-color:var(--primary)}
.photo-upload{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;margin-top:8px}.photo-upload-item{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:var(--gray-100)}.photo-upload-item img{width:100%;height:100%;object-fit:cover}.photo-upload-remove{position:absolute;top:4px;right:4px;width:24px;height:24px;background:rgba(0,0,0,.6);color:#fff;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px}.photo-upload-add{aspect-ratio:1;border:2px dashed var(--gray-300);border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gray-500);font-size:24px}.photo-upload-add:hover{border-color:var(--primary);color:var(--primary)}
.admin-layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 64px)}.admin-sidebar{background:var(--dark);color:#fff;padding:20px 0;position:sticky;top:64px;height:calc(100vh - 64px)}.admin-nav-item{display:flex;align-items:center;gap:10px;padding:12px 20px;color:rgba(255,255,255,.7);font-size:14px;font-weight:500;cursor:pointer;border-left:3px solid transparent}.admin-nav-item:hover{color:#fff;background:rgba(255,255,255,.05)}.admin-nav-item.active{color:#fff;background:rgba(255,255,255,.1);border-left-color:var(--primary)}.admin-content{padding:24px;overflow-y:auto}.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.admin-stat-card{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);padding:20px}.admin-stat-num{font-size:32px;font-weight:800;color:var(--primary-dark)}.admin-stat-label{font-size:13px;color:var(--gray-500);margin-top:4px}.admin-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);overflow:hidden}.admin-table th{text-align:left;padding:12px 16px;background:var(--gray-50);font-size:13px;font-weight:600;color:var(--gray-700);border-bottom:1px solid var(--gray-200)}.admin-table td{padding:12px 16px;border-bottom:1px solid var(--gray-100);font-size:14px}.admin-table tr:hover{background:var(--gray-50)}
.chat-page{max-width:900px;margin:0 auto;padding:24px}.chat-window{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;height:calc(100vh - 160px)}.chat-header{padding:16px 20px;border-bottom:1px solid var(--gray-200);display:flex;align-items:center;gap:12px}.chat-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:8px}.chat-msg{max-width:70%;padding:10px 14px;border-radius:12px;font-size:14px;word-break:break-word}.chat-msg.own{align-self:flex-end;background:var(--primary);color:#fff}.chat-msg.other{align-self:flex-start;background:var(--gray-100)}.chat-msg img{max-width:200px;border-radius:8px;margin-top:6px}.chat-input{padding:16px 20px;border-top:1px solid var(--gray-200);display:flex;gap:8px}
.legal-page{max-width:800px;margin:0 auto;padding:32px 24px}.legal-page h1{font-size:28px;font-weight:800;margin-bottom:20px}.legal-page h2{font-size:20px;font-weight:700;margin:24px 0 12px}.legal-page p{font-size:15px;color:var(--gray-700);line-height:1.8;margin-bottom:12px}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:2000;display:flex;align-items:center;justify-content:center}.modal{background:var(--surface);border-radius:16px;padding:24px;max-width:480px;width:90%}
.footer{background:var(--dark);color:rgba(255,255,255,.7);padding:32px 24px;margin-top:48px}.footer-inner{max-width:1100px;margin:0 auto;display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between}.footer-links{display:flex;flex-wrap:wrap;gap:20px}.footer-links a{font-size:14px;cursor:pointer}.footer-links a:hover{color:#fff}.footer-copy{font-size:13px;margin-top:16px;opacity:.6}
@media(max-width:900px){.header-search{display:none}.task-detail-grid{grid-template-columns:1fr}.profile-layout{grid-template-columns:1fr}.profile-card{position:static}.params-grid{grid-template-columns:1fr}.admin-layout{grid-template-columns:1fr;min-height:auto}.admin-sidebar{display:block;position:static;height:auto;padding:8px 0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;-webkit-overflow-scrolling:touch}.admin-sidebar>div:first-child{display:none}.admin-sidebar .admin-nav-item{display:inline-flex;padding:9px 14px;border-left:none;border-bottom:2px solid transparent;font-size:13px}.admin-sidebar .admin-nav-item.active{border-left:none;border-bottom-color:var(--primary)}.admin-content{padding:16px;overflow-x:auto}}@media(max-width:640px){.sidebar{width:100%}.main-layout{flex-direction:column;height:auto}.map-area{height:45vh;flex-shrink:0}.task-gallery{grid-template-columns:1fr}.task-gallery-thumbs{display:none}.code-input{width:40px;height:50px;font-size:20px}.header-inner{padding:0 12px;gap:8px}.header-actions .btn{padding:8px 12px;font-size:13px}.auth-card{padding:20px}.page{padding:16px}.task-meta-row{font-size:12px}.task-main h1{font-size:20px}.task-price-big{font-size:26px}.admin-content{padding:12px}.admin-table{font-size:12px}.admin-table th,.admin-table td{padding:8px}}
.task-highlighted{border-left:3px solid var(--accent)!important;background:var(--surface)beb!important}
.task-highlighted:hover{background:#fef3c7!important}
.price-marker.highlighted{border-color:var(--accent);background:var(--surface)beb;color:#92400e}
.price-marker.highlighted:hover{background:var(--accent);color:#fff}
.price-marker.pinned{border-color:#3b82f6;background:#eff6ff;color:#1e40af}
.price-marker.pinned:hover{background:#3b82f6;color:#fff}
.balance-card{background:linear-gradient(135deg,var(--primary),#0d7c3a);color:#fff;border:none;border-radius:var(--radius);padding:24px;text-align:center}
.promo-card{border:2px solid var(--primary);background:var(--primary-light);border-radius:var(--radius);padding:20px;text-align:center}
.fab-create{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:900;background:var(--primary);color:#fff;border:none;border-radius:28px;padding:14px 32px;font-size:15px;font-weight:700;box-shadow:0 4px 20px rgba(22,163,74,.4);cursor:pointer;transition:all .2s;white-space:nowrap}.fab-create:hover{background:var(--primary-dark);box-shadow:0 6px 24px rgba(22,163,74,.5);transform:translateX(-50%) translateY(-2px)}
.city-item:hover{background:var(--gray-50)!important}
.filter-row{display:flex;gap:6px;flex-wrap:wrap;max-height:200px;overflow-y:auto}.filter-row::-webkit-scrollbar{width:4px}.filter-row::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:2px}

/* ============================================================
   5ТАК · Админка — полировка интерфейса
   Тёмная тема, таблицы, кнопки, бейджи, тумблеры, прогресс,
   карточки-счётчики, панели, адаптивность.
   (Дополнение к базовым стилям — существующее не удалено.)
   ============================================================ */

/* --- Доп. токены палитры (используются инлайн-стилями в JS) --- */
:root{--gray-600:#64748b;--gray-400:#94a3b8;--green-400:#4ade80}

/* ------------------------------------------------------------
   1. Тёмная тема админки
   ------------------------------------------------------------ */
.admin-layout{background:var(--dark)}
.admin-content{
  min-width:0;
  padding:24px;
  overflow:auto;
  background:var(--dark);
  color:var(--gray-200);
  --primary-dark:var(--green-400);   /* инлайн-суммы на тёмном фоне */
  --gray-700:var(--gray-300);        /* инлайн-описания (модерация) */
}
.admin-content h1{color:#fff}
.admin-content h2,.admin-content .card h2{color:#fff}
.admin-content p{color:var(--gray-300)}
.admin-content .empty{color:var(--gray-500)}
.admin-content a{color:var(--green-400)}
.admin-content a:hover{color:#86efac}

/* Кнопки в тёмной админке (фикс hover/active, бейджи контрастны) */
.admin-content .btn-primary{background:#16a34a;color:#fff}
.admin-content .btn-primary:hover{background:#15803d}
.admin-content .btn-primary:active{background:#128a3a}
.admin-content .btn-outline{background:transparent;color:var(--gray-200);border:1.5px solid rgba(148,163,184,.4)}
.admin-content .btn-outline:hover{border-color:var(--green-400);color:#fff;background:rgba(22,163,74,.12)}
.admin-content .btn-ghost{color:var(--gray-400)}
.admin-content .btn-ghost:hover{color:#fff}

/* Формы в тёмной админке */
.admin-content .form-group label{color:var(--gray-300)}
.admin-content .input{background:var(--dark);border-color:rgba(148,163,184,.28);color:var(--gray-200)}
.admin-content .input:focus{border-color:var(--green-400)}
.admin-content .input::placeholder{color:var(--gray-500)}
.admin-content select.input option{background:#fff;color:#0f172a}

/* Бейджи: сохраняем контраст текста на светлой подложке */
.admin-content .badge-gray,.admin-content .badge-neutral{color:#475569}
.admin-content .badge-green,.admin-content .badge-success{color:#15803d}

/* ------------------------------------------------------------
   Карточки-счётчики статистики
   ------------------------------------------------------------ */
.admin-stat-card{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,#1e293b 0%,#16213a 100%);
  border:1px solid rgba(148,163,184,.16);
  border-radius:var(--radius);
  padding:20px;
  box-shadow:0 4px 16px rgba(0,0,0,.22);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.admin-stat-card::before{
  content:'';position:absolute;left:0;top:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--green-400),transparent);
  opacity:0;transition:opacity .2s ease;
}
.admin-stat-card:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(0,0,0,.35);border-color:rgba(74,222,128,.35)}
.admin-stat-card:hover::before{opacity:1}
.admin-stat-num{font-size:32px;font-weight:800;line-height:1.1;letter-spacing:-.5px;color:var(--green-400);font-variant-numeric:tabular-nums}
.admin-stat-label{font-size:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--gray-500);margin-top:6px}

/* ------------------------------------------------------------
   2. Таблицы .admin-table (зебра, hover, аккуратная шапка)
   ------------------------------------------------------------ */
.admin-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  background:var(--surface);
  border:1px solid var(--gray-200);
  border-radius:var(--radius);
  overflow:hidden;
  font-size:14px;
}
.admin-table th{
  text-align:left;padding:12px 16px;
  background:var(--gray-50);
  font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  color:var(--gray-500);
  border-bottom:1px solid var(--gray-200);
  white-space:nowrap;
}
.admin-table td{
  padding:12px 16px;
  border-bottom:1px solid var(--gray-100);
  color:var(--gray-700);
  vertical-align:middle;
}
.admin-table tbody tr:last-child td{border-bottom:none}
.admin-table tbody tr:nth-child(even){background:var(--gray-50)}
.admin-table tbody tr:hover{background:var(--primary-light)}
.admin-table td:first-child{color:var(--gray-500);font-size:13px;font-variant-numeric:tabular-nums}

/* Тёмный вариант таблиц внутри админки */
.admin-content .admin-table{background:var(--gray-900);border-color:rgba(148,163,184,.16);color:var(--gray-200)}
.admin-content .admin-table th{background:rgba(15,23,42,.55);color:var(--gray-400);border-bottom-color:rgba(148,163,184,.18)}
.admin-content .admin-table td{border-bottom-color:rgba(148,163,184,.08);color:var(--gray-300)}
.admin-content .admin-table tbody tr:nth-child(even){background:rgba(148,163,184,.05)}
.admin-content .admin-table tbody tr:hover{background:rgba(22,163,74,.12)}
.admin-content .admin-table td:first-child{color:var(--gray-500)}

/* Карточки-панели в тёмной админке */
.admin-content .card{background:var(--gray-900);border-color:rgba(148,163,184,.14);box-shadow:0 4px 16px rgba(0,0,0,.18)}

/* ------------------------------------------------------------
   3. Кнопки .btn: полировка (hover/active, единый радиус)
   ------------------------------------------------------------ */
.btn{
  border-radius:10px;
  transition:transform .12s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease;
  box-shadow:0 1px 2px rgba(15,23,42,.06);
}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn[disabled],.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(22,163,74,.28)}
.btn-primary:hover{background:var(--primary-dark);box-shadow:0 4px 14px rgba(22,163,74,.36)}
.btn-primary:active{background:#15803d;box-shadow:0 1px 4px rgba(22,163,74,.3)}
.btn-danger{background:var(--danger);color:#fff;box-shadow:0 2px 8px rgba(239,68,68,.25)}
.btn-danger:hover{background:#dc2626;box-shadow:0 4px 14px rgba(239,68,68,.35)}
.btn-danger:active{background:#b91c1c;box-shadow:0 1px 4px rgba(239,68,68,.3)}
.btn-outline:active{background:var(--primary-light)}
.btn-ghost:hover{background:var(--gray-100)}

/* ------------------------------------------------------------
   4. Бейджи статусов (семантические)
   ------------------------------------------------------------ */
.badge-success{background:var(--primary-light);color:var(--primary-dark)}
.badge-danger{background:#fee2e2;color:#991b1b}
.badge-warning{background:#fef3c7;color:#92400e}
.badge-neutral{background:var(--gray-100);color:var(--gray-700)}

/* ------------------------------------------------------------
   5. Тумблер (компактный переключатель)
   ------------------------------------------------------------ */
.toggle{
  position:relative;width:40px;height:22px;
  background:var(--gray-300);
  border-radius:999px;cursor:pointer;
  transition:background .2s ease,box-shadow .2s ease;
  flex-shrink:0;
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.06);
}
.toggle::after{
  content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;
  background:#fff;border-radius:50%;
  transition:transform .18s cubic-bezier(.4,0,.2,1);
  box-shadow:0 1px 3px rgba(15,23,42,.35);
}
.toggle.on{background:var(--primary)}
.toggle.on::after{transform:translateX(18px)}
.toggle:hover{box-shadow:inset 0 0 0 1px var(--primary)}
.toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

/* ------------------------------------------------------------
   6. Прогресс-бары (ресурсы сервера)
   ------------------------------------------------------------ */
.progress{
  width:100%;height:8px;
  background:var(--gray-100);
  border-radius:999px;overflow:hidden;
  border:1px solid var(--gray-200);
}
.progress-bar{
  height:100%;
  background:linear-gradient(90deg,var(--primary),var(--green-400));
  border-radius:999px;
  transition:width .4s ease;
}
.admin-content .progress{background:rgba(148,163,184,.16);border-color:rgba(148,163,184,.22)}

/* ------------------------------------------------------------
   7. Новые секции админки: .stat-card, .panel, .kv-grid
   ------------------------------------------------------------ */
.stat-card{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,#1e293b,#16213a);
  border:1px solid rgba(148,163,184,.16);
  border-radius:var(--radius);
  padding:20px;
  box-shadow:0 4px 16px rgba(0,0,0,.22);
  transition:transform .18s ease,box-shadow .18s ease;
}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.32)}
.stat-card .stat-num{font-size:30px;font-weight:800;letter-spacing:-.5px;color:var(--green-400);font-variant-numeric:tabular-nums}
.stat-card .stat-label{font-size:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--gray-500);margin-top:6px}

.panel{
  background:var(--gray-900);
  border:1px solid rgba(148,163,184,.14);
  border-radius:var(--radius);
  padding:20px;margin-bottom:16px;
  box-shadow:0 4px 16px rgba(0,0,0,.18);
  color:var(--gray-200);
}
.panel-title{
  font-size:16px;font-weight:700;color:#fff;
  margin-bottom:16px;padding-bottom:12px;
  border-bottom:1px solid rgba(148,163,184,.12);
}

/* Таблица «ключ-значение»: <div class="kv-grid"><div class="kv-key">..</div><div class="kv-value">..</div>… */
.kv-grid{
  display:grid;grid-template-columns:minmax(140px,220px) 1fr;
  border:1px solid rgba(148,163,184,.14);
  border-radius:var(--radius-sm);overflow:hidden;
  gap:1px;background:rgba(148,163,184,.14);
}
.kv-grid .kv-key,
.kv-grid .kv-value{padding:10px 14px;background:var(--gray-900)}
.kv-grid .kv-key{font-size:13px;color:var(--gray-500)}
.kv-grid .kv-value{font-size:14px;font-weight:600;color:var(--gray-200)}

/* ------------------------------------------------------------
   Модальные окна и сообщения
   ------------------------------------------------------------ */
.modal{border-radius:16px;border:1px solid var(--gray-200);box-shadow:0 20px 60px rgba(15,23,42,.4);animation:modalIn .18s ease}
@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.modal-overlay{animation:overlayIn .16s ease}
@keyframes overlayIn{from{opacity:0}to{opacity:1}}
.error-msg{border:1px solid #fecaca;border-left:3px solid var(--danger)}
.success-msg{border:1px solid #bbf7d0;border-left:3px solid var(--primary)}

/* ------------------------------------------------------------
   8. Адаптивность: горизонтальный скролл таблиц
   ------------------------------------------------------------ */
@media(max-width:640px){
  .admin-stat-grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .admin-stat-num{font-size:26px}
  .admin-content .admin-table{min-width:560px}
  .page .admin-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
}
.price-marker-hover{background:var(--primary);color:#fff;border-color:var(--primary-dark);box-shadow:0 2px 10px rgba(16,24,40,.3);transform:scale(1.08)}

/* ===== Mobile: карта главная, список — выезжающая шторка ===== */
.sheet-toggle{display:none}
@media(max-width:640px){
  .main-layout{position:relative;height:calc(100vh - 64px);height:calc(100dvh - 64px)}
  .map-area{height:100%;flex:1;flex-shrink:1}
  .sidebar{position:absolute;left:0;right:0;bottom:0;top:auto;width:100%;height:85vh;z-index:900;border-right:none;border-top:1px solid var(--gray-200);border-radius:16px 16px 0 0;box-shadow:0 -4px 24px rgba(16,24,40,.18);transition:transform .3s ease;overflow:hidden}
  .sidebar-collapsed{transform:translateY(calc(100% - 56px))}
  .sheet-toggle{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:9px 0 7px;background:var(--surface);border:none;cursor:pointer;flex-shrink:0}
  .sheet-grab{width:44px;height:5px;border-radius:3px;background:var(--gray-300)}
  .sheet-toggle-label{font-size:13px;font-weight:700;color:var(--gray-600)}
  .sidebar-filters{padding:8px 16px}
  .task-list{padding:10px 12px}
  .fab-create{display:none}
  .header-inner{gap:8px;padding:0 12px}
  .city-name{display:none}
  .city-btn{padding:8px 10px}
  .task-list-header{padding:10px 14px}
  .task-card-mini{padding:10px;margin-bottom:8px}
  .task-card-mini-img{width:72px;height:72px;object-fit:cover}
}
.cat-chevron{width:7px;height:7px;border-right:2px solid var(--gray-400);border-bottom:2px solid var(--gray-400);transform:rotate(45deg);transition:transform .2s;flex-shrink:0;margin-left:8px}.cats-collapsed .filter-row{display:none}.cats-collapsed .cat-chevron{transform:rotate(-45deg)}

/* ===== Тёмная тема ===== */
[data-theme="dark"]{
  --gray-50:#0a0a0a;--gray-100:#161616;--gray-200:#2e2e2e;--gray-300:#454545;--gray-500:#9e9e9e;--gray-700:#d6d6d6;--gray-900:#f5f5f5;
  --dark:#0a0a0a;--primary-light:#14532d;--primary-dark:#4ade80;
  --surface:#161616;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow:0 2px 8px rgba(0,0,0,.5);--shadow-lg:0 8px 30px rgba(0,0,0,.6);
  color-scheme:dark;
}
[data-theme="dark"] .admin-content,[data-theme="dark"] .panel{
  --gray-50:#161616;--gray-100:#1c1c1c;--gray-200:#e2e8f0;--gray-300:#cbd5e1;--gray-500:#94a3b8;--gray-700:#475569;--gray-900:#161616;
  --primary-light:#dcfce7;--primary-dark:#15803d;
  --surface:#fff;
}
[data-theme="dark"] .price-marker{color:#15803d}
[data-theme="dark"] .map-btn{color:#475569}
[data-theme="dark"] .profile-avatar{color:#15803d}
[data-theme="dark"] .admin-stat-card{background:linear-gradient(160deg,#1a1a1a 0%,#0d0d0d 100%)}
[data-theme="dark"] .task-highlighted{background:#222!important}
[data-theme="dark"] .task-highlighted:hover{background:#2a2a2a!important}
.theme-btn{display:flex;align-items:center;justify-content:center;padding:8px 10px;border:1.5px solid var(--gray-200);border-radius:10px;font-size:15px;cursor:pointer;background:var(--surface);white-space:nowrap;line-height:1}

.user-loc-dot{width:20px;height:20px;background:#3b82f6;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 4px rgba(59,130,246,.35)}
.cat-toggle-label{font-size:11px;font-weight:700;color:var(--primary);letter-spacing:0;text-transform:none}
.theme-btn-map{width:30px;height:30px;background:var(--surface);border:1px solid rgba(0,0,0,.3);border-radius:4px;font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.25)}


/* ===== Бургер-меню шапки (мобильные) ===== */
.burger-btn{display:none;background:transparent;border:none;font-size:24px;line-height:1;cursor:pointer;color:var(--gray-700);padding:6px 8px;flex-shrink:0}
.mobile-menu{display:none}
@media(max-width:640px){
  .header-actions{display:none}
  .burger-btn{display:block}
  .mobile-menu{display:none;flex-direction:column;gap:6px;padding:10px 12px;background:var(--surface);border-bottom:1px solid var(--gray-200);box-shadow:var(--shadow)}
  .mobile-menu.open{display:flex}
  .mobile-menu .btn{width:100%;justify-content:flex-start}
}

/* ===== Защита от горизонтального вылезания (профиль/админка) ===== */
.profile-layout>*,.admin-layout>*{min-width:0}
.profile-layout>div:last-child{min-width:0}
.profile-card-body,.admin-content{overflow-wrap:break-word}
.my-task-title,.review-text,.profile-bio{word-break:break-word}
@media(max-width:640px){
  .my-task-top{flex-wrap:wrap}
  .my-task-price{margin-left:0}
  .profile-layout,.admin-layout{max-width:100%;overflow-x:hidden}
  .profile-layout>div:last-child{overflow-x:hidden}
  .tabs{max-width:100%}
  .my-task-item,.review-item,.setting-row{gap:10px}
}
/* ===== Десктоп: тема в шапке + рамки кнопок и карточек ===== */
@media(min-width:641px){
  .theme-btn-map{display:none}
  .btn{border:1.5px solid var(--gray-300)}
  .btn-ghost{border:1.5px solid var(--gray-300)}
  .btn-outline{border:1.5px solid var(--gray-300)}
  .btn-primary{border:1.5px solid var(--primary-dark)}
  .btn-danger{border:1.5px solid #b91c1c}
  .task-card-mini{border:1.5px solid var(--gray-300)}
  .card{border:1.5px solid var(--gray-300)}
  .my-task-item{border:1.5px solid var(--gray-300)}
}
@media(max-width:640px){
  .theme-btn-header{display:none}
}
.city-btn.needs-city{border-color:var(--accent);color:var(--accent);font-weight:700;background:var(--primary-light)}
/* ===== Десктоп: вкладки профиля переносятся, без горизонтальной прокрутки ===== */
@media(min-width:641px){
  .tabs{flex-wrap:wrap}
  .tab{padding:8px 14px}
}
