/* ============================================================
   狮子冒险 · 内部工作台
   配色取自品牌插画：湖蓝 #2B82AC / 米砂 #DFCBBC / 暖黄 #EDB01D
                   陶土红 #CD6143 / 墨黑 #21232A
   UI 风格：macOS —— 柔和阴影、大圆角、克制配色、细腻过渡
   ============================================================ */
:root{
  --blue:#2B82AC;  --blue-d:#1F6488;  --blue-l:#EAF4F9;  --blue-m:#8FC2D9;
  --sand:#DFCBBC;  --sand-l:#F6F1EC;  --sand-d:#C9B3A2;
  --gold:#EDB01D;  --gold-l:#FDF6E3;
  --clay:#CD6143;  --clay-l:#FBEDE8;
  --ink:#21232A;   --ink-2:#4A4E58;   --ink-3:#8A8F99;
  --line:#E8E2DC;  --line-2:#F2EEE9;
  --bg:#F7F5F2;    --card:#FFFFFF;
  --ok:#2F8F62;    --warn:#D98324;    --danger:#C4533F;
  --r-s:8px; --r-m:12px; --r-l:16px; --r-xl:22px;
  --sh-1:0 1px 2px rgba(33,35,42,.05), 0 1px 1px rgba(33,35,42,.04);
  --sh-2:0 4px 14px rgba(33,35,42,.07), 0 1px 3px rgba(33,35,42,.05);
  --sh-3:0 14px 40px rgba(33,35,42,.14), 0 2px 8px rgba(33,35,42,.06);
  --font:-apple-system, BlinkMacSystemFont, "SF Pro SC", "SF Pro Text", "PingFang SC",
         "Microsoft YaHei", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 var(--font);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.hidden{display:none !important}
.grow{flex:1}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#D6D0C9;border-radius:6px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#BFB7AE;background-clip:content-box;border:3px solid transparent}
::-webkit-scrollbar-track{background:transparent}

/* ---------------- 按钮 ---------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:7px 14px;border:1px solid var(--line);background:#fff;border-radius:10px;
  cursor:pointer;font:inherit;font-size:13.5px;color:var(--ink);
  box-shadow:var(--sh-1);transition:all .16s cubic-bezier(.2,.7,.3,1);white-space:nowrap}
.btn:hover{border-color:var(--blue-m);color:var(--blue-d);transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.985)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.btn.primary:hover{background:var(--blue-d);border-color:var(--blue-d);color:#fff}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#4A3606;font-weight:600}
.btn.ghost{background:transparent;box-shadow:none;border-color:transparent;color:var(--ink-2)}
.btn.ghost:hover{background:var(--sand-l);color:var(--ink);border-color:transparent}
.btn.sm{padding:4px 10px;font-size:12.5px;border-radius:8px}
.btn.block{width:100%;padding:11px;font-size:14.5px;border-radius:12px}
.btn.danger:hover{border-color:var(--danger);color:var(--danger)}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}

/* ---------------- 登录 ---------------- */
.login-wrap{position:relative;min-height:100vh;display:flex;align-items:center;
  justify-content:flex-end;padding:24px clamp(28px,7vw,140px);overflow:hidden;background:#0E1A24}
.login-box{width:370px;background:rgba(255,255,255,.86);backdrop-filter:saturate(180%) blur(22px);
  border:1px solid rgba(255,255,255,.9);border-radius:var(--r-xl);padding:32px 28px 26px;
  box-shadow:var(--sh-3);display:flex;flex-direction:column;gap:12px;text-align:center}
.logo-mark{display:flex;justify-content:center;margin-bottom:2px}
.login-box h1{margin:0;font-size:24px;font-weight:700;letter-spacing:2px;color:var(--ink)}
.login-box .sub{margin:0 0 10px;color:var(--ink-3);font-size:12.5px;letter-spacing:.2px}
.login-box label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--ink-3);text-align:left}
.login-box input{padding:11px 13px;border:1px solid var(--line);border-radius:11px;font:inherit;
  background:#fff;transition:all .16s}
.login-box input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-l)}
.err{color:var(--danger);font-size:12.5px;min-height:18px;text-align:left;line-height:1.5}
.pw-wrap{position:relative;display:block}
.pw-wrap input{width:100%}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:transparent;
  cursor:pointer;font-size:15px;opacity:.5;padding:4px 6px;border-radius:6px}
.pw-eye:hover{opacity:1;background:var(--sand-l)}
label.keep{flex-direction:row!important;align-items:center!important;gap:7px;font-size:12px;
  color:var(--ink-3);cursor:pointer;margin-top:-4px}
label.keep input[type=checkbox]{width:15px!important;height:15px;padding:0!important;margin:0;
  accent-color:var(--blue);flex:0 0 auto}

/* ---------------- 应用外框：顶部导航 ---------------- */
.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}
.topbar{display:flex;align-items:center;gap:12px;padding:8px 18px;flex-wrap:nowrap;
  background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--line);z-index:20;overflow-x:auto;overflow-y:hidden}
.topbar::-webkit-scrollbar{height:0}
.topbar .brand,.topbar .deptswitch,.topbar #nav,.topbar .userbox,.topbar .themebox{flex:0 0 auto}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:1px;
  padding-right:14px;border-right:1px solid var(--line-2)}
#nav{display:flex;gap:4px;background:var(--sand-l);padding:3px;border-radius:12px}
#nav button{display:flex;align-items:center;gap:7px;padding:7px 14px;border:none;background:transparent;
  border-radius:9px;cursor:pointer;font:inherit;font-size:13.5px;color:var(--ink-2);
  transition:all .15s cubic-bezier(.2,.7,.3,1);white-space:nowrap}
#nav button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;opacity:.8}
#nav button:hover{background:rgba(255,255,255,.7);color:var(--ink)}
#nav button.on{background:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(43,130,172,.3)}
.userbox{display:flex;align-items:center;gap:6px;margin-left:auto;padding-left:12px;
  border-left:1px solid var(--line-2);white-space:nowrap}
.userbox .who{font-size:12px;color:var(--ink-3);white-space:nowrap}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.viewbody{flex:1;overflow:auto;padding:16px 20px 34px}
.viewsub{font-size:12.5px;color:var(--ink-3);white-space:nowrap;max-width:330px;
  overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ---------------- 排期页：左侧线路列表 + 右侧排期表 ---------------- */
.sched{display:grid;grid-template-columns:330px 1fr;gap:14px;height:100%;min-height:0}
@media(max-width:1100px){.sched{grid-template-columns:1fr;height:auto}}
.sched-side{display:flex;flex-direction:column;gap:12px;min-height:0;align-content:start}
.side-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);overflow:hidden;display:flex;flex-direction:column;min-height:0;
  flex:0 0 auto}                       /* 按内容撑高，绝不被压缩裁切 */
/* 线路列表那张卡片可以伸缩（内部滚动），月份卡片永远完整显示 */
.sched-side > .side-card:last-child{flex:1 1 auto;min-height:140px}
.side-card > .card-h{padding:10px 14px}
.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:10px;
  grid-auto-rows:minmax(38px,auto)}
.mbtn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 0;font-size:12px;
  cursor:pointer;text-align:center;line-height:1.25;transition:all .14s;color:var(--ink-2)}
