:root {
  --primary:#1a4f7a; --primary-h:#1d6496; --accent:#0d9e7e;
  --bg:#f0f4f8; --surface:#fff; --border:#dde5ef;
  --text:#1a2333; --muted:#657080;
  --green:#0f7a45; --green-bg:#e6f7ef;
  --red:#c0392b; --red-bg:#fdf0ee;
  --amber:#9a6c00; --amber-bg:#fef8e6;
  --gray:#5c6b7a; --gray-bg:#eef2f6;
  --r:10px; --sh:0 1px 4px rgba(0,0,0,.07);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Be Vietnam Pro',sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}

/* ── LOGIN ── */
#login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#0d2f4a 0%,#0d7a6e 100%)}
.lcard{background:#fff;border-radius:16px;padding:40px 36px;width:360px;box-shadow:0 24px 64px rgba(0,0,0,.25)}
.llogo{text-align:center;margin-bottom:28px}
.llogo .brand{font-size:20px;font-weight:600;color:var(--primary)}
.llogo .sub{font-size:12px;color:var(--muted);margin-top:3px}
.fg{margin-bottom:14px}
.fg label{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}
.fg input{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text);outline:none;transition:border-color .15s}
.fg input:focus{border-color:var(--primary-h)}
.btn-lg{width:100%;padding:11px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;margin-top:8px;transition:background .15s}
.btn-lg:hover{background:var(--primary-h)}
.lerr{color:var(--red);font-size:12px;margin-top:10px;text-align:center;min-height:18px}

/* ── HEADER ── */
#main-page{display:none;min-height:100vh;padding-top:54px}
.hdr{background:var(--primary);color:#fff;padding:0 20px;height:54px;display:flex;align-items:center;gap:14px;position:fixed;top:0;left:0;right:0;z-index:1000;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.hbrand{font-weight:600;font-size:15px;flex-shrink:0;white-space:nowrap;display:flex;align-items:center;gap:8px}
.hlogo{height:32px;width:auto;display:block;object-fit:contain}
.hbrand span{font-weight:300;opacity:.6}
.hsep{flex:1}
.datenav{display:flex;align-items:center;gap:4px;background:rgba(255,255,255,.12);border-radius:8px;padding:4px 8px}
.datenav button{background:none;border:none;color:#fff;cursor:pointer;font-size:15px;opacity:.8;transition:opacity .15s;line-height:1}
.datenav button:hover{opacity:1}
.datenav input[type=date]{background:none;border:none;color:#fff;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;outline:none}
.datenav input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.8;cursor:pointer}
.today-btn{background:rgba(255,255,255,.12);border:none;color:#fff;padding:5px 10px;border-radius:6px;font-size:11px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s}
.today-btn:hover{background:rgba(255,255,255,.22)}
.tagnav{display:flex;align-items:center;gap:2px;background:rgba(255,255,255,.12);border-radius:8px;padding:3px;flex-shrink:0}
.tagbtn{background:transparent;border:none;color:#fff;font-size:11px;font-weight:500;font-family:inherit;padding:5px 8px;border-radius:6px;cursor:pointer;opacity:.85;white-space:nowrap;line-height:1.2}
.tagbtn:hover{opacity:1}
.tagbtn.active{background:rgba(255,255,255,.22);opacity:1}
.rfbtn{background:rgba(255,255,255,.12);border:none;color:#fff;padding:6px 10px;border-radius:6px;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:5px;transition:background .15s}
.rfbtn:hover{background:rgba(255,255,255,.22)}
.rfbtn.spin .ri{animation:spin 1s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.ubadge{display:flex;align-items:center;gap:7px;background:rgba(255,255,255,.12);padding:5px 10px;border-radius:20px}
.ubadge{position:relative;cursor:pointer}
.uavatar{width:26px;height:26px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0}
.uname{font-size:12px;font-weight:500}
.rrole{font-size:10px;background:rgba(255,255,255,.2);padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.05em}
.profile-menu{position:absolute;top:calc(100% + 6px);right:0;display:none;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 24px rgba(0,0,0,.14);padding:6px;z-index:1200}
.profile-menu.open{display:block}
.profile-logout-btn{border:none;background:var(--primary);color:#fff;border-radius:6px;padding:7px 10px;font-size:12px;font-family:inherit;cursor:pointer;white-space:nowrap}
.profile-logout-btn:hover{background:var(--primary-h)}

/* ── CONTENT ── */
.content{padding:20px}
.demo-bar{background:#fff8e1;border-bottom:1px solid #ffe082;color:#7a5c00;padding:7px 20px;font-size:12px;display:flex;align-items:center;gap:8px}
.dlabel{font-size:13px;color:var(--muted);margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dlabel strong{color:var(--text);font-size:15px}
.scnt{background:var(--primary);color:#fff;font-size:11px;padding:2px 8px;border-radius:20px}
.toggle-all-btn{background:#fff;border:1px solid var(--border);color:var(--text);padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;font-family:inherit;cursor:pointer}
.toggle-all-btn:hover{border-color:#c7d3e1}
.empty{text-align:center;padding:60px 20px;color:var(--muted)}
.sessions-root{display:grid;gap:16px}
.srow{display:flex;gap:12px;overflow-x:auto;overflow-y:visible;padding-bottom:4px}
.srow::-webkit-scrollbar{height:6px}
.srow::-webkit-scrollbar-thumb{background:#ccd7e3;border-radius:20px}
.tgroup{margin-bottom:18px}
.tghead{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.tgtitle{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.tgcount{font-size:10px;background:var(--gray-bg);color:var(--gray);padding:2px 7px;border-radius:20px}
.tgbtn{background:none;border:none;color:var(--primary-h);font-size:11px;font-weight:600;cursor:pointer;padding:0}
.tgroup.collapsed .srow{display:none}

/* ── SESSION CARD ── */
.scard{background:var(--surface);border-radius:var(--r);border:1px solid var(--border);box-shadow:var(--sh);overflow:visible;transition:box-shadow .15s}
.srow .scard{min-width:420px;flex:0 0 340px}
.srow .scard{position:relative;z-index:1}
.srow .scard.popup-open{z-index:9999}
.scard:hover{box-shadow:0 4px 14px rgba(0,0,0,.1)}
.scard.s-off{border-left:3px solid var(--red);opacity:.85}
.scard.s-live{border-left:3px solid var(--accent)}
.scard.s-done{background:#f3f6f9;opacity:.8}
.scard.s-upcoming{background:#fff9e8;opacity:.98}
.scard.s-done .chdr{background:#eef3f8}
.scard.s-done .cbadge{background:#7c8a99}
.scard.s-done .ctime{color:#6f7c8a}
.scard.s-done .ival,.scard.s-done .cname{color:#5f6b78}
.cpill.done{background:var(--gray-bg);color:var(--gray)}
.chdr{padding:13px 15px 11px;border-bottom:1px solid var(--border)}
.ctop{display:flex;flex-direction:column;gap:8px;margin-bottom:7px}
.crow-tags{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.cbadge{background:var(--primary);color:#fff;font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;flex-shrink:0}
.cbadge-b{background:var(--gray-bg);color:var(--gray);font-size:10px;font-weight:500;padding:2px 7px;border-radius:4px;white-space:nowrap;flex-shrink:0}
.cname{font-size:13px;font-weight:500;line-height:1.45;width:100%}
.cmeta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ctime{font-size:13px;font-weight:600;color:var(--primary-h)}
.cpill{font-size:10px;font-weight:600;padding:2px 8px;border-radius:20px}
.cpill.hoc{background:var(--green-bg);color:var(--green)}
.cpill.live{background:rgba(13,158,126,.12);color:var(--accent)}
.cpill.upcoming{background:var(--amber-bg);color:var(--amber)}
.cpill.nghi{background:var(--red-bg);color:var(--red)}
.support-btn{margin-left:auto;border:1px solid #bfd3e6;background:#eef5fb;color:var(--primary-h);font-size:11px;font-weight:600;cursor:pointer;padding:3px 8px;border-radius:6px}
.support-btn:hover{background:#e3effa}
.cnotice{font-size:11px;color:var(--amber);background:var(--amber-bg);padding:4px 8px;border-radius:5px;margin-top:7px}
.cbody{display:grid;grid-template-columns:1fr 1fr 1fr}
.iblock{padding:12px 13px;border-right:1px solid var(--border)}
.iblock:last-child{border-right:none}
.ilabel{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:5px}
.ival{font-size:24px;font-weight:600;color:var(--text);line-height:1}
.isub{font-size:11px;color:var(--muted);margin-top:2px}
.iload{font-size:11px;color:var(--muted);animation:pulse 1.5s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.exbtn{display:flex;align-items:center;gap:3px;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;font-size:11px;color:var(--primary-h);margin-top:4px;text-decoration:none}
.exbtn:hover{text-decoration:underline}
.blist{margin-top:7px;display:none}
.blist.open{display:block}
.bitem{font-size:11px;padding:3px 0;color:var(--text);border-bottom:1px solid var(--border);display:flex;justify-content:space-between}
.bitem:last-child{border:none}
.breason{color:var(--red);font-size:10px}
.ldot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;flex-shrink:0}
.ldot.alive{background:var(--accent);animation:lpulse 2s ease-in-out infinite}
@keyframes lpulse{0%,100%{box-shadow:0 0 0 2px rgba(13,158,126,.2)}50%{box-shadow:0 0 0 5px rgba(13,158,126,.05)}}
.ldot.pend{background:#f39c12}
.ldot.off{background:var(--border)}
.lstatus{font-size:12px;font-weight:500;line-height:1}
.lstatus.alive{color:var(--accent)}
.lstatus.pend{color:var(--amber)}
.lstatus.off{color:var(--muted)}
.ltime{font-size:10px;color:var(--muted);margin-top:3px}
.lupdated{font-size:11px;color:var(--muted);text-align:right;margin-top:14px}
.seglist{margin-top:6px;padding-top:6px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:4px}
.segitem{font-size:10px;color:var(--muted);line-height:1.2}
.segitem.has-comment{background:var(--red-bg);border:1px solid #f3c7c2;border-radius:6px;padding:5px 6px}
.segline{display:flex;align-items:center;justify-content:space-between;gap:8px}
.seg-popup-wrap{position:relative;display:flex;align-items:center}
.seg-expand-btn{border:1px solid #bfd3e6;background:#eef5fb;color:var(--primary-h);font-size:10px;font-weight:700;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1.2}
.seg-expand-btn:hover{background:#e3effa}
.seg-support{
  display:none;
  position:fixed;
  top:0;
  left:0;
  width:320px;
  max-width:320px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.16);
  z-index:2147483647;
  padding:8px;
}
.seg-support.open{display:block}
.seg-popup-title{font-size:11px;font-weight:600;color:var(--text);margin-bottom:6px}
.seg-comment-list{display:flex;flex-direction:column;gap:4px;max-height:120px;overflow:auto;padding-right:2px}
.seg-comment-item{background:#fff;border:1px solid var(--border);border-radius:6px;padding:6px}
.seg-comment-meta{font-size:10px;color:var(--muted);margin-bottom:2px}
.seg-comment-content{font-size:11px;color:var(--text);line-height:1.35}
.seg-comment-empty{font-size:11px;color:var(--muted)}
.seg-comment-form{margin-top:6px}
.seg-comment-form textarea{width:100%;min-height:52px;resize:vertical;border:1px solid var(--border);border-radius:6px;padding:6px;font-family:inherit;font-size:11px;color:var(--text)}
.seg-form-actions{margin-top:4px;display:flex;align-items:center;gap:8px}
.seg-send-btn{border:none;background:var(--primary);color:#fff;border-radius:6px;padding:5px 8px;font-size:11px;cursor:pointer}
.seg-send-btn:disabled{opacity:.65;cursor:default}
.seg-form-msg{font-size:10px;color:var(--muted)}
.support-merge{grid-column:1 / span 2;border-top:1px solid var(--border);padding:10px 13px;background:#f8fbff}
.support-merge-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:6px}
.support-composer{display:none;margin-bottom:8px}
.support-composer.open{display:block}
.support-composer textarea{width:100%;min-height:56px;resize:vertical;border:1px solid var(--border);border-radius:6px;padding:7px;font-family:inherit;font-size:12px}
.support-composer-actions{margin-top:6px;display:flex;align-items:center;gap:8px}
.support-send-btn{border:none;background:var(--primary);color:#fff;border-radius:6px;padding:5px 9px;font-size:11px;cursor:pointer}
.support-send-btn:disabled{opacity:.65;cursor:default}
.support-form-msg{font-size:11px;color:var(--muted)}
.support-empty{font-size:12px;color:var(--muted)}
.support-comment-list{display:flex;flex-direction:column;gap:6px;max-height:140px;overflow:auto}
.support-comment-item{background:#fff;border:1px solid var(--border);border-radius:6px;padding:6px}
.support-comment-meta{font-size:10px;color:var(--muted);margin-bottom:3px}
.support-comment-content{font-size:12px;color:var(--text)}

@media(max-width:600px){
  .seg-support{width:min(320px,80vw);max-width:80vw}
}
.view-switch{display:flex;gap:6px;align-items:center}
.view-btn{background:#fff;border:1px solid var(--border);color:var(--text);padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;font-family:inherit;cursor:pointer}
.view-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.chat-panel{display:none}
.chat-toolbar{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto auto;gap:8px;margin-bottom:10px}
.chat-toolbar input,.chat-toolbar select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:12px;font-family:inherit}
.chat-table-wrap{background:#fff;border:1px solid var(--border);border-radius:10px;overflow:auto}
.chat-table{width:100%;border-collapse:collapse;min-width:980px}
.chat-table th,.chat-table td{padding:8px 10px;border-bottom:1px solid var(--border);font-size:12px;text-align:left;vertical-align:top}
.chat-table th{background:#f6f9fc;font-size:11px;text-transform:uppercase;color:var(--muted)}
.chat-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.chat-page-summary{font-size:12px;color:var(--muted)}
.chat-page-nav{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.chat-page-nav button{font-family:inherit;font-size:12px}
.chat-page-edge,.chat-page-num{background:#fff;border:1px solid var(--border);padding:5px 10px;border-radius:6px;cursor:pointer;min-width:36px}
.chat-page-edge:disabled,.chat-page-num:disabled{opacity:.45;cursor:default}
.chat-page-num.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.chat-page-gap{padding:0 6px;color:var(--muted);user-select:none}
.chat-empty{padding:18px;color:var(--muted);text-align:center}
.content{position:relative}
.page-loading{
  position:absolute;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  gap:10px;
  background:rgba(240,244,248,.72);
  backdrop-filter:blur(1px);
  z-index:30;
  font-size:13px;
  font-weight:500;
  color:var(--primary);
}
.page-loading.active{display:flex}
.page-loading-spinner{
  width:18px;
  height:18px;
  border:2px solid rgba(26,79,122,.25);
  border-top-color:var(--primary);
  border-radius:50%;
  animation:spinLoading .8s linear infinite;
}
@keyframes spinLoading{to{transform:rotate(360deg)}}

@media(max-width:600px){
  #main-page{padding-top:156px}
  .hdr{
    height:auto;
    min-height:148px;
    padding:8px 10px 8px;
    row-gap:8px;
    column-gap:8px;
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    align-items:stretch;
    overflow:hidden;
  }
  .hbrand{
    order:1;
    width:100%;
    max-width:none;
    flex:none;
    font-size:12px;
    min-height:32px;
    padding:4px 7px;
    border-radius:20px;
    background:rgba(255,255,255,.12);
  }
  .hlogo{height:22px}
  .hbrand > span{font-size:11px}
  .hsep{display:none}
  .ubadge{
    order:2;
    margin-left:0;
    width:100%;
    max-width:none;
    flex:none;
    justify-content:flex-start;
    padding:4px 7px;
    gap:6px;
    min-width:0;
    min-height:32px;
  }
  .ubadge .uname{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    max-width:88px;
  }
  .datenav{
    order:3;
    width:100%;
    flex:none;
    min-width:0;
    max-width:none;
    min-height:40px;
    padding:4px 8px;
    gap:4px;
    border-radius:10px;
  }
  .datenav button{
    width:30px;
    height:30px;
    font-size:24px;
    font-weight:700;
    padding:0;
    line-height:1;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 30px;
  }
  .datenav input[type=date]{
    font-size:16px;
    font-weight:600;
    letter-spacing:.01em;
    flex:1 1 auto;
    min-width:0;
  }
  .datenav input[type=date]::-webkit-calendar-picker-indicator{
    margin-left:4px;
    transform:scale(1.2);
    transform-origin:center;
  }
  .today-btn{
    display:none;
  }
  .rfbtn{
    order:4;
    width:100%;
    flex:none;
    justify-content:center;
    min-width:0;
    max-width:none;
    min-height:40px;
    padding:0 8px;
    font-size:11px;
    line-height:1;
    white-space:nowrap;
  }
  .tagnav{
    order:7;
    grid-column:1 / -1;
    width:100%;
    margin-top:0;
    overflow:visible;
    justify-content:stretch;
    padding:0;
    flex-shrink:1;
    border-top:1px solid rgba(255,255,255,.2);
    border-radius:0;
    background:transparent;
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:10px;
  }
  .tagnav::-webkit-scrollbar{display:none}
  .tagbtn{
    width:100%;
    text-align:center;
    min-height:40px;
    padding:9px 8px;
    font-size:15px;
    font-weight:600;
    border-radius:10px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:rgba(255,255,255,.08);
    border:1px solid rgba(255,255,255,.16);
  }
  .uname,.rrole{display:inline}
  .uname{font-size:11px}
  .rrole{font-size:10px}
  .profile-menu{right:0;left:auto}
  .content{padding:10px}
  .dlabel{gap:8px;row-gap:6px;margin-bottom:12px;align-items:center}
  #label-prefix{order:1}
  #display-date{order:2}
  .scnt{order:3}
  .toggle-all-btn{
    order:4;
    margin-left:auto;
    white-space:nowrap;
  }
  .dlabel strong{font-size:14px}
  .view-switch{order:5;width:100%}
  .view-btn{flex:1 1 0;text-align:center}
  .toggle-all-btn{padding:4px 8px}
  .chat-toolbar{grid-template-columns:1fr}
  .chat-pagination{flex-direction:column;align-items:flex-start}

  .sessions-root{gap:10px}
  .srow{display:grid;grid-template-columns:1fr;gap:10px;overflow:visible;padding-bottom:0}
  .srow .scard{min-width:0;flex:1 1 auto;width:100%}
  .tgroup{margin-bottom:10px}
  .tghead{flex-wrap:wrap}
  .tgtitle{font-size:11px}

  .cbody{grid-template-columns:1fr 1fr}
  .iblock{
    border-right:1px solid var(--border);
    border-bottom:1px solid var(--border);
  }
  .iblock:nth-child(2n){border-right:none}
  .iblock:nth-child(3){
    grid-column:1 / -1;
    border-right:none;
  }
  .iblock:last-child{border-bottom:none}
  .support-merge{grid-column:1 / -1;padding:10px}

  .chdr{padding:10px 11px}
  .cname{font-size:12px}
  .ctime{font-size:11px}
  .iblock{padding:10px 10px}
  .ival{font-size:19px}
  .isub,.ltime{font-size:10px}
}

@media(max-width:420px){
  #main-page{padding-top:160px}
  .hdr{min-height:152px;padding:7px 8px 8px;row-gap:6px;column-gap:6px}
  .today-btn,.rfbtn{font-size:10px}
  .datenav{padding:4px 7px;min-height:38px;gap:4px}
  .datenav button{width:28px;height:28px;flex-basis:28px;font-size:22px;padding:0}
  .datenav input[type=date]{font-size:15px}
  .datenav input[type=date]::-webkit-calendar-picker-indicator{margin-left:3px;transform:scale(1.12)}
  .hbrand,.ubadge,.datenav,.rfbtn{width:100%;max-width:none}
  .ubadge{padding:4px 6px}
  .ubadge .uname{max-width:68px}
  .rfbtn{min-height:38px}
  .uavatar{width:24px;height:24px}
  .tagbtn{min-height:40px;padding:8px 6px;font-size:13px}
  .content{padding:8px}
  .cbadge,.cbadge-b{font-size:9px}
  .ctime{font-size:12px}
  .chat-table th,.chat-table td{padding:7px 8px}
}
