:root {
  --p: #1976D2; --pd: #1565C0; --pl: #42A5F5;
  --s: #1E1E2E; --s2: #2A2A3C; --s3: #353548;
  --bg: #111119; --t: #E8E8F0; --t2: #A0A0B8;
  --bd: #3A3A50; --ok: #4CAF50; --warn: #FF9800; --err: #F44336;
  --r: 8px; --sh: 0 2px 8px rgba(0,0,0,.3);
}

/* 浅色模式（手动切换） */
html.light {
  --pl: #1976D2;
  --s: #FFFFFF; --s2: #F9FAFB; --s3: #F3F4F6;
  --bg: #F3F4F6; --t: #111827; --t2: #6B7280;
  --bd: #E5E7EB; --sh: 0 2px 8px rgba(0,0,0,.08);
}

@media (prefers-color-scheme: light) {
  html:not(.dark):not(.light) {
    --pl: #1976D2;
    --s: #FFFFFF; --s2: #F9FAFB; --s3: #F3F4F6;
    --bg: #F3F4F6; --t: #111827; --t2: #6B7280;
    --bd: #E5E7EB; --sh: 0 2px 8px rgba(0,0,0,.08);
  }
}

*{margin:0;padding:0;box-sizing:border-box}
html{overflow-x:hidden;-webkit-text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--t);line-height:1.6;min-height:100vh;display:flex;flex-direction:column;transition:background-color .3s,color .3s;overflow-x:hidden;-webkit-tap-highlight-color:transparent}

/* ===== Header ===== */
.header{background:var(--p);padding:0 max(24px,env(safe-area-inset-left)) 0 max(24px,env(safe-area-inset-right));height:56px;display:flex;align-items:center;position:sticky;top:0;z-index:100;box-shadow:var(--sh);flex-wrap:nowrap;overflow:visible}
.header .brand{font-size:18px;font-weight:600;color:#fff;text-decoration:none;display:flex;align-items:center;gap:8px}
.header .brand i{font-size:24px}
.header .spacer{flex:1}
.header-btn{background:none;border:none;color:rgba(255,255,255,.85);font-size:20px;cursor:pointer;padding:8px;border-radius:50%;transition:background .2s}
.header-btn:hover{background:rgba(255,255,255,.15)}
.header-select{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:6px;padding:6px 10px;font-size:13px;cursor:pointer;outline:none;margin-left:8px;max-width:200px}
.header-select option{background:var(--s);color:var(--t)}

/* ===== Config Menu (inline collapsible) ===== */
.header-config-wrap{position:relative}
.config-menu{background:var(--s);border-bottom:1px solid var(--bd);overflow:hidden;transition:max-height .3s ease,opacity .3s ease;max-height:600px;opacity:1}
.config-menu.collapsed-panel{max-height:0;opacity:0;border-bottom:none}
.config-menu-inner{padding:12px 20px 16px}
.config-menu-header{padding:0 0 10px;font-size:14px;font-weight:600;color:var(--t)}
.config-menu-divider{border-bottom:1px solid var(--bd);margin:0 0 10px}
.config-menu-list{display:flex;flex-direction:column;gap:4px}
.config-menu-list .device-item{border-radius:6px}
.config-menu-list .device-item:last-child{border-bottom:none}

/* ===== Layout ===== */
.container{max-width:1100px;margin:0 auto;padding:24px;flex:1;width:100%}

/* ===== Cards ===== */
.card{background:var(--s);border-radius:var(--r);border:1px solid var(--bd);margin-bottom:20px;overflow:hidden;transition:background-color .3s,border-color .3s}
.card-header{padding:16px 20px;font-size:15px;font-weight:600;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px;user-select:none;transition:background .2s,border-color .3s}
.card-header i{color:var(--pl);font-size:20px}
.card-body{padding:20px}
.card-header.collapsible{cursor:pointer;position:relative}
.card-header.collapsible:hover{background:var(--s2)}
.card-chevron{margin-left:auto;transition:transform .25s ease;font-size:18px!important;color:var(--t2)!important}
.card-body.collapsed{display:none}
.card-header.collapsible.expanded .card-chevron{transform:rotate(180deg)}

/* ===== Forms ===== */
label{display:block;font-size:13px;color:var(--t2);margin-bottom:6px;font-weight:500}
input[type="text"],input[type="url"],input[type="number"],select,textarea{width:100%;padding:10px 14px;background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);color:var(--t);font-size:14px;outline:none;transition:border-color .2s,background-color .3s,color .3s;font-family:inherit}
input:focus,select:focus,textarea:focus{border-color:var(--p);box-shadow:0 0 0 2px rgba(25,118,210,.2)}
select{cursor:pointer}
select option{background:var(--s2)}
textarea{resize:vertical;min-height:80px;font-family:'SF Mono',Consolas,Monaco,monospace;font-size:13px;line-height:1.5}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border:none;border-radius:var(--r);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;text-decoration:none}
.btn-primary{background:var(--p);color:#fff}
.btn-primary:hover{background:var(--pd)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-success{background:var(--ok);color:#fff}
.btn-success:hover{opacity:.9}
.btn-outline{background:transparent;border:1px solid var(--bd);color:var(--t)}
.btn-outline:hover{background:var(--s2)}
.btn-sm{padding:6px 14px;font-size:13px}
.btn-danger{background:var(--err);color:#fff}
.btn-ghost{background:transparent;border:none;color:var(--t2);padding:6px 10px;font-size:13px}
.btn-ghost:hover{color:var(--t);background:var(--s2)}

/* ===== Grid / Row ===== */
.row{display:flex;gap:16px;flex-wrap:wrap}
.col{flex:1;min-width:200px}
.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;font-size:13px}
.detail-grid-wide{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.config-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:16px}

/* ===== Tags & Chips ===== */
.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:500}
.tag-primary{background:rgba(25,118,210,.2);color:var(--pl)}
.tag-success{background:rgba(76,175,80,.2);color:var(--ok)}
.tag-warning{background:rgba(255,152,0,.2);color:var(--warn)}
.tag-error{background:rgba(244,67,54,.2);color:var(--err)}
.chip-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--s3);border-radius:16px;font-size:12px;color:var(--t);transition:background-color .3s,color .3s}
.chip.removed{background:rgba(244,67,54,.15);text-decoration:line-through;color:var(--err)}
.chip .remove{cursor:pointer;font-size:14px;color:var(--t2);margin-left:2px}
.chip .remove:hover{color:var(--err)}

