:root{--bg:#f5f7fb;--surface:#fff;--field:#fff;--field-strong:#fff;--ink:#18202f;--muted:#687386;--line:#dde3ee;--primary:#0f8b8d;--accent:#f25f5c;--success:#1f9d55;--danger:#c93838;--shadow:0 10px 30px rgba(24,32,47,.08)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.5}
a{color:inherit;text-decoration:none}
input,select,textarea,button{font:inherit}
input,select,textarea{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--field);color:var(--ink)}
textarea{resize:vertical}
main{max-width:1180px;margin:0 auto;padding:28px 18px}
.site-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 24px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
.brand{font-weight:800;font-size:20px;color:var(--primary)}
nav{display:flex;gap:14px;flex-wrap:wrap}
nav a{color:var(--muted);font-weight:700;font-size:14px}
.hero{min-height:360px;display:flex;flex-direction:column;justify-content:center;gap:20px;padding:54px 34px;border-radius:8px;background:linear-gradient(135deg,#13293d,#0f8b8d 58%,#f25f5c);color:#fff;margin-bottom:30px}
.hero h1{max-width:780px;font-size:clamp(34px,5vw,58px);line-height:1.05;margin:0;letter-spacing:0}
.eyebrow{text-transform:uppercase;font-size:12px;font-weight:800;letter-spacing:.12em;color:inherit;opacity:.78}
.lead{font-size:20px;color:var(--muted)}
.searchbar{display:flex;gap:10px;max-width:720px}
.searchbar.compact{max-width:none}
.searchbar input{min-height:48px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink);padding:10px 14px;font-weight:800;cursor:pointer;white-space:nowrap}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.danger,.danger{color:#fff;background:var(--danger);border-color:var(--danger)}
.btn.small{padding:6px 9px;font-size:12px}
.stats,.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.stats span,.stat-card,.card,.panel,.content-block{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}
.stats span{display:flex;flex-direction:column;color:var(--ink);padding:16px;max-width:170px}
.stats strong,.stat-card strong{font-size:28px}
section{margin:28px 0}
h1,h2,h3{line-height:1.15;margin:0 0 14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.card{padding:16px;min-width:0}
.apk-card{display:grid;grid-template-columns:64px 1fr;gap:14px;align-items:center}
.apk-card h3,.apk-card p{overflow-wrap:anywhere}
.app-icon,.detail-icon{object-fit:cover;background:#e9eef6;border-radius:16px}
.app-icon{width:64px;height:64px}
.detail-icon{width:138px;height:138px}
.muted{color:var(--muted);font-size:14px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips a,.badge{border:1px solid var(--line);background:var(--field);border-radius:999px;padding:7px 12px;color:var(--muted);font-weight:700}
.detail{display:grid;grid-template-columns:160px 1fr;gap:28px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:28px;box-shadow:var(--shadow)}
.meta-grid{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}
.meta-grid span{background:#eef7f7;border-radius:8px;padding:8px 10px;font-weight:700;color:#226061}
.content-block{padding:26px}
.page-copy{max-width:780px}
.footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:24px;border-top:1px solid var(--line);color:var(--muted);background:var(--surface)}
.empty{padding:30px;color:var(--muted)}
.login-page{min-height:100vh;display:grid;place-items:center;padding:18px;background:linear-gradient(135deg,#13293d,#0f8b8d)}
.login-card{width:min(430px,100%);background:var(--surface);border-radius:8px;padding:28px;box-shadow:var(--shadow);display:grid;gap:14px}
.login-card label,.form-grid label{display:grid;gap:7px;font-weight:800;color:var(--muted)}
.admin-body{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;background:#101722;color:#fff;padding:22px;display:flex;flex-direction:column;gap:22px;border-right:1px solid #253044}
.sidebar .brand{color:#fff}
.sidebar-caption{margin:4px 0 0;color:#93a4b8;font-size:13px;font-weight:700}
.admin-nav{display:grid;gap:6px}
.admin-nav.secondary{margin-top:auto;padding-top:16px;border-top:1px solid #253044}
.admin-nav a{color:#c9d6e6;padding:11px 12px;border-radius:8px;font-weight:800;font-size:14px}
.admin-nav a:hover,.admin-nav a.active{background:#162235;color:#fff}
.admin-nav a.active{box-shadow:inset 3px 0 0 var(--primary)}
.admin-main{max-width:none;padding:28px;overflow:auto}
.admin-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px}
.admin-top h1{margin:0;font-size:30px}
.page-kicker{margin:0 0 3px;color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.admin-user{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 12px;color:var(--muted);font-weight:800}
.panel{padding:22px}
.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.panel-heading h2{margin:0 0 4px}
.panel-heading p{margin:0;color:var(--muted);font-size:14px}
.admin-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:24px;box-shadow:var(--shadow)}
.admin-intro h2{margin:0 0 6px;font-size:28px}
.admin-intro p{margin:0;color:var(--muted);max-width:620px}
.admin-intro .toolbar{margin:0;min-width:min(460px,100%)}
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.stat-card{padding:18px;display:grid;gap:8px}
.stat-card span{color:var(--muted);font-weight:800}
.stat-grid.small .stat-card strong{font-size:22px}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.toolbar input,.toolbar select{flex:1 1 240px;max-width:380px}
.toolbar .mini{flex:0 0 96px;max-width:110px}
.toolbar .btn{flex:0 0 auto}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:12px;text-transform:uppercase;color:var(--muted)}
.actions{display:flex;gap:6px;flex-wrap:wrap}
.actions form{display:inline}
.inline-edit{display:grid;grid-template-columns:minmax(150px,1fr) auto;gap:8px;margin-top:8px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.simple-upload{max-width:620px;display:grid;gap:16px}
.form-grid .wide,.wide{grid-column:1/-1}
.check{display:flex!important;align-items:center;gap:10px}
.check input{width:auto}
.alert{padding:12px 14px;border-radius:8px;margin-bottom:14px;background:#e7f6ef;color:#0b6840;font-weight:700}
.alert.danger{background:#ffe9e9;color:#8a2020}
.alert.success{background:#e7f6ef;color:#0b6840}
.route-chain{display:grid;gap:12px}
.route-workspace{display:grid;grid-template-columns:340px minmax(0,1fr);gap:18px;align-items:start;margin:24px 0}
.route-list-panel{position:sticky;top:24px}
.route-detail-panel{min-width:0}
.route-item{display:grid;grid-template-columns:minmax(220px,1fr) 100px 120px 130px auto auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:14px;background:var(--field-strong);color:var(--ink)}
.route-item.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,139,141,.14)}
.route-item strong{overflow-wrap:anywhere}
.route-item label{display:grid;gap:5px;color:var(--muted);font-size:13px;font-weight:800}
.route-item label input{margin-top:0}
.route-usage{color:var(--muted);font-weight:700;white-space:nowrap}
.route-row{display:grid;gap:4px;border:1px solid var(--line);border-radius:8px;padding:13px;margin-bottom:10px;background:var(--field-strong);color:var(--ink)}
.route-row.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,139,141,.14)}
.route-row span{color:var(--muted);font-size:13px}
.route-editor{align-items:start}
.button-row{display:flex;gap:10px;flex-wrap:wrap}
.button-row .btn{min-width:140px}
.route-hero{padding:34px 28px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}
.route-hero h1{font-size:clamp(28px,4vw,44px);overflow-wrap:anywhere}
.route-apk-card{display:grid;grid-template-columns:72px 1fr;gap:16px;align-items:start}
.route-apk-card h2{font-size:20px;overflow-wrap:anywhere}
.route-apk-card .btn{margin-top:8px}
.mini{width:90px}
@media (prefers-color-scheme:dark){:root{--bg:#10151f;--surface:#171d29;--field:#111824;--field-strong:#101722;--ink:#edf2f7;--muted:#a7b0bf;--line:#2b3443;--shadow:none}input,select,textarea,.btn,.chips a,.badge{background:var(--field);color:var(--ink)}.site-header,.footer{background:var(--surface)}.stats span,.route-hero{background:var(--surface)}.meta-grid span{background:#123236;color:#bdebec}.route-item,.route-row{background:var(--field-strong);color:var(--ink)}}
.download-body{min-height:100vh;background:#101319;color:#f5f7fb;font-family:Arial,Helvetica,sans-serif}
.download-shell{min-height:100vh;max-width:none;margin:0;padding:24px 18px;display:grid;place-items:center}
.download-card{width:min(100%,330px);margin:0 auto;padding:36px 29px;border:1px solid #2a2e3a;border-radius:14px;background:#20232b;box-shadow:0 22px 60px rgba(0,0,0,.28);text-align:center}
.download-icon{width:64px;height:64px;margin:0 auto 19px;display:grid;place-items:center;border-radius:14px;background:#2b303c;color:#62a4ff}
.download-card h1{margin:0 0 4px;font-size:16px;line-height:1.15;font-weight:900;color:#f3f4f8;overflow-wrap:anywhere}
.download-size,.download-meta,.download-note{margin:0;color:#7d8493;font-size:12px;line-height:1.35}
.download-meta{margin-bottom:22px}
.download-button{width:100%;min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:8px;background:#315fe9;color:#fff;font-size:14px;font-weight:800;box-shadow:0 12px 24px rgba(49,95,233,.26)}
.download-spinner{width:15px;height:15px;border-radius:50%;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:download-spin .8s linear infinite;flex:0 0 auto}
.download-note{margin-top:15px}
.download-fallback{display:inline-block;margin-top:7px;color:#72adff;font-size:12px;text-decoration:underline;text-underline-offset:2px}
@keyframes download-spin{to{transform:rotate(360deg)}}
@media (max-width:1100px){.route-workspace{grid-template-columns:1fr}.route-list-panel{position:relative;top:auto}.route-item{grid-template-columns:1fr 120px 120px}.route-item .btn{width:100%}.admin-intro{display:grid}}
@media (max-width:800px){.site-header,.footer{align-items:flex-start;flex-direction:column}.searchbar,.detail,.two-col,.form-grid{grid-template-columns:1fr;display:grid}.searchbar{gap:8px}.admin-body{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.admin-nav.secondary{margin-top:0}.admin-main{padding:16px}.admin-top{align-items:flex-start;flex-direction:column}.route-item,.route-apk-card{grid-template-columns:1fr}.hero{padding:34px 20px}.detail-icon{width:96px;height:96px}.toolbar{display:grid;grid-template-columns:1fr}.toolbar input,.toolbar select,.toolbar .btn{max-width:none;width:100%}.mini{width:100%}.button-row{display:grid}.button-row .btn{width:100%}.download-shell{padding:18px}.download-card{width:min(100%,330px);padding:36px 29px}}