.mbtn small{display:block;font-size:10px;color:var(--ink-3)}
.mbtn:hover{border-color:var(--blue-m);color:var(--blue-d)}
.mbtn.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:700}
.mbtn.on small{color:#CFE6F0}
.mbtn.all{grid-column:span 7;margin-top:2px}
.alist{overflow:auto;padding:8px;flex:1 1 auto;min-height:80px;max-height:none}
.acard{display:grid;grid-template-columns:1fr auto;gap:5px;padding:8px 9px;border-radius:10px;
  margin-bottom:6px;border:1px solid var(--line);border-left:4px solid var(--sand);
  background:#fff;transition:all .14s}
.acard:hover{border-color:var(--blue-m);box-shadow:var(--sh-1)}
.acard input[type=text]{width:100%;font-weight:600;border-color:transparent;background:transparent;padding:2px 4px}
.acard input[type=text]:hover,.acard input[type=text]:focus{border-color:var(--line);background:#fff}
.acard .daterow{grid-column:1/3;display:flex;align-items:center;gap:5px}
.acard .daterow input{flex:1;min-width:0;padding:3px 6px;font-size:12px}
.acard .meta{grid-column:1/3;display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3)}
.acard .meta .exact{color:var(--blue-d);font-weight:600;white-space:nowrap}
.acard select{padding:3px 6px;font-size:12px;border-radius:7px;border-color:var(--line)}
.acard .del{border:none;background:transparent;color:var(--ink-3);font-size:16px;padding:0 5px;cursor:pointer}
.acard .del:hover{color:var(--danger)}
.mhead{margin:6px 2px 5px;font-size:12px;color:var(--blue-d);font-weight:700;display:flex;align-items:center;gap:7px}
.mhead:after{content:'';flex:1;height:1px;background:var(--line-2)}
/* ---------------- 通用卡片 / 表单 ---------------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);overflow:hidden}
.card-h{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-2)}
.card-h h3{margin:0;font-size:14.5px;font-weight:600}
.card-h .hint{font-size:12px;color:var(--ink-3)}
.pad{padding:16px}
select,input[type=text],input[type=number],input[type=date],input[type=password],textarea{
  font:inherit;color:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:10px;
  background:#fff;outline:none;transition:all .15s}
select:focus,input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-l)}
textarea{resize:vertical;min-height:70px;line-height:1.55}
label.f{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--ink-3)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.full{grid-column:1/-1}
@media(max-width:1100px){.grid4{grid-template-columns:repeat(2,1fr)} .grid3{grid-template-columns:1fr 1fr}}
@media(max-width:820px){.grid2,.grid3,.grid4{grid-template-columns:1fr}}

/* 数据卡片（Apple 风格的数字块） */
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);padding:15px 17px;
  box-shadow:var(--sh-1);position:relative;overflow:hidden}