/* ===== Alerts ===== */
.alert{padding:12px 16px;border-radius:var(--r);margin-bottom:16px;display:flex;align-items:flex-start;gap:10px;font-size:14px}
.alert-error{background:rgba(244,67,54,.15);border:1px solid rgba(244,67,54,.3);color:var(--err)}
.alert-info{background:rgba(25,118,210,.15);border:1px solid rgba(25,118,210,.3);color:var(--pl)}
.alert-success{background:rgba(76,175,80,.15);border:1px solid rgba(76,175,80,.3);color:var(--ok)}
.alert-warning{background:rgba(255,152,0,.15);border:1px solid rgba(255,152,0,.3);color:var(--warn)}
.alert i{font-size:18px;flex-shrink:0;margin-top:1px}

/* ===== Spinner & Progress ===== */
.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--bd);border-top-color:var(--p);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-text{display:flex;align-items:center;gap:10px;color:var(--t2);padding:20px;justify-content:center}
.progress-bar{width:100%;height:6px;background:var(--s3);border-radius:3px;overflow:hidden;margin:8px 0}
.progress-bar .fill{height:100%;background:var(--p);border-radius:3px;transition:width .5s ease}

/* ===== Config Panel ===== */
.config-panel{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:20px;margin-bottom:20px;transition:background-color .3s,border-color .3s}
.config-panel h3{margin-bottom:16px;font-size:16px;display:flex;align-items:center;gap:8px}

/* ===== Search ===== */
.search-box{position:relative}
.search-box input{padding-left:44px}
.search-box i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--t2);font-size:18px}

/* ===== Device List ===== */
.device-list{max-height:400px;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--r);background:var(--s2);transition:background-color .3s,border-color .3s}
.device-item{padding:10px 14px;cursor:pointer;font-size:14px;border-bottom:1px solid var(--bd);transition:background .15s,border-color .3s;display:flex;align-items:center;gap:8px}
.device-item:last-child{border-bottom:none}
.device-item:hover{background:var(--s3)}
.device-item.selected{background:rgba(25,118,210,.2);color:var(--pl)}
.device-item i{color:var(--t2);font-size:16px;flex-shrink:0}

