/* ==========================================================
   综合管理系统 - 商用紧凑风格（基础布局）
   ========================================================== */
:root{
  --brand:#1f4e79; --brand-2:#2f6fb0; --brand-3:#3c86c8;
  --bg:#eef1f5; --panel:#fff; --panel-2:#f7f9fb;
  --border:#d6dce4; --border-2:#e6eaef;
  --text:#22292f; --text-2:#5a6672; --muted:#8b96a3;
  --ok:#1a9c5b; --warn:#e08600; --err:#d9433a; --info:#2f6fb0;
  --row-h:30px; --fs:13px; --fs-s:12px; --fs-xs:11px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{
  font-family:"Microsoft YaHei","微软雅黑",-apple-system,"PingFang SC","Helvetica Neue",Arial,sans-serif;
  font-size:var(--fs); color:var(--text); background:var(--bg);
}
a{color:var(--brand-2);text-decoration:none;}
a:hover{text-decoration:underline;}
table{border-collapse:collapse;border-spacing:0;}
input,select,textarea,button{font-family:inherit;font-size:var(--fs);}

/* ---------- 顶部主菜单 ---------- */
.topbar{
  height:46px;background:linear-gradient(180deg,#24557f,#1b4468);
  display:flex;align-items:stretch;color:#fff;position:fixed;top:0;left:0;right:0;z-index:100;
  box-shadow:0 1px 3px rgba(0,0,0,.18);
}
.topbar .logo{width:200px;display:flex;align-items:center;gap:8px;padding:0 14px;font-weight:700;flex:0 0 auto;}
.topbar .logo .lg-mark{width:22px;height:22px;border-radius:3px;background:#fff;color:var(--brand);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:13px;}
.topbar .logo small{display:block;font-weight:400;font-size:10px;opacity:.7;}
.topbar.mini .logo{width:48px;padding:0;justify-content:center;}
.topbar.mini .logo .lg-text{display:none;}
.main-menu{display:flex;align-items:stretch;flex:0 1 auto;overflow:hidden;}   /* 0 1 auto：剩余宽度让给倒计时槽位 */
.main-menu a{
  color:#dbe6f0;padding:0 16px;display:flex;align-items:center;font-size:13px;
  border-right:1px solid rgba(255,255,255,.08);white-space:nowrap;
}
.main-menu a:hover{background:rgba(255,255,255,.10);color:#fff;text-decoration:none;}
.main-menu a.on{background:rgba(255,255,255,.16);color:#fff;font-weight:700;box-shadow:inset 0 -3px 0 #ffb03a;}
.topbar-right{display:flex;align-items:center;gap:12px;padding:0 14px;font-size:12px;color:#dbe6f0;flex:0 0 auto;}
.topbar-right a{color:#fff;}
.topbar .btn-mini{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);color:#fff;padding:3px 8px;border-radius:3px;cursor:pointer;}
/* 顶部：SP1 星辰号启航倒计时 —— 占住菜单与账号区之间的空白地带，居中显示；窄屏自动隐藏不挤菜单 */
.sp1-slot{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:center;
  overflow:hidden;padding:0 12px;}
.sp1-cd{display:inline-flex;align-items:center;gap:6px;padding:3px 12px;border-radius:12px;
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.20);
  font-size:13px;color:#e8f0f8;white-space:nowrap;line-height:1.5;}
.sp1-cd b{font-weight:700;padding:0 2px;}
.sp1-cd .cd-d{color:#ffd28a;}      /* 天数：琥珀色 */
.sp1-cd .cd-t{color:#ffe14d;font-variant-numeric:tabular-nums;letter-spacing:.3px;}  /* 时:分:秒：黄色，等宽不抖 */
.sp1-cd.done{background:rgba(255,176,58,.22);border-color:#ffb03a;color:#fff;}
.sp1-cd.done .cd-t{color:#ffd54a;}
@media (max-width:1024px){ .sp1-cd{display:none;} }

/* ---------- 布局 ---------- */
.layout{display:flex;padding-top:46px;min-height:100vh;}
.sidebar{
  width:210px;flex:0 0 210px;background:#fff;border-right:1px solid var(--border);
  overflow:auto;transition:width .15s;position:fixed;top:46px;bottom:0;left:0;z-index:90;
}
.sidebar.mini{width:44px;flex-basis:44px;}
.sidebar .side-title{
  padding:8px 12px;font-size:12px;color:var(--text-2);background:var(--panel-2);
  border-bottom:1px solid var(--border-2);display:flex;justify-content:space-between;align-items:center;
}
.sidebar .side-title b{color:var(--brand);}
.main{flex:1 1 auto;margin-left:210px;transition:margin-left .15s;min-width:0;}
.sidebar.mini ~ .main{margin-left:44px;}
.content{padding:12px 14px 40px;}

/* ---------- 左侧菜单树 ---------- */
.side-menu{list-style:none;margin:0;padding:4px 0;}
.side-menu ul{list-style:none;margin:0;padding:0;display:none;}
.side-menu li.open>ul{display:block;}
.side-menu a.node{
  display:flex;align-items:center;height:var(--row-h);line-height:var(--row-h);
  padding:0 10px 0 12px;color:var(--text);border-left:3px solid transparent;white-space:nowrap;
}
.side-menu a.node:hover{background:#f0f5fa;text-decoration:none;}
.side-menu li.lv2>a.node{padding-left:22px;}
.side-menu li.lv3>a.node{padding-left:34px;font-size:12.5px;}
.side-menu li.lv4>a.node{padding-left:46px;font-size:12px;}
.side-menu li.lv5>a.node{padding-left:56px;font-size:12px;}
.side-menu li.active>a.node{background:#e7f0f9;color:var(--brand);font-weight:700;border-left-color:var(--brand-2);}
.side-menu .arrow{width:14px;flex:0 0 14px;text-align:center;color:var(--muted);font-size:9px;transition:transform .15s;}
.side-menu li.open>a.node .arrow{transform:rotate(90deg);}
.side-menu .no{color:var(--muted);font-size:11px;margin-right:6px;}
.side-menu .txt{overflow:hidden;text-overflow:ellipsis;}
.sidebar.mini .side-menu .txt,
.sidebar.mini .side-menu .no,
.sidebar.mini .side-menu .arrow,
.sidebar.mini .side-title span{display:none;}
.sidebar.mini .side-menu a.node{justify-content:center;padding:0;}
.sidebar.mini .side-menu ul{position:absolute;left:44px;background:#fff;border:1px solid var(--border);min-width:150px;box-shadow:0 4px 12px rgba(0,0,0,.15);}
.side-toggle{
  height:26px;display:flex;align-items:center;justify-content:center;color:var(--muted);
  background:var(--panel-2);border-top:1px solid var(--border-2);cursor:pointer;font-size:12px;
}
.side-toggle:hover{color:var(--brand);}

/* ---------- 收起 / 展开侧栏：按钮就放在侧栏标题行（原来的「菜单」位置） ---------- */
.side-title .side-toggle{
  flex:0 0 auto;height:auto;border:0;background:none;padding:2px 2px 2px 6px;gap:4px;
  font-size:12px;font-weight:700;color:var(--brand);cursor:pointer;
}
.side-title .side-toggle:hover{color:var(--brand-2);text-decoration:underline;}
.side-toggle .st-chev{font-style:normal;font-size:11px;display:inline-block;}
.sidebar.mini .side-title .side-toggle{width:100%;padding:2px 0;justify-content:center;}
.sidebar.mini .side-toggle .st-txt{display:none;}
/* 收起后：菜单项只显示名称首字（.ini） */
.side-menu .ini{display:none;flex:0 0 22px;width:22px;text-align:center;font-weight:700;color:var(--text-2);}
.sidebar.mini .side-menu .ini{display:block;}
.sidebar.mini .side-menu li.open>ul{display:none;}
/* 收起后：鼠标移到侧栏上临时展开成完整宽度（浮在内容上方，主区不动，避免闪烁跳动） */
.sidebar.mini:hover{
  width:210px;flex-basis:210px;overflow:auto;box-shadow:2px 0 10px rgba(0,0,0,.12);
}
.sidebar.mini:hover .side-menu .ini{display:none;}
.sidebar.mini:hover .side-menu .txt,
.sidebar.mini:hover .side-menu .no,
.sidebar.mini:hover .side-menu .arrow{display:block;}
.sidebar.mini:hover .side-title span{display:block;}
.sidebar.mini:hover .side-menu a.node{justify-content:flex-start;padding:0 10px 0 12px;}
.sidebar.mini:hover .side-menu ul{position:static;border:0;box-shadow:none;min-width:0;}
.sidebar.mini:hover .side-menu li.open>ul{display:block;}
.sidebar.mini:hover .side-toggle .st-txt{display:block;}

/* ---------- 面包屑 / 页头 ---------- */
.crumb{height:30px;display:flex;align-items:center;gap:6px;padding:0 14px;background:#fff;border-bottom:1px solid var(--border-2);font-size:12px;color:var(--text-2);}
.crumb .home{color:var(--brand-2);}
.crumb i{color:var(--muted);font-style:normal;}
.crumb .cur{color:var(--text);font-weight:700;}
.page-head{display:flex;align-items:center;justify-content:space-between;padding:10px 0 8px;flex-wrap:wrap;gap:8px;}
.page-head h1{margin:0;font-size:16px;font-weight:700;color:var(--brand);}
.page-head .ops{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}

/* ---------- 面板 / 工具条 ---------- */
.panel{background:#fff;border:1px solid var(--border);border-radius:3px;}
.panel+.panel{margin-top:10px;}
.panel-head{padding:7px 10px;border-bottom:1px solid var(--border-2);background:var(--panel-2);font-weight:700;font-size:13px;color:var(--brand);display:flex;justify-content:space-between;align-items:center;}
.panel-body{padding:10px;}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--border-2);background:var(--panel-2);}
.toolbar .fi{display:flex;align-items:center;gap:4px;}
.toolbar label{color:var(--text-2);font-size:12px;}

/* ---------- 3.1 演示图：飞船舰舱示意图 ---------- */
.ship-stage{background:#070c18;border:1px solid #d6dce4;border-radius:4px;padding:8px;}
.ship-stage svg a{cursor:pointer;}
.ship-stage svg a:hover rect:first-of-type{stroke:#ffb03a;}
.ship-legend{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding-top:8px;font-size:12px;color:var(--text-2);}
.ship-legend span{display:inline-flex;align-items:center;gap:5px;}
.ship-legend i{width:13px;height:13px;border-radius:3px;border:1px solid var(--border);display:inline-block;}
.ship-legend i.seat{width:11px;height:11px;border-radius:2px;background:#8fd0ff;border-color:#7fc0ff;}

/* ---------- 3.1 演示图：舰舱卡片（深色太空风，参考样式） ---------- */
.cabin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:12px;}
@media (max-width:900px){.cabin-grid{grid-template-columns:1fr;}}
a.cabin-card{display:flex;gap:14px;padding:14px;border:1px solid #223950;border-radius:10px;
  background:linear-gradient(155deg,#16273a 0%,#0f1b27 55%,#0b131c 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);color:#d7e5f2;text-decoration:none;
  transition:border-color .15s,box-shadow .15s,transform .15s;}
a.cabin-card:hover{text-decoration:none;border-color:#3f739e;color:#e8f2fb;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 0 0 1px rgba(93,169,231,.22),0 8px 20px rgba(6,14,24,.35);
  transform:translateY(-1px);}
a.cabin-card.is-empty{opacity:.62;border-style:dashed;}
a.cabin-card.is-extra{border-color:#8a5a17;}
a.cabin-card.is-active{border-color:#7fc0ff;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 0 0 2px rgba(127,192,255,.35);}
a.cabin-card.is-active .cc-badge{background:rgba(127,192,255,.28);border-color:#a8dcff;color:#eaf6ff;}

/* 左侧星球图标 */
.cabin-orb{flex:0 0 68px;width:68px;height:68px;border-radius:50%;position:relative;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;letter-spacing:.4px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7);
  background:radial-gradient(circle at 34% 28%,hsl(var(--h,205) 80% 62%),hsl(var(--h,205) 74% 34%) 58%,hsl(var(--h,205) 72% 14%) 100%);
  box-shadow:inset -5px -7px 14px rgba(0,0,0,.55),inset 5px 5px 12px rgba(255,255,255,.22);}
.cabin-orb::after{content:"";position:absolute;inset:5px;border-radius:50%;opacity:.85;pointer-events:none;
  background-image:
    radial-gradient(circle,rgba(255,255,255,.9) 40%,transparent 42%),
    radial-gradient(circle,rgba(255,255,255,.75) 40%,transparent 42%),
    radial-gradient(circle,rgba(255,255,255,.6) 40%,transparent 42%),
    radial-gradient(circle,rgba(255,255,255,.8) 40%,transparent 42%),
    radial-gradient(circle,rgba(255,255,255,.55) 40%,transparent 42%);
  background-size:5px 5px,3px 3px,4px 4px,3px 3px,2px 2px;background-repeat:no-repeat;
  background-position:16% 72%,64% 20%,36% 46%,76% 64%,50% 84%;}
.cc-main{flex:1 1 auto;min-width:0;}
.cc-top{display:flex;align-items:center;gap:8px;}
.cc-badge{flex:0 0 auto;font-size:11px;font-weight:700;color:#9ccdf2;background:rgba(60,134,200,.16);
  border:1px solid rgba(120,190,240,.35);border-radius:3px;padding:1px 6px;}
.cc-name{font-size:13px;color:#cfe0ee;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.cc-head{display:flex;align-items:flex-start;gap:10px;margin-top:8px;}
.cc-head-l{flex:1 1 auto;min-width:0;}
.cc-sub{font-size:19px;font-weight:700;line-height:1.25;color:#eaf3fb;}
.cc-tag{display:inline-block;margin-top:6px;font-size:11px;padding:1px 7px;border-radius:3px;
  color:#ffd79a;background:rgba(224,134,0,.18);border:1px solid rgba(255,176,58,.45);}
.cc-seats{flex:0 0 auto;display:flex;gap:8px;padding-top:2px;}
.cc-seats i{width:26px;height:26px;border-radius:6px;display:block;
  background:rgba(255,255,255,.05);border:1px solid #2b3f52;}
.cc-seats i.on{background:linear-gradient(180deg,#6cc0f2,#2f7fbd);border-color:#7fc0ff;
  box-shadow:0 0 10px rgba(99,184,238,.45);}
/* 席位格：空位「+」可申请 / 头像已占用 / 角标「舱·管」待审 */
.cc-seats .seat-slot{position:relative;width:26px;height:26px;flex:0 0 26px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;overflow:hidden;box-sizing:border-box;
  background:rgba(255,255,255,.05);border:1px dashed #33465f;color:#7d90a4;font-size:15px;line-height:1;}
.cc-seats .seat-slot.is-add{cursor:pointer;border-color:#4a7ea8;color:#8fd0ff;}
.cc-seats .seat-slot.is-add:hover{background:rgba(93,169,231,.18);border-color:#8fd0ff;color:#cfe6fb;
  box-shadow:0 0 8px rgba(93,169,231,.35);}
.cc-seats .seat-slot.is-off{opacity:.45;cursor:not-allowed;}
.cc-seats .seat-slot.is-used{border-style:solid;border-color:#7fc0ff;background:rgba(99,184,238,.12);}
.cc-seats .seat-slot.is-apply{border-style:solid;border-color:#ffb03a;background:rgba(224,134,0,.12);}
.cc-seats .seat-slot em{position:absolute;right:0;top:0;min-width:13px;height:13px;line-height:13px;
  padding:0 2px;border-radius:0 0 0 5px;background:#ffb03a;color:#1a1206;font-size:9px;
  font-style:normal;font-weight:700;text-align:center;}
/* 头像由 avatar_html() 内联样式生成，这里用 !important 覆盖成填满方格 */
.cc-seats .seat-slot img,.cc-seats .seat-slot>span{
  width:100%!important;height:100%!important;border-radius:0!important;border:none!important;
  box-shadow:none!important;flex:0 0 auto!important;display:flex!important;align-items:center;justify-content:center;}
.cc-status{margin-top:9px;font-size:12px;color:#93a9bd;}
.cc-status b{color:#8fd0ff;font-weight:600;}
.cc-bar{height:5px;border-radius:3px;background:rgba(255,255,255,.07);overflow:hidden;margin-top:9px;}
.cc-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#3c86c8,#7fd0ff);}
.cc-meta{margin-top:8px;font-size:12px;color:#9fb3c6;display:flex;justify-content:space-between;gap:10px;}
.cc-meta b{color:#fff;font-weight:700;}

/* 右侧竖排统计（3.1 演示图右栏） */
.stat-col{display:flex;flex-direction:column;gap:8px;}
.stat-col .stat{flex:0 0 auto;}

/* ---------- 3.1 演示图：整页深色主题（与舰舱卡片同一套太空配色） ---------- */
.ship-theme{
  --brand:#8fd0ff; --brand-2:#5da9e7; --brand-3:#7fc0ff;
  --bg:#0b131c; --panel:#111e2b; --panel-2:#16273a;
  --border:#223950; --border-2:#1b2f42;
  --text:#dbe7f3; --text-2:#9fb3c6; --muted:#7d90a4;
  --ok:#3ec98a; --warn:#ffb03a; --err:#ff7a6e; --info:#5da9e7;
  color:var(--text);
  padding:12px;border-radius:8px;margin-bottom:12px;
  background:linear-gradient(180deg,#0d1721 0%,#0a121a 100%);
  border:1px solid #1b2f42;box-shadow:0 2px 10px rgba(6,14,24,.35);
}
.ship-theme .page-head h1{color:#bfe0fb;}
.ship-theme .panel{background:linear-gradient(180deg,#111e2b 0%,#0f1a25 100%);border-color:#223950;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);}
.ship-theme .panel-head{background:linear-gradient(180deg,#16273a,#132235);border-bottom-color:#223950;color:#9ccdf2;}
.ship-theme .panel-head .muted{color:#7d90a4;}
.ship-theme .stat{background:linear-gradient(160deg,#16273a 0%,#0f1b27 100%);border-color:#223950;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);}
.ship-theme .stat .lab{color:#93a9bd;}
.ship-theme .stat .val{color:#eaf3fb;}
.ship-theme .stat .sub{color:#7d90a4;}
.ship-theme .tabs{background:#132235;border-bottom-color:#223950;}
.ship-theme .tabs a{color:#93a9bd;}
.ship-theme .tabs a.on{background:#16273a;border-color:#223950;border-bottom-color:#16273a;color:#9ccdf2;}
.ship-theme .tabs a:hover{color:#cfe6fb;}
.ship-theme .inp,.ship-theme select.inp,.ship-theme textarea.inp{background:#0e1a26;border-color:#2b4258;color:#dbe7f3;}
.ship-theme .inp::placeholder{color:#607488;}
.ship-theme .inp:focus,.ship-theme select.inp:focus,.ship-theme textarea.inp:focus{
  border-color:#5da9e7;box-shadow:0 0 0 2px rgba(93,169,231,.22);}
.ship-theme select.inp option{background:#0e1a26;color:#dbe7f3;}
.ship-theme .btn{background:#18293a;border-color:#2b4258;color:#cfe0ee;}
.ship-theme .btn:hover{background:#1f3448;border-color:#3f739e;color:#eaf3fb;text-decoration:none;}
.ship-theme .btn-primary{background:#2f6fb0;border-color:#3c86c8;color:#fff;}
.ship-theme .btn-primary:hover{background:#3c86c8;border-color:#5da9e7;color:#fff;}
.ship-theme .btn-link{color:#8fd0ff;}
.ship-theme .btn-link.danger{color:#ff8f84;}
.ship-theme table.grid{background:transparent;color:#dbe7f3;}
.ship-theme table.grid th{background:#16273a;color:#9fb3c6;border-bottom-color:#223950;}
.ship-theme table.grid td{border-bottom-color:#1b2f42;}
.ship-theme table.grid tbody tr:nth-child(even){background:rgba(255,255,255,.025);}
.ship-theme table.grid tbody tr:hover{background:rgba(93,169,231,.10);}
.ship-theme .form-actions{background:#132235;border-top-color:#223950;}
.ship-theme .empty-box{color:#7d90a4;}
.ship-theme .ship-legend{color:#93a9bd;}
.ship-theme .ship-legend i{background:#0e1a26;border-color:#2b4258;}
.ship-theme .cc-head-row{border-bottom-color:#223950;}
.ship-theme .cc-head-row b{color:#9ccdf2;}
.ship-theme .ccform label{color:#9fb3c6;}
.ship-theme .cc-pick{border-color:#2b4258;background:rgba(255,255,255,.025);}
.ship-theme .cc-pick-t{color:#9ccdf2;}

/* 右栏「舱位管理」页签里的紧凑表单 */
.ccform .row{margin-bottom:8px;}
.ccform label{display:block;font-size:12px;color:var(--text-2);margin-bottom:3px;}
.ccform label.req::after{content:"*";color:var(--err);padding-left:3px;}
.ccform input.inp,.ccform select.inp{width:100%;}
.cc-pick{padding:18px 14px;text-align:center;border:1px dashed var(--border);border-radius:3px;}
.cc-pick-t{font-size:13px;font-weight:700;color:var(--text-2);margin-bottom:6px;}
.cc-head-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;
  padding-bottom:6px;border-bottom:1px solid var(--border-2);}
.cc-head-row b{font-size:13px;color:var(--brand);}