.stat:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent,var(--blue))}
.stat .lb{font-size:12.5px;color:var(--ink-3);letter-spacing:.2px}
.stat .val{font-size:25px;font-weight:700;margin-top:5px;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.stat .val small{font-size:13px;font-weight:500;color:var(--ink-3);margin-left:3px}
.stat .foot{font-size:12px;color:var(--ink-3);margin-top:3px}
.stat.in{--accent:var(--clay)}
.stat.out{--accent:var(--gold)}
.stat.net{--accent:var(--blue)}
.stat.act{--accent:var(--sand-d)}

/* 表格 */
table.tb{width:100%;border-collapse:separate;border-spacing:0}
table.tb th,table.tb td{padding:10px 12px;text-align:left;font-size:13px;
  border-bottom:1px solid var(--line-2);vertical-align:middle}
table.tb th{background:#FCFAF8;color:var(--ink-3);font-weight:600;font-size:12.5px;white-space:nowrap}
table.tb tbody tr{transition:background .12s}
table.tb tbody tr:hover{background:var(--sand-l)}
table.tb tbody tr:last-child td{border-bottom:none}
.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.pos{color:var(--ok);font-weight:600}
.neg{color:var(--clay);font-weight:600}

.tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;
  font-size:11.5px;font-weight:600;white-space:nowrap}
.tag.blue{background:var(--blue-l);color:var(--blue-d)}
.tag.sand{background:var(--sand-l);color:#8A6E58}
.tag.gold{background:var(--gold-l);color:#8A6206}
.tag.clay{background:var(--clay-l);color:#A2452C}
.tag.grey{background:#F1EFED;color:var(--ink-3)}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.empty{color:var(--ink-3);text-align:center;padding:50px 16px;font-size:13.5px;line-height:2}
.empty svg{width:44px;height:44px;stroke:var(--sand-d);fill:none;stroke-width:1.4;opacity:.7}

/* ---------------- 排期（31 日栏） ---------------- */
.sched-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);overflow:hidden;display:flex;flex-direction:column;height:100%}
.sched-bar{display:flex;align-items:center;gap:10px;padding:11px 15px;border-bottom:1px solid var(--line-2);
  flex-wrap:wrap;background:#FCFAF8}
.sched-scroll{flex:1;overflow:auto}
table.dtable{table-layout:fixed;border-collapse:separate;border-spacing:0}
table.dtable th,table.dtable td{padding:0;border-bottom:1px solid var(--line-2)}
table.dtable thead th{position:sticky;top:0;z-index:8;background:#FCFAF8;height:32px}
table.dtable th.fday{font-size:10.5px;color:var(--blue-d);font-weight:600;line-height:32px;
  white-space:nowrap;text-align:center;overflow:hidden}
table.dtable th.fday.we{color:var(--ink-3)}
table.dtable th.finfo,table.dtable td.finfo{position:sticky;left:0;z-index:7;background:#fff;
  text-align:left;padding:7px 11px;border-right:1px solid var(--line);
  box-shadow:2px 0 6px rgba(33,35,42,.04)}
table.dtable thead th.finfo{z-index:9;font-size:11.5px;color:var(--ink-3);font-weight:600}
table.dtable td.finfo b{display:block;font-size:13px;font-weight:700;color:var(--blue-d)}
table.dtable td.finfo span{display:block;font-size:11px;color:var(--ink-3)}
table.dtable td.fcell{height:26px;position:relative;background:#fff}
table.dtable td.fcell.we{background:#FAF7F3}
table.dtable tr:hover td.fcell.we{background:#F5F1EC}
table.dtable tr:hover td.fcell{background:#FDFBF9}
table.dtable td.today{box-shadow:inset 0 0 0 1.5px var(--gold)}
/* 承载活动条的日期单元格：必须是定位上下文，且高度随行高撑开，
   否则多条同日期的活动会被挤进 26px 里叠成一块 */
.bars-host{position:relative;padding:0!important;height:100%;vertical-align:top;
  --barh:22px}
.bars{position:absolute;left:0;top:0;width:100%;height:100%;min-height:100%;pointer-events:none}
/* 行高由 JS 按条数算好写到 tr 上，这里确保单元格跟着长高 */
tr[style*="height"] .bars-host{height:inherit}
/* 多行活动条之间加一条极细的分隔线，叠放时也能一眼分清 */
.fbar + .fbar{margin-top:0}
.fbar{outline:0.5px solid rgba(255,255,255,.55);outline-offset:-1px}
.fbar{position:absolute;height:22px;line-height:22px;border-radius:7px;text-align:center;
  padding:0 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;
  font-size:11.5px;font-weight:600;box-shadow:0 1px 3px rgba(33,35,42,.16);
  pointer-events:auto;z-index:3;transition:transform .12s, box-shadow .12s}
.fbar:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(33,35,42,.22);z-index:6}
.fbar.two-line{height:36px;line-height:16px;padding:2px 6px;white-space:normal;
  display:flex;align-items:center;justify-content:center;overflow:visible}
.fbar.two-line b{display:block;white-space:normal;word-break:break-all}
.sched-legend{display:flex;gap:14px;flex-wrap:wrap;padding:10px 15px;border-top:1px solid var(--line-2);
  font-size:12px;color:var(--ink-3);align-items:center;background:#FCFAF8}
.sched-legend i{width:11px;height:11px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:-1px}

/* ---------------- 看板 ---------------- */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}
@media(max-width:1080px){.kanban{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.kanban{grid-template-columns:1fr}}
.col{background:#FCFAF8;border:1px solid var(--line);border-radius:var(--r-l);display:flex;flex-direction:column;min-height:160px}
.col-h{padding:11px 14px;border-bottom:1px solid var(--line-2);font-weight:700;font-size:13.5px;
  display:flex;justify-content:space-between;align-items:center}
.col-h .cnt{background:#fff;border:1px solid var(--line);border-radius:20px;padding:0 9px;font-size:11.5px;font-weight:600;color:var(--ink-3)}
.col-b{padding:10px;display:flex;flex-direction:column;gap:9px}
.tk{background:#fff;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:12px;
  padding:11px 12px;cursor:pointer;box-shadow:var(--sh-1);transition:all .15s cubic-bezier(.2,.7,.3,1)}
.tk:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--blue-m)}
.tk h4{margin:0 0 6px;font-size:13.5px;font-weight:600}
.tk .meta{font-size:11.5px;color:var(--ink-3);display:flex;gap:9px;flex-wrap:wrap}
.tk .move{display:flex;gap:6px;margin-top:9px}

/* ---------------- 弹窗 ---------------- */
.modal{position:fixed;inset:0;background:rgba(33,35,42,.34);backdrop-filter:blur(3px);
  display:grid;place-items:center;z-index:100;padding:18px;animation:fade .16s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal-box{background:#fff;border-radius:var(--r-xl);width:min(700px,100%);max-height:90vh;
  display:flex;flex-direction:column;box-shadow:var(--sh-3);animation:pop .2s cubic-bezier(.2,.8,.3,1)}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.modal-head{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.modal-head h3{margin:0;font-size:16px;font-weight:700}
.xbtn{margin-left:auto;border:none;background:var(--sand-l);width:28px;height:28px;border-radius:50%;
  cursor:pointer;color:var(--ink-2);font-size:13px;line-height:1}
.xbtn:hover{background:var(--sand)}
.modal-body{padding:18px 20px;overflow:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 20px;border-top:1px solid var(--line-2)}
.checks{display:flex;gap:14px;flex-wrap:wrap;font-size:13px}
.checks label{display:flex;align-items:center;gap:6px;cursor:pointer}

/* ---------------- 提示 ---------------- */
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:rgba(33,35,42,.94);
  color:#fff;padding:10px 18px;border-radius:22px;font-size:13px;z-index:200;
  box-shadow:0 12px 30px rgba(33,35,42,.3);animation:slide .2s cubic-bezier(.2,.8,.3,1)}
@keyframes slide{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
.toast.ok{background:rgba(47,143,98,.96)}
.toast.bad{background:rgba(196,83,63,.96)}

/* ============================================================
   配色主题（一键切换，选择会记住）
   ① 原野（默认，取自品牌插画）  ② 落日  ③ 森海
   ============================================================ */
html[data-theme="sunset"]{
  --blue:#C0562F; --blue-d:#9C3F1F; --blue-l:#FBEDE4; --blue-m:#E0A184;
  --sand:#EBD5BF; --sand-l:#FBF4EC; --sand-d:#D2B79C;
  --gold:#E8A33D; --gold-l:#FDF3E2;
  --clay:#A83A54; --clay-l:#FAEBEF;
  --ink:#2A2020;  --ink-2:#544542;  --ink-3:#8F8079;
  --line:#ECDFD2; --line-2:#F6EDE3;
  --bg:#FBF6F0;   --card:#FFFFFF;
  --ok:#3C8A5F;   --warn:#C97A22;   --danger:#B23A46;
}
html[data-theme="forest"]{
  --blue:#2E6F5E; --blue-d:#1F5347; --blue-l:#E8F3EE; --blue-m:#8CC0AC;
  --sand:#CBD8C6; --sand-l:#F1F6EF; --sand-d:#A9BCA3;
  --gold:#D9A521; --gold-l:#FBF4E0;
  --clay:#3F6FA8; --clay-l:#EAF1F9;
  --ink:#1B2621;  --ink-2:#44534C;  --ink-3:#7E8E86;
  --line:#DDE6DD; --line-2:#EEF3EE;
  --bg:#F4F8F4;   --card:#FFFFFF;
  --ok:#2F8F62;   --warn:#C08A1E;   --danger:#B5483F;
}
/* 主题切换按钮 */
.themebox{display:flex;gap:4px;align-items:center;padding-left:12px;border-left:1px solid var(--line-2)}
.themebtn{width:24px;height:24px;border-radius:50%;border:2px solid rgba(255,255,255,.9);
  cursor:pointer;box-shadow:0 1px 4px rgba(33,35,42,.22);transition:transform .15s, box-shadow .15s;padding:0}
.themebtn:hover{transform:scale(1.14)}
.themebtn.on{box-shadow:0 0 0 2px var(--blue),0 1px 4px rgba(33,35,42,.22)}
.themebtn[data-theme="wild"]{background:linear-gradient(135deg,#2B82AC 0 50%,#EDB01D 50% 100%)}
.themebtn[data-theme="sunset"]{background:linear-gradient(135deg,#C0562F 0 50%,#E8A33D 50% 100%)}
.themebtn[data-theme="forest"]{background:linear-gradient(135deg,#2E6F5E 0 50%,#CBD8C6 50% 100%)}

/* ---------------- 推广日历 ---------------- */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line-2);padding:1px}
.cal-h{padding:9px 6px;text-align:center;font-size:12.5px;font-weight:700;background:#FCFAF8;color:var(--ink-2)}
.cal-h.we{color:var(--clay)}
.cal-d{background:#fff;min-height:118px;padding:5px 6px;display:flex;flex-direction:column;gap:4px;
  transition:background .14s;cursor:pointer}
.cal-d:hover{background:#FDFBF8}
.cal-d.out{background:#F7F4F1;cursor:default}
.cal-d.we{background:#FAF7F3}
.cal-d.today{box-shadow:inset 0 0 0 2px var(--gold)}
.cal-num{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:1px}
.cal-d.today .cal-num{color:var(--gold)}
@media(max-width:900px){.cal-d{min-height:88px}}
.cal-ev{border-radius:7px;padding:3px 7px;font-size:11.5px;color:#fff;line-height:1.35;cursor:pointer;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 1px 2px rgba(33,35,42,.15)}
.cal-ev:hover{filter:brightness(1.08)}
/* 自营 / 地接 切换 */
.kindtabs{display:flex;gap:3px;background:var(--sand-l);padding:3px;border-radius:10px}
.kindbtn{border:none;background:transparent;padding:6px 16px;border-radius:8px;cursor:pointer;
  font:inherit;font-size:13.5px;color:var(--ink-2);font-weight:600;transition:all .15s}
.kindbtn:hover{background:rgba(255,255,255,.7)}
.kindbtn.on{background:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(43,130,172,.28)}
/* 线路资料汇总条 */
.routestat{display:flex;gap:26px;flex-wrap:wrap;padding:12px 16px;background:var(--sand-l);
  border-bottom:1px solid var(--line-2)}
.routestat > div{display:flex;flex-direction:column;gap:2px}
.routestat .lb{font-size:11.5px;color:var(--ink-3)}
.routestat b{font-size:17px;font-variant-numeric:tabular-nums}

/* ---------------- 亲子户外：整体加一层柔和暖调 ---------------- */
html[data-dept="family"] body{background:#FBF7F0}
html[data-dept="family"] .viewbody{background:linear-gradient(180deg,#FDFAF5 0%,#F9F4EC 100%)}
html[data-dept="family"] .topbar{background:rgba(255,252,247,.85)}
html[data-dept="family"] .card,html[data-dept="family"] .side-card{border-color:#EFE4D6}

/* ---------------- 部门切换（成人 / 亲子） ---------------- */
.deptswitch{display:flex;gap:3px;background:linear-gradient(135deg,#EAF4F9,#F3EEF6);
  padding:3px;border-radius:11px;border:1px solid var(--line-2)}
.deptswitch button{display:flex;align-items:center;gap:6px;border:none;background:transparent;
  padding:6px 13px;border-radius:9px;cursor:pointer;font:inherit;font-size:13px;font-weight:600;
  color:var(--ink-2);transition:all .16s cubic-bezier(.2,.7,.3,1);white-space:nowrap}
.deptswitch button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.deptswitch button:hover{background:rgba(255,255,255,.75);color:var(--ink)}
.deptswitch button.on{background:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(43,130,172,.32)}
html[data-dept="family"] .deptswitch button.on{background:var(--clay);
  box-shadow:0 2px 8px rgba(205,97,67,.32)}

/* ============================================================
   登录页：高级感户外场景
   ============================================================ */
.login-wrap{position:relative;min-height:100vh;display:flex;align-items:center;
  justify-content:center;padding:28px 20px;overflow:hidden;background:#0E1A24}
.scene{position:absolute;inset:0;z-index:0}
.sky{position:absolute;inset:0;
  background:linear-gradient(180deg,#0B1A2B 0%,#16374F 22%,#2B82AC 52%,#6FA9C4 68%,#DFCBBC 82%,#F0E3D6 100%)}
.sun{position:absolute;left:34%;top:47%;width:170px;height:170px;margin:-85px 0 0 -85px;border-radius:50%;
  background:radial-gradient(circle at 50% 50%,#FFF3CF 0%,#EDB01D 42%,rgba(237,176,29,.35) 62%,rgba(237,176,29,0) 74%);
  filter:blur(.4px);animation:sunrise 26s ease-in-out infinite}
@keyframes sunrise{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-14px) scale(1.04)}}
.clouds{position:absolute;height:70px;border-radius:100px;background:rgba(255,255,255,.20);filter:blur(22px)}
.c1{width:330px;top:16%;left:-340px;animation:drift 46s linear infinite}
.c2{width:460px;height:90px;top:26%;left:-460px;background:rgba(255,255,255,.14);
  animation:drift 68s linear infinite;animation-delay:-14s}
.c3{width:240px;height:56px;top:8%;left:-240px;background:rgba(255,255,255,.11);
  animation:drift 84s linear infinite;animation-delay:-30s}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(calc(100vw + 520px))}}
.stars{position:absolute;left:0;right:0;top:0;height:34%;
  background-image:radial-gradient(1.4px 1.4px at 12% 30%,rgba(255,255,255,.85) 50%,transparent 51%),
    radial-gradient(1.2px 1.2px at 32% 14%,rgba(255,255,255,.7) 50%,transparent 51%),
    radial-gradient(1.6px 1.6px at 58% 26%,rgba(255,255,255,.8) 50%,transparent 51%),
    radial-gradient(1.1px 1.1px at 74% 10%,rgba(255,255,255,.6) 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 88% 22%,rgba(255,255,255,.7) 50%,transparent 51%)}
.haze{position:absolute;left:0;right:0;bottom:22%;height:34%;
  background:linear-gradient(180deg,rgba(223,203,188,0) 0%,rgba(232,214,196,.45) 55%,rgba(240,227,214,.72) 100%)}
.mts{position:absolute;left:0;width:100%;height:auto}
.mts.far{bottom:38%;opacity:.28}
.mts.far path{fill:#0A1A28}
.mts.mid{bottom:29%;opacity:.50}
.mts.mid path{fill:#0C2130}
.ridge{position:absolute;left:-6%;right:-6%;height:170px;border-radius:48% 52% 0 0}
.ridge1{bottom:-46px;background:#12384C;transform:rotate(-2.2deg)}
.ridge2{bottom:-84px;background:#0E2A3D;transform:rotate(2deg);opacity:.96}
.ridge3{bottom:-132px;background:#0A1F2C;transform:rotate(-1.1deg)}

.login-box{position:relative;z-index:2;width:378px;padding:34px 34px 26px;border-radius:24px;
  background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(26px);
  box-shadow:0 30px 70px -18px rgba(3,15,25,.6),0 2px 0 rgba(255,255,255,.6) inset,
    0 0 0 1px rgba(255,255,255,.5);
  display:flex;flex-direction:column;gap:12px;animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both}
@keyframes cardIn{from{opacity:0;transform:translateY(22px) scale(.98)}to{opacity:1;transform:none}}
.brandline{display:flex;align-items:center;gap:13px;margin-bottom:6px}
.brandline h1{font-size:22px;letter-spacing:3px;margin:0;color:var(--ink)}
.brandline .sub{font-size:10.5px;letter-spacing:1.4px;color:var(--ink-3);margin:3px 0 0}
.login-box label{font-size:12.5px;color:var(--ink-2);display:flex;flex-direction:column;gap:6px}
.login-box input{font-size:14px;padding:11px 13px;border-radius:11px}
.login-box .btn.block{margin-top:6px;padding:12px;font-size:15px;letter-spacing:2px;border-radius:12px;
  background:linear-gradient(135deg,#2B82AC,#1F6488);box-shadow:0 8px 20px -6px rgba(43,130,172,.6)}
.login-box .btn.block:hover{filter:brightness(1.06);transform:translateY(-1px)}
.login-foot{display:flex;justify-content:space-between;gap:8px;margin-top:12px;padding-top:13px;
  border-top:1px solid var(--line-2);font-size:11px;color:var(--ink-3);flex-wrap:wrap}
.login-foot .sep{color:var(--sand-d)}
.login-hint{font-size:11px;color:var(--ink-3);text-align:center;margin-top:2px}
@media(max-width:520px){
  .login-box{width:88vw;padding:26px 22px 20px}
  .ridge{height:150px}
}

/* ============================================================
   登录分流门：成人户外 / 亲子户外 两个极简登录窗
   ============================================================ */
.gate{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:20px;
  padding:24px;animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both}
.gate-brand{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.gate-brand h1{margin:0;font-size:26px;letter-spacing:6px;color:#fff;
  text-shadow:0 2px 18px rgba(0,0,0,.45)}
.gate-brand .sub{margin:2px 0 0;font-size:11px;letter-spacing:2.4px;color:rgba(255,255,255,.78);
  text-shadow:0 1px 10px rgba(0,0,0,.5)}
.gate-panels{display:flex;gap:20px;align-items:stretch;flex-wrap:wrap;justify-content:center}
.gate-card{width:306px;padding:24px 24px 20px;border-radius:20px;display:flex;flex-direction:column;gap:11px;
  background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(24px);
  box-shadow:0 26px 60px -20px rgba(3,15,25,.65),0 0 0 1px rgba(255,255,255,.55) inset;
  border-top:3px solid var(--blue);transition:transform .2s cubic-bezier(.2,.7,.3,1),box-shadow .2s}
.gate-card:hover{transform:translateY(-3px);box-shadow:0 32px 64px -20px rgba(3,15,25,.7),0 0 0 1px rgba(255,255,255,.6) inset}
.gate-card[data-dept="family"]{border-top-color:var(--clay)}
.gate-card.last-used{box-shadow:0 26px 60px -20px rgba(3,15,25,.65),0 0 0 2px var(--gold) inset,
  0 0 0 1px rgba(255,255,255,.55) inset}
.gate-head{display:flex;align-items:center;gap:11px;padding-bottom:11px;border-bottom:1px solid var(--line-2)}
.gate-ico{width:38px;height:38px;flex:0 0 auto;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:var(--blue-l);color:var(--blue-d)}
.gate-card[data-dept="family"] .gate-ico{background:#FBEDE8;color:var(--clay)}
.gate-ico svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.gate-head h2{margin:0;font-size:17px;letter-spacing:1.5px;color:var(--ink)}
.gate-head p{margin:2px 0 0;font-size:10px;letter-spacing:2.2px;color:var(--ink-3)}
.gate-card label{font-size:12.5px;color:var(--ink-2);display:flex;flex-direction:column;gap:5px}
.gate-card input{font-size:14px;padding:10px 12px;border-radius:10px}
.gate-card label.keep{flex-direction:row!important;align-items:center!important;gap:6px;font-size:11.5px;
  color:var(--ink-3);cursor:pointer}
.gate-card label.keep input[type=checkbox]{width:14px!important;height:14px;padding:0!important;margin:0;
  accent-color:var(--blue);flex:0 0 auto}
.gate-card .btn.block{margin-top:5px;padding:11px;font-size:14px;letter-spacing:1.5px;border-radius:11px;
  background:linear-gradient(135deg,#2B82AC,#1F6488);box-shadow:0 8px 18px -7px rgba(43,130,172,.65)}
.gate-card .btn.block.familybtn{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 8px 18px -7px rgba(205,97,67,.65)}
.gate-card .btn.block:hover{filter:brightness(1.06);transform:translateY(-1px)}
.gate-card .pw-eye{font-size:14px}
.gate-err{max-width:660px;text-align:center;color:#FFF1EE;font-size:13px;font-weight:500;
  text-shadow:0 1px 10px rgba(0,0,0,.6)}
.login-hint{max-width:680px;text-align:center;font-size:11px;color:rgba(255,255,255,.72);
  text-shadow:0 1px 10px rgba(0,0,0,.5)}
@media(max-width:760px){
  .gate-panels{flex-direction:column;align-items:center}
  .gate-card{width:86vw;max-width:340px}
  .gate-brand h1{font-size:22px}
}

/* 长品牌名适配 */
.deptswitch button .dname{letter-spacing:.2px}
#nav button, .deptswitch button{max-width:270px;overflow:hidden;text-overflow:ellipsis}
.brandline .brand-full{font-size:16px;letter-spacing:1.6px;line-height:1.25}
@media(max-width:1500px){
  .deptswitch button{max-width:170px;font-size:12px}
  .deptswitch button .dname{font-size:11.5px}
}

/* 顶部品牌：弱化，让部门切换器成为主角 */
.brand{font-weight:600;font-size:12.5px;letter-spacing:.6px;color:var(--ink-3);gap:7px}
.brand span{padding-right:1px}

/* 顶部只留狮子图标，品牌由部门切换器承载 */
.brand{padding-right:6px;border-right:1px solid var(--line-2)}

/* ============================================================
   素材库
   ============================================================ */
.diskbar{height:4px;background:var(--line-2);margin:0 16px;border-radius:3px;overflow:hidden}
.diskbar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-m));
  border-radius:3px;transition:width .3s}
.dropzone{margin:14px 16px;padding:26px 18px;border:2px dashed var(--line);border-radius:14px;
  text-align:center;cursor:pointer;background:var(--sand-l);transition:all .16s}
.dropzone:hover{border-color:var(--blue-m);background:#fff}
.dropzone.over{border-color:var(--blue);background:var(--blue-l);transform:scale(1.005)}
.dropzone .dzi{font-size:26px;color:var(--blue);line-height:1;margin-bottom:7px}
.dropzone .dzt{font-size:14px;font-weight:600;color:var(--ink)}
.dropzone .dzt b{color:var(--blue-d)}
.dropzone .dzs{font-size:11.5px;color:var(--ink-3);margin-top:5px}
.matgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:14px;padding:16px}
.matgrid.small{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:9px;padding:8px 0}
.matcard{border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fff;
  display:flex;flex-direction:column;transition:box-shadow .16s,transform .16s;cursor:pointer}
.matcard:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.matbox{height:118px;background:var(--sand-l);display:flex;align-items:center;justify-content:center;overflow:hidden}
.matgrid.small .matbox{height:74px}
.matimg{width:100%;height:100%;object-fit:cover;display:block}
.matph{font-size:34px;opacity:.55}
.matgrid.small .matph{font-size:24px}
.matgrid.small .matinfo{padding:6px 8px}
.matgrid.small .matname{font-size:11.5px}
.matgrid.small .matmeta{font-size:10px}
.matinfo{padding:9px 11px 4px;flex:1}
.matname{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.matmeta{font-size:11px;color:var(--ink-3);margin-top:3px}
.matactions{display:flex;gap:5px;padding:8px 10px 10px;flex-wrap:wrap}
.matactions .btn{padding:4px 9px;font-size:12px}

/* ============================================================
   AI 助手
   ============================================================ */
.aiwrap{display:grid;grid-template-columns:236px 1fr;gap:14px;height:100%;min-height:0}
@media(max-width:900px){.aiwrap{grid-template-columns:1fr}}
.aichats{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);
  display:flex;flex-direction:column;overflow:hidden;min-height:0}
.aichats-h{padding:11px 14px;font-size:12.5px;font-weight:700;color:var(--ink-2);border-bottom:1px solid var(--line-2)}
.aiempty{padding:20px 14px;font-size:12.5px;color:var(--ink-3);text-align:center}
.aichat-item{display:flex;align-items:center;gap:6px;padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line-2);
  transition:background .14s}
.aichat-item:hover{background:var(--sand-l)}
.aichat-item.on{background:var(--blue-l);border-left:3px solid var(--blue)}
.aichat-item .ait{flex:1;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aidel{border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:15px;padding:0 3px;line-height:1}
.aidel:hover{color:var(--danger)}
.aimain{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);
  display:flex;flex-direction:column;overflow:hidden;min-height:0}
.aitop{padding:11px 16px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.aitop b{font-size:14px}
.aitop .hint{font-size:11.5px;color:var(--ink-3)}
.aimsgs{flex:1;overflow:auto;padding:18px 18px 8px;display:flex;flex-direction:column;gap:13px;min-height:180px}
.aibubble{max-width:82%;padding:11px 14px;border-radius:15px;font-size:13.5px;line-height:1.75;word-break:break-word}
.aibubble.user{align-self:flex-end;background:linear-gradient(135deg,#2B82AC,#1F6488);color:#fff;
  border-bottom-right-radius:5px;white-space:pre-wrap}
.aibubble.assistant{align-self:flex-start;background:var(--sand-l);color:var(--ink);border-bottom-left-radius:5px}
.aibubble.assistant b{color:var(--blue-d)}
.aibubble.assistant h3,.aibubble.assistant h4{margin:9px 0 4px;font-size:14px;color:var(--blue-d)}
.aibubble.assistant ul{margin:5px 0;padding-left:20px}
.aibubble.assistant li{margin:2px 0}
.aibubble.assistant code{background:#fff;padding:1px 5px;border-radius:5px;font-size:12.5px;
  font-family:ui-monospace,Menlo,Consolas,monospace}
.aibubble.assistant pre{background:#fff;padding:10px 12px;border-radius:10px;overflow:auto;font-size:12.5px;
  margin:7px 0;font-family:ui-monospace,Menlo,Consolas,monospace}
.aibubble.typing{min-width:64px}
.aidots{display:inline-flex;gap:4px;align-items:center;height:18px}
.aidots i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:aiblink 1.2s infinite}
.aidots i:nth-child(2){animation-delay:.2s}
.aidots i:nth-child(3){animation-delay:.4s}
@keyframes aiblink{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.aiwelcome{text-align:center;padding:24px 16px}
.aiw-ico{font-size:32px;margin-bottom:6px}
.aiw-t{font-size:17px;font-weight:700;color:var(--ink)}
.aiw-s{font-size:13px;color:var(--ink-3);margin:7px auto 16px;max-width:520px;line-height:1.7}
.aipresets{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;max-width:720px;margin:0 auto}
.aipreset{display:flex;align-items:center;gap:9px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;
  background:#fff;cursor:pointer;font:inherit;font-size:13px;color:var(--ink);text-align:left;
  transition:all .15s cubic-bezier(.2,.7,.3,1)}
.aipreset:hover{border-color:var(--blue-m);box-shadow:var(--sh-2);transform:translateY(-2px)}
.aipreset .api{font-size:17px}
.aifoot{border-top:1px solid var(--line-2);padding:11px 14px;display:flex;gap:9px;align-items:flex-end}
.aifoot textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  font:inherit;font-size:13.5px;line-height:1.6;max-height:160px;outline:none;background:#fff}
.aifoot textarea:focus{border-color:var(--blue-m);box-shadow:0 0 0 3px var(--blue-l)}
.aibtns{display:flex;flex-direction:column;gap:5px}

/* 导航按钮变多：允许横向滚动，账号区始终钉在右上角 */
#nav{flex:0 1 auto;overflow-x:auto;overflow-y:hidden;max-width:100%;scrollbar-width:none}
#nav::-webkit-scrollbar{height:0}
#nav button{flex:0 0 auto;padding:7px 11px}
.topbar{gap:10px}
@media(max-width:1700px){ #nav button{font-size:12.5px;padding:6px 9px;gap:5px} }
@media(max-width:1450px){ .viewsub{display:none} }


/* ============================================================
   登录页（精简版）：LOGO + 单一卡片 + 品牌切换
   ============================================================ */
.gate{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;
  gap:16px;padding:24px;animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both}

/* LOGO：白色圆角容器，深色背景上更清晰 */
.gate-logo{display:flex;align-items:center;justify-content:center;background:transparent;padding:0}
.gate-logo img{display:block;width:132px;height:auto;
  /* 透明 LOGO 在深色视频/夜景上靠柔光撑住可读性 */
  /* 深蓝标在中亮背景上偏暗：提亮 + 白色柔光包裹，保证任何背景下都清晰 */
  filter:brightness(1.28) saturate(1.05)
         drop-shadow(0 0 1px rgba(255,255,255,.95))
         drop-shadow(0 0 5px rgba(255,255,255,.7))
         drop-shadow(0 1px 5px rgba(0,0,0,.4))
         drop-shadow(0 5px 16px rgba(0,0,0,.3))}
@media(max-width:520px){ .gate-logo img{width:112px} }

/* 单一登录窗 */
.gate-card{width:300px;padding:20px 20px 18px;border-radius:20px;display:flex;flex-direction:column;gap:10px;
  /* 更低不透明度 + 细高光边 + 柔光阴影 = 像浮在视频里的玻璃，而不是贴上去的白板 */
  background:rgba(255,255,255,.52);
  backdrop-filter:blur(9px) saturate(125%);
  -webkit-backdrop-filter:blur(9px) saturate(125%);
  border:0.5px solid rgba(255,255,255,.62);
  box-shadow:0 18px 44px -16px rgba(3,15,25,.5),
             0 2px 8px -2px rgba(3,15,25,.28),
             0 0 0 1px rgba(255,255,255,.14) inset,
             0 1px 0 rgba(255,255,255,.45) inset}
@media(max-width:520px){ .gate-card{width:84vw;max-width:320px;padding:18px 16px 16px} }

/* 品牌切换按钮 */
.brandswitch{display:flex;gap:5px;padding:3px;border-radius:12px;
  background:rgba(255,255,255,.42);border:0.5px solid rgba(255,255,255,.5);margin-bottom:4px}
.brandswitch button{flex:1;border:none;background:transparent;padding:8px 6px;border-radius:9px;
  cursor:pointer;font:inherit;font-size:13.5px;font-weight:600;color:var(--ink-3);
  transition:all .18s cubic-bezier(.2,.7,.3,1);position:relative;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.brandswitch button:hover{color:var(--ink);background:rgba(255,255,255,.6)}
.brandswitch button.on{color:#fff;background:linear-gradient(135deg,#2B82AC,#1F6488);
  box-shadow:0 4px 12px -3px rgba(43,130,172,.55);transform:translateY(-1px)}
.brandswitch button.on[data-dept="family"]{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 4px 12px -3px rgba(205,97,67,.55)}

/* 输入框：边框更细（0.5px），聚焦时才有明显提示 */
.gate-card label{font-size:12.5px;color:var(--ink);display:flex;flex-direction:column;gap:6px;
  text-shadow:0 1px 2px rgba(255,255,255,.5)}
.gate-card input{font-size:14px;padding:10px 12px;border-radius:10px;
  border:0.5px solid rgba(255,255,255,.55);background:rgba(255,255,255,.55);outline:none;
  color:var(--ink);transition:background .16s, border-color .16s, box-shadow .16s}
.gate-card input:hover{background:rgba(255,255,255,.68);border-color:rgba(255,255,255,.75)}
.gate-card input:focus{background:rgba(255,255,255,.92);border-color:var(--blue-m);
  box-shadow:0 0 0 3px rgba(143,194,217,.35)}
.gate-card label.keep{flex-direction:row!important;align-items:center!important;gap:6px;font-size:11.5px;
  color:var(--ink-3);cursor:pointer;margin-top:-3px}
.gate-card label.keep input[type=checkbox]{width:14px!important;height:14px;padding:0!important;margin:0;
  accent-color:var(--blue);flex:0 0 auto;border:none}
.gate-card .pw-wrap input{width:100%}
.gate-card .btn.block{margin-top:3px;padding:11px;font-size:14px;letter-spacing:1.5px;border-radius:10px;
  background:linear-gradient(135deg,#2B82AC,#1F6488);box-shadow:0 8px 20px -7px rgba(43,130,172,.65);
  transition:filter .16s, transform .16s}
.gate-card .btn.block:hover{filter:brightness(1.06);transform:translateY(-1px)}
.gate-card .btn.block.familybtn{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 8px 20px -7px rgba(205,97,67,.65)}
.gate-card .err{text-align:left;min-height:0}
.gate-card .pw-eye{font-size:14px}

/* ============================================================
   登录页（双窗版）：透明 LOGO + 两个独立登录窗
   ============================================================ */
.gate{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;
  gap:18px;padding:24px;animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both}

/* LOGO：透明，靠柔光在深色场景上撑住可读性 */
.gate-logo{display:flex;align-items:center;justify-content:center;background:transparent;padding:0}
.gate-logo img{display:block;width:132px;height:auto;
  filter:brightness(1.28) saturate(1.05)
         drop-shadow(0 0 1px rgba(255,255,255,.95))
         drop-shadow(0 0 5px rgba(255,255,255,.7))
         drop-shadow(0 1px 5px rgba(0,0,0,.4))
         drop-shadow(0 5px 16px rgba(0,0,0,.3))}
@media(max-width:760px){ .gate-logo img{width:112px} }

/* 两个登录窗并排 */
.gate-panels{display:flex;gap:18px;align-items:stretch;flex-wrap:wrap;justify-content:center}
@media(max-width:760px){ .gate-panels{flex-direction:column;align-items:center} }

.gate-card{width:292px;padding:18px 20px 18px;border-radius:18px;display:flex;flex-direction:column;gap:10px;
  /* 玻璃融合感：半透 + 轻模糊 + 白色高光细边 + 柔光阴影 */
  background:rgba(255,255,255,.56);
  backdrop-filter:blur(9px) saturate(125%);
  -webkit-backdrop-filter:blur(9px) saturate(125%);
  border:0.5px solid rgba(255,255,255,.62);
  transition:transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .2s, background .2s;
  box-shadow:0 18px 44px -16px rgba(3,15,25,.55),
             0 2px 8px -2px rgba(3,15,25,.32),
             0 0 0 1px rgba(255,255,255,.16) inset,
             0 1px 0 rgba(255,255,255,.5) inset}
.gate-card:hover{transform:translateY(-2px);background:rgba(255,255,255,.62);
  box-shadow:0 24px 52px -18px rgba(3,15,25,.6),
             0 4px 12px -3px rgba(3,15,25,.35),
             0 0 0 1px rgba(255,255,255,.2) inset,
             0 1px 0 rgba(255,255,255,.6) inset}
@media(max-width:760px){ .gate-card{width:86vw;max-width:320px} }
/* 上次使用的品牌：金色细边提示 */
.gate-card.last-used{border-color:rgba(237,176,29,.85);
  box-shadow:0 18px 44px -16px rgba(3,15,25,.55),
             0 0 0 1.5px rgba(237,176,29,.55),
             0 1px 0 rgba(255,255,255,.5) inset}

/* 窗口标题 */
.gate-head{display:flex;align-items:center;gap:10px;padding-bottom:9px;
  border-bottom:0.5px solid rgba(255,255,255,.5)}
.gate-ico{width:34px;height:34px;flex:0 0 auto;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.5);color:#1F6488}
.gate-card[data-dept="family"] .gate-ico{color:#B04E33}
.gate-ico svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.gate-head h2{margin:0;font-size:15.5px;letter-spacing:1px;color:var(--ink);text-shadow:0 1px 2px rgba(255,255,255,.5)}
.gate-head p{margin:2px 0 0;font-size:10.5px;letter-spacing:1.4px;color:var(--ink-2);opacity:.85}

/* 输入框：0.5px 细边框 + 半透白底 */
.gate-card label{font-size:12.5px;color:var(--ink);display:flex;flex-direction:column;gap:5px;
  text-shadow:0 1px 2px rgba(255,255,255,.5)}
.gate-card input{font-size:14px;padding:10px 12px;border-radius:10px;color:var(--ink);outline:none;
  border:0.5px solid rgba(255,255,255,.55);background:rgba(255,255,255,.55);
  transition:background .16s, border-color .16s, box-shadow .16s}
.gate-card input:hover{background:rgba(255,255,255,.68);border-color:rgba(255,255,255,.75)}
.gate-card input:focus{background:rgba(255,255,255,.92);border-color:var(--blue-m);
  box-shadow:0 0 0 3px rgba(143,194,217,.35)}
.gate-card .pw-wrap input{width:100%}
.gate-card .pw-eye{font-size:14px}
.gate-card label.keep{flex-direction:row!important;align-items:center!important;gap:6px;font-size:11.5px;
  color:var(--ink-2);cursor:pointer;margin-top:-2px}
.gate-card label.keep input[type=checkbox]{width:14px!important;height:14px;padding:0!important;margin:0;
  accent-color:var(--blue);flex:0 0 auto;border:none;background:none}

.gate-card .btn.block{margin-top:3px;padding:11px;font-size:14px;letter-spacing:1.2px;border-radius:10px;
  background:linear-gradient(135deg,#2B82AC,#1F6488);
  box-shadow:0 8px 20px -7px rgba(43,130,172,.65);transition:filter .16s, transform .16s}
.gate-card .btn.block:hover{filter:brightness(1.06);transform:translateY(-1px)}
.gate-card .btn.block.familybtn{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 8px 20px -7px rgba(205,97,67,.65)}
.gate-err{max-width:640px;text-align:center;color:#FFF1EE;font-size:13px;font-weight:500;
  text-shadow:0 1px 10px rgba(0,0,0,.65)}

/* ============================================================
   登录页 v7：文字品牌 + 单一登录窗（靠右）
   ============================================================ */
.gate{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;
  gap:20px;padding:24px;animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both;max-width:360px}

/* 文字品牌 */
.gate-brand2{text-align:center;margin-bottom:2px}
.gate-brand2 h1{margin:0;font-size:30px;font-weight:700;letter-spacing:2px;color:#fff;
  text-shadow:0 2px 20px rgba(0,0,0,.55),0 1px 3px rgba(0,0,0,.4);line-height:1.2}
.gate-brand2 p{margin:7px 0 0;font-size:11px;letter-spacing:3px;color:rgba(255,255,255,.82);
  text-shadow:0 1px 12px rgba(0,0,0,.6)}

/* 单一登录窗 */
.gate-card.single{width:330px}
.gate-card{width:330px;padding:22px 22px 20px;border-radius:18px;display:flex;flex-direction:column;gap:11px;
  background:rgba(255,255,255,.58);
  backdrop-filter:blur(10px) saturate(130%);
  -webkit-backdrop-filter:blur(10px) saturate(130%);
  border:0.5px solid rgba(255,255,255,.62);
  box-shadow:0 18px 44px -16px rgba(3,15,25,.55),
             0 2px 8px -2px rgba(3,15,25,.32),
             0 0 0 1px rgba(255,255,255,.16) inset,
             0 1px 0 rgba(255,255,255,.5) inset}
@media(max-width:760px){ .gate-card,.gate-card.single{width:86vw;max-width:340px} }

/* 品牌切换 */
.brandswitch{display:flex;gap:5px;padding:3px;border-radius:12px;
  background:rgba(255,255,255,.38);border:0.5px solid rgba(255,255,255,.5);margin-bottom:3px}
.brandswitch button{flex:1;border:none;background:transparent;padding:9px 6px;border-radius:9px;
  cursor:pointer;font:inherit;font-size:13.5px;font-weight:600;color:var(--ink-2);
  transition:all .18s cubic-bezier(.2,.7,.3,1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brandswitch button:hover{color:var(--ink);background:rgba(255,255,255,.6)}
.brandswitch button.on{color:#fff;background:linear-gradient(135deg,#2B82AC,#1F6488);
  box-shadow:0 4px 12px -3px rgba(43,130,172,.55)}
.brandswitch button.on[data-dept="family"]{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 4px 12px -3px rgba(205,97,67,.55)}

.gate-card label{font-size:12.5px;color:var(--ink);display:flex;flex-direction:column;gap:5px;
  text-shadow:0 1px 2px rgba(255,255,255,.5)}
.gate-card input{font-size:14px;padding:10px 12px;border-radius:10px;color:var(--ink);outline:none;
  border:0.5px solid rgba(255,255,255,.55);background:rgba(255,255,255,.55);
  transition:background .16s, border-color .16s, box-shadow .16s}
.gate-card input:hover{background:rgba(255,255,255,.68);border-color:rgba(255,255,255,.75)}
.gate-card input:focus{background:rgba(255,255,255,.94);border-color:var(--blue-m);
  box-shadow:0 0 0 3px rgba(143,194,217,.35)}
.gate-card .pw-wrap input{width:100%}
.gate-card .pw-eye{font-size:14px}
.gate-card label.keep{flex-direction:row!important;align-items:center!important;gap:6px;font-size:11.5px;
  color:var(--ink-2);cursor:pointer;margin-top:-2px}
.gate-card label.keep input[type=checkbox]{width:14px!important;height:14px;padding:0!important;margin:0;
  accent-color:var(--blue);flex:0 0 auto;border:none;background:none}
.gate-card .btn.block{margin-top:3px;padding:11px;font-size:14px;letter-spacing:1.2px;border-radius:10px;
  background:linear-gradient(135deg,#2B82AC,#1F6488);box-shadow:0 8px 20px -7px rgba(43,130,172,.65);
  transition:filter .16s, transform .16s}
.gate-card .btn.block:hover{filter:brightness(1.06);transform:translateY(-1px)}
.gate-card .btn.block.familybtn{background:linear-gradient(135deg,#CD6143,#A8482F);
  box-shadow:0 8px 20px -7px rgba(205,97,67,.65)}
.gate-card .err{text-align:left;min-height:0}

/* ============================================================
   甘特图：日期栏可切换「号 / 周几」+ 悬浮提示
   ============================================================ */
.fday{cursor:pointer;user-select:none;transition:background .14s,color .14s}
.fday:hover{background:var(--blue-l)!important;color:var(--blue-d)}
.fday .dow{font-size:10px;opacity:.75;display:block;line-height:1.1}
th.finfo .daytoggle{float:right;font-size:10.5px;color:var(--blue-d);background:var(--blue-l);
  border:none;border-radius:6px;padding:2px 7px;cursor:pointer;font-weight:600;margin-top:-1px}
th.finfo .daytoggle:hover{background:var(--blue-m);color:#fff}
/* 当前列高亮：鼠标所在的日期列整列点亮，看得更清 */
.fcell.colhl{background:var(--blue-l)!important}
.fcell.colhl.we{background:#E8F1F6!important}
/* 表头当列也高亮 */
.fday.colhl{background:var(--blue-l)!important;color:var(--blue-d)}

/* 甘特图：鼠标所在日期的浮动提示 */
.daytip{position:fixed;z-index:9999;pointer-events:none;
  background:rgba(33,35,42,.92);color:#fff;font-size:11.5px;font-weight:600;
  padding:5px 10px;border-radius:8px;white-space:nowrap;
  box-shadow:0 6px 18px -6px rgba(0,0,0,.5)}
/* 整列高亮更明显一点 */
.fcell.colhl{box-shadow:inset 0 0 0 1px rgba(43,130,172,.18)}

/* ============================================================
   登录背景：海边 + 山峦 + 徒步（纯 CSS，零流量）
   ============================================================ */
.sky{position:absolute;inset:0;
  background:linear-gradient(180deg,
    #071A2E 0%, #0E2B44 16%, #1D4E72 32%,
    #2B82AC 50%, #6FA9C4 62%, #B9CFD8 70%,
    #DFCBBC 78%, #EFE2D2 86%, #F6EFE4 100%)}
.stars{position:absolute;left:0;right:0;top:0;height:30%;
  background-image:
    radial-gradient(1.5px 1.5px at 12% 28%,rgba(255,255,255,.9) 50%,transparent 51%),
    radial-gradient(1.2px 1.2px at 27% 12%,rgba(255,255,255,.7) 50%,transparent 51%),
    radial-gradient(1.7px 1.7px at 44% 30%,rgba(255,255,255,.85) 50%,transparent 51%),
    radial-gradient(1.1px 1.1px at 61% 9%,rgba(255,255,255,.6) 50%,transparent 51%),
    radial-gradient(1.4px 1.4px at 76% 24%,rgba(255,255,255,.75) 50%,transparent 51%),
    radial-gradient(1.2px 1.2px at 88% 15%,rgba(255,255,255,.65) 50%,transparent 51%);
  animation:twinkle 6s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.85}50%{opacity:.45}}
/* 日出前的大范围暖光 */
.glow{position:absolute;left:6%;top:34%;width:56%;height:56%;
  background:radial-gradient(circle at 50% 55%,rgba(237,176,29,.34) 0%,rgba(205,97,67,.16) 34%,rgba(43,130,172,0) 68%)}
.sun{position:absolute;left:32%;top:44%;width:180px;height:180px;margin:-90px 0 0 -90px;border-radius:50%;
  background:radial-gradient(circle at 50% 50%,#FFF6D8 0%,#EDB01D 40%,rgba(237,176,29,.4) 62%,rgba(237,176,29,0) 76%);
  animation:sunrise 28s ease-in-out infinite}
@keyframes sunrise{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-16px) scale(1.05)}}
.clouds{position:absolute;height:70px;border-radius:100px;background:rgba(255,255,255,.16);filter:blur(24px)}
.c1{width:340px;top:14%;left:-340px;animation:drift 52s linear infinite}
.c2{width:470px;height:92px;top:24%;left:-470px;background:rgba(255,255,255,.11);
  animation:drift 74s linear infinite;animation-delay:-18s}
.c3{width:250px;height:58px;top:7%;left:-250px;background:rgba(255,255,255,.09);
  animation:drift 92s linear infinite;animation-delay:-36s}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(calc(100vw + 540px))}}
.mts{position:absolute;left:0;width:100%;height:auto}
.mts.far{bottom:40%;opacity:.24}
.mts.far path{fill:#08243A}
.mts.mid{bottom:32%;opacity:.44}
.mts.mid path{fill:#0A2E48}
/* 海面上的远岛 */
.island{position:absolute;left:62%;bottom:31.5%;width:210px;height:52px;opacity:.5}
.island path{fill:#0B2B42}
/* 海面：从远处浅蓝到近处深蓝 */
.sea{position:absolute;left:0;right:0;bottom:0;height:40%;
  background:linear-gradient(180deg,
    rgba(186,214,226,.92) 0%, rgba(104,162,190,.94) 12%,
    rgba(43,130,172,.95) 34%, #1C5A80 62%, #123F5C 84%, #0C2C42 100%)}
/* 海面反光带（太阳在海上的倒影） */
.sea-shine{position:absolute;left:22%;bottom:0;width:22%;height:40%;
  background:linear-gradient(180deg,rgba(255,244,210,.62) 0%,rgba(255,228,175,.3) 45%,rgba(255,228,175,0) 100%);
  filter:blur(12px)}
.waves{position:absolute;left:-6%;width:112%;height:auto}
.waves path{fill:rgba(255,255,255,.26)}
.w1{bottom:15%;animation:wave 10s ease-in-out infinite}
.w2{bottom:5%;opacity:.85}
.w2 path{fill:rgba(255,255,255,.18)}
@keyframes wave{0%,100%{transform:translateX(0) translateY(0)}50%{transform:translateX(-22px) translateY(-4px)}}
/* 海边雾气 */
.haze{position:absolute;left:0;right:0;bottom:26%;height:26%;
  background:linear-gradient(180deg,rgba(246,239,228,0) 0%,rgba(246,239,228,.3) 60%,rgba(246,239,228,.55) 100%)}
/* 前景山脊（海滩边缘） */
.ridge{position:absolute;left:-6%;right:-6%;height:170px;border-radius:48% 52% 0 0}
.ridge1{bottom:-52px;background:#12384C;transform:rotate(-2deg);opacity:.96}
.ridge2{bottom:-92px;background:#0E2A3D;transform:rotate(1.8deg);opacity:.97}
.ridge3{bottom:-140px;background:#0A1F2C;transform:rotate(-1deg)}

/* 有真实照片/视频时让位（保留兼容） */
html[data-photo] .scene, html[data-video] .scene{display:none}

/* 月份列收窄（96px）后的适配：更紧的内边距、更小的字号 */
table.dtable th.finfo,
table.dtable td.finfo{padding:6px 8px}
table.dtable th.finfo{font-size:10px;letter-spacing:0}
table.dtable td.finfo b{font-size:12.5px}
table.dtable td.finfo span{font-size:10px;line-height:1.35}
table.dtable th.finfo .daytoggle{font-size:10px;padding:2px 6px;border-radius:5px}
/* 表头「活动 / 日期」在窄列里换行更自然 */
table.dtable th.finfo{line-height:1.3}

/* 窄屏：左侧两卡并排，避免竖向被压扁导致内容裁切 */
@media(max-width:1100px){
  .sched-side{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
  .sched-side > .side-card:last-child{min-height:200px}
}

/* AI 助手：左侧栏顶部（新对话 + 模型选择） */
.aiside-top{padding:10px 10px 8px;border-bottom:1px solid var(--line-2);display:flex;flex-direction:column;gap:8px}
.aiside-top .btn.block{width:100%;padding:9px;font-size:13.5px;border-radius:10px}
.aimodel{display:flex;align-items:center;gap:7px}
.aimodel .lbl{font-size:11.5px;color:var(--ink-3);flex:0 0 auto}
.aimodel select{flex:1;font-size:12.5px;padding:5px 8px;border-radius:8px;
  border:0.5px solid var(--line);background:#fff;color:var(--ink)}
.aichats-h{display:flex;align-items:center;justify-content:space-between}
.aichats-h .cnt{font-size:11px;color:var(--ink-3);background:var(--sand-l);
  border-radius:9px;padding:1px 7px;font-weight:600}