/* ===== Image List ===== */
.image-list{display:flex;flex-direction:column;gap:8px}
.image-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--s2);border-radius:var(--r);border:1px solid var(--bd);transition:background-color .3s,border-color .3s}
.image-item .info{flex:1;min-width:0}
.image-item .name{font-weight:500;font-size:14px;word-break:break-all}
.image-item .meta{font-size:12px;color:var(--t2);margin-top:2px;word-break:break-all}
.sha256-row{font-family:'SF Mono',Consolas,Monaco,monospace;font-size:12px;color:var(--t2);word-break:break-all;padding:6px 10px;background:var(--bg);border-radius:4px;margin-top:6px;cursor:pointer;position:relative;line-height:1.5;transition:background-color .3s}
.sha256-row:hover{color:var(--t)}
.sha256-row .copy-hint{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--pl);opacity:0;transition:opacity .2s;font-family:-apple-system,sans-serif}
.sha256-row:hover .copy-hint{opacity:1}

/* ===== Tabs ===== */
.tabs{display:flex;border-bottom:2px solid var(--bd);margin-bottom:20px;transition:border-color .3s}
.tab{padding:10px 20px;font-size:14px;font-weight:500;color:var(--t2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s}
.tab:hover{color:var(--t)}
.tab.active{color:var(--pl);border-bottom-color:var(--p)}

.hidden{display:none!important}

/* ===== Scrollbar ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--s3);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--bd)}

/* ===== Package List ===== */
.pkg-results{max-height:300px;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--r);margin-top:8px;transition:border-color .3s}
.pkg-item{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--bd);transition:background .15s,border-color .3s;display:flex;justify-content:space-between;align-items:center}
.pkg-item:last-child{border-bottom:none}
.pkg-item:hover{background:var(--s3)}
.pkg-item.selected-pkg{background:rgba(76,175,80,.1)}
.pkg-name{font-weight:600}
.pkg-desc{color:var(--t2);font-size:12px}

/* ===== Toast ===== */
#toast-container{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 20px;border-radius:var(--r);font-size:14px;color:#fff;box-shadow:var(--sh);animation:slideIn .3s ease;min-width:280px}
.toast-success{background:var(--ok)}
.toast-error{background:var(--err)}
.toast-info{background:var(--p)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ===== Links ===== */
a{color:var(--pl);text-decoration:none}
a:hover{text-decoration:underline}

/* ===== Preset Cards ===== */
.preset-card{padding:14px 16px;background:var(--s);border:2px solid var(--bd);border-radius:var(--r);cursor:pointer;transition:all .2s}
.preset-card:hover{border-color:var(--p);background:var(--s2)}
.preset-card.active{border-color:var(--p);background:rgba(25,118,210,.1)}
.preset-card .preset-name{font-weight:600;font-size:15px;margin-bottom:4px}
.preset-card .preset-desc{font-size:12px;color:var(--t2)}
.preset-card .preset-url{font-size:11px;color:var(--t2);margin-top:6px;word-break:break-all;font-family:monospace}

/* ===== Drop Zone ===== */
.drop-zone{border:2px dashed var(--bd);border-radius:var(--r);padding:20px;text-align:center;color:var(--t2);font-size:13px;cursor:pointer;transition:border-color .2s,background .2s}
.drop-zone:hover,.drop-zone.dragover{border-color:var(--p);background:rgba(25,118,210,.05)}
.drop-zone i{font-size:28px;display:block;margin-bottom:8px;color:var(--pl)}

/* ===== Section Title ===== */
.section-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.section-title i{color:var(--pl);font-size:18px}

/* ===== Repo Card ===== */
.repo-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:14px;margin-bottom:10px;transition:background-color .3s,border-color .3s}
.repo-card .repo-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.repo-card .repo-header span{font-weight:600;font-size:14px;display:flex;align-items:center;gap:6px}

/* ===== Summary ===== */
.summary-wrap{max-height:250px;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--r);padding:10px;display:flex;flex-wrap:wrap;gap:4px;transition:border-color .3s}

/* ===== Saved Config ===== */
.saved-config-actions{display:flex;gap:4px;margin-left:auto}
.saved-config-actions .btn-ghost{padding:4px 8px;font-size:12px}
.saved-config-actions .btn-ghost:hover{color:var(--pl)}
.config-menu-list .device-item{flex-direction:column;align-items:flex-start;gap:4px}
.config-menu-list .device-item > div:first-child{display:flex;width:100%;align-items:center}
.config-menu-list .device-item > div:last-child{font-size:12px;color:var(--t2)}

/* ===== Footer ===== */
.footer{text-align:center;padding:24px max(20px,env(safe-area-inset-left)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-right));margin-top:20px;border-top:1px solid var(--bd);font-size:13px;color:var(--t2);background:var(--s);transition:background-color .3s,border-color .3s}
.footer a{color:var(--t2);margin:0 8px;transition:color .2s}
.footer a:hover{color:var(--pl)}

/* ================================================================
   移动端适配 — 三档断点：768px / 480px / 360px
   ================================================================ */

/* -------- ≤768px 平板竖屏 / 大手机 -------- */
@media(max-width:768px){
  .container{padding:16px}
  .header{padding:0 12px;height:50px}
  .header .brand{font-size:15px}
  .header .brand i{font-size:20px}
  .header-select{max-width:120px;font-size:12px;padding:5px 8px}
  .header-btn{font-size:18px;padding:6px}
  .config-menu-inner{padding:10px 14px 14px}
  .card{margin-bottom:14px}
  .card-header{padding:12px 14px;font-size:14px;gap:8px}
  .card-header i{font-size:18px}
  .card-body{padding:14px}
  .row{flex-direction:column;gap:12px}
  .config-grid{grid-template-columns:1fr}
  .preset-grid{grid-template-columns:1fr}
  .detail-grid,.detail-grid-wide{grid-template-columns:1fr 1fr !important}
  .tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{padding:8px 14px;font-size:13px;white-space:nowrap}
  .tab i{font-size:16px}
  .image-item{flex-wrap:wrap;gap:8px}
  .image-item .btn{width:100%;justify-content:center;margin-top:4px}
  .search-box input{font-size:16px;padding-left:44px}
  #toast-container{position:fixed;top:56px;bottom:auto;left:16px;right:16px;transform:none;align-items:center}
  .toast{min-width:auto;width:calc(100vw - 48px);max-width:360px;text-align:center}
  .footer{padding:16px;font-size:12px}
  .footer a{display:inline-block;margin:4px 6px}
  .alert{font-size:13px;padding:10px 12px}
  .btn{padding:8px 16px;font-size:13px}
  .btn-sm{padding:5px 12px;font-size:12px}
  #buildPanel .row{flex-direction:column;gap:8px}
  #buildPanel .col{min-width:0}
}

/* -------- ≤480px 普通手机 -------- */
@media(max-width:480px){
  .container{padding:10px}
  .header{padding:0 8px;height:46px}
  .header .brand{font-size:14px;gap:4px}
  .header .brand i{font-size:18px}
  .header-select{max-width:95px;font-size:11px}
  .header-btn{font-size:16px;padding:5px}
  .card-header{padding:10px 12px;font-size:13px}
  .card-body{padding:12px}
  .config-panel{padding:12px}
  .config-panel h3{font-size:14px;margin-bottom:10px}
  label{font-size:12px;margin-bottom:4px}
  input[type="text"],input[type="url"],input[type="number"],select,textarea{padding:8px 10px;font-size:14px}
  .device-list{max-height:240px}
  .pkg-results{max-height:220px}
  .device-item{padding:8px 10px;font-size:13px}
  .pkg-item{padding:6px 10px;font-size:12px;flex-direction:column;align-items:flex-start;gap:4px}
  .pkg-item > div:last-child{text-align:left !important;font-size:11px}
  .chip{font-size:11px;padding:3px 8px}
  .summary-wrap{max-height:200px;padding:8px;gap:3px}
  .search-box input{font-size:16px;padding-left:44px}
  .sha256-row{font-size:11px;padding:4px 8px}
  .preset-card{padding:10px 12px}
  .preset-card .preset-name{font-size:14px}
  .preset-card .preset-desc{font-size:11px}
  .progress-bar{height:5px}
  #buildPanel > .card:last-child .card-body{flex-direction:column}
  #buildBtn{width:100%;justify-content:center}
  .tab{padding:7px 10px;font-size:12px}
  .tab i{display:none}
  .toast{font-size:13px;padding:10px 16px}
}

/* -------- ≤360px 超小屏 -------- */
@media(max-width:360px){
  .container{padding:8px}
  .header{padding:0 6px;height:42px}
  .header .brand span{display:none}
  .header-select{max-width:80px}
  .card-header{padding:8px 10px;font-size:12px}
  .card-body{padding:10px}
  .detail-grid,.detail-grid-wide{grid-template-columns:1fr !important}
  .device-list{max-height:200px}
  .device-item{padding:7px 8px;font-size:12px}
  .image-item{padding:8px 10px}
  .image-item .name{font-size:13px}
  .config-panel{padding:10px}
  .preset-card{padding:8px 10px}
  .section-title{font-size:13px;margin-bottom:8px}
}
