/* ====== RESET & BASE ====== */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#2F5D50;
  --primary-light:#456d60;
  --primary-lighter:#5a8073;
  --accent:#9A6A2A;
  --accent-light:#b8853a;
  --bg:#FAF8F5;
  --surface:#FFFFFF;
  --text:#2A2A28;
  --muted:#8A8580;
  --border:#E8E0D5;
  --shadow:0 2px 12px rgba(0,0,0,0.06);
  --shadow-lg:0 10px 34px rgba(47,93,80,0.12);
  --radius:16px;
  --radius-sm:10px;
}
html{font-size:14px;-webkit-tap-highlight-color:transparent}
body{
  font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  background:#ece8e1;color:var(--text);min-height:100dvh;
  display:flex;justify-content:center;line-height:1.6;
}
.serif{font-family:"Noto Serif SC","STSong","SimSun",serif}

/* ====== APP SHELL ====== */
.app{
  width:100%;max-width:480px;height:100dvh;
  background:var(--bg);display:flex;flex-direction:column;
  position:relative;box-shadow:0 0 40px rgba(0,0,0,0.06);
}
.topbar{
  display:flex;align-items:center;gap:12px;
  padding:13px 18px 10px;background:var(--surface);
  border-bottom:1px solid var(--border);flex-shrink:0;
}
.brand-mark{
  width:38px;height:38px;border-radius:11px;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary),var(--primary-light));
  display:flex;align-items:center;justify-content:center;
}
.brand-mark svg{width:22px;height:22px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-name{font-family:"Noto Serif SC",serif;font-size:16px;font-weight:700;color:var(--primary);letter-spacing:1px}
.brand-tag{font-size:10px;color:var(--muted);letter-spacing:1px}

.content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-ms-overflow-style:none;scrollbar-width:none;padding-bottom:12px}
.content::-webkit-scrollbar{display:none}

/* ====== PAGE HEADER ====== */
.page-header{padding:14px 20px 4px}
.page-title{font-family:"Noto Serif SC",serif;font-size:24px;font-weight:700;color:var(--primary);letter-spacing:2px}
.page-subtitle{font-size:12px;color:var(--muted);margin-top:4px;letter-spacing:.5px;line-height:1.5}

/* ====== 排盘 HOME ====== */
.hero{margin:12px 16px 6px;padding:16px 18px;border-radius:var(--radius);
  background:linear-gradient(135deg,#fff,#f3f1ec);border:1px solid var(--border);box-shadow:var(--shadow)}
.hero h1{font-family:"Noto Serif SC",serif;font-size:22px;font-weight:700;color:var(--primary);letter-spacing:2px}
.hero p{font-size:12px;color:var(--muted);margin-top:4px;letter-spacing:0}

.sec-head{display:flex;align-items:baseline;gap:10px;margin:14px 16px 10px}
.sec-title{font-family:"Noto Serif SC",serif;font-size:16px;font-weight:700;color:var(--text);letter-spacing:1px}
.sec-line{flex:1;height:1px;background:var(--border)}
.sec-hint{font-size:11px;color:var(--muted)}

.entries{padding:0 14px 4px;display:flex;flex-direction:column;gap:12px}
.entry{display:flex;align-items:center;gap:14px;background:var(--surface);cursor:pointer;
  border:1px solid var(--border);border-radius:var(--radius);padding:14px;
  text-decoration:none;color:inherit;box-shadow:var(--shadow);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;position:relative}
.entry:active{transform:scale(.985)}
@media(hover:hover){.entry:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--primary-lighter)}}
.entry-icon{width:52px;height:52px;border-radius:13px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.entry-icon svg{width:28px;height:28px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.icon-green{background:linear-gradient(135deg,var(--primary),var(--primary-light))}
.icon-gold{background:linear-gradient(135deg,var(--accent),var(--accent-light))}
.entry-body{flex:1;min-width:0}
.entry-name{font-size:16px;font-weight:700;color:var(--text);letter-spacing:1px}
.entry-sub{font-size:11.5px;color:var(--primary);font-weight:600;margin:2px 0 4px;letter-spacing:.5px}
.entry-desc{font-size:11.5px;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.entry-go{flex-shrink:0;align-self:center;font-size:13px;font-weight:600;color:var(--primary);display:flex;align-items:center;gap:2px;transition:transform .18s ease}
@media(hover:hover){.entry:hover .entry-go{transform:translateX(3px)}}
.entry.soon{opacity:.7;cursor:default}
.entry.soon:active{transform:none}
.entry.soon .entry-icon{background:linear-gradient(135deg,#9a958d,#b9b3a8)}

.footer{margin-top:12px;padding:16px 16px 6px;text-align:center}
.disclaimer{font-size:10.5px;color:var(--muted);line-height:1.7;letter-spacing:.3px}
.copy{font-size:11px;color:var(--border);margin-top:8px}

/* ====== 研习 ====== */
.search-bar{display:flex;align-items:center;gap:8px;margin:6px 20px 2px;
  background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:9px 14px}
.search-bar svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:2;stroke-linecap:round;flex-shrink:0}
.search-bar input{flex:1;border:none;outline:none;background:transparent;font-size:13px;color:var(--text)}

.content-tabs{display:flex;margin:10px 20px 8px;border-bottom:1px solid var(--border)}
.content-tab{flex:1;text-align:center;padding:9px 0;font-size:13px;color:var(--muted);
  cursor:pointer;border-bottom:2px solid transparent;transition:all .2s;font-weight:500}
.content-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700}

.tab-panel{display:none;padding:0 16px}
.tab-panel.active{display:block}

.cat-tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;-ms-overflow-style:none;scrollbar-width:none}
.cat-tabs::-webkit-scrollbar{display:none}
.cat-tab{flex-shrink:0;font-size:12px;padding:5px 14px;border-radius:20px;background:var(--surface);
  border:1px solid var(--border);color:var(--muted);cursor:pointer;transition:all .2s;white-space:nowrap}
.cat-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* course card */
.course-card{display:flex;align-items:center;gap:12px;background:var(--surface);
  border:1px solid var(--border);border-radius:12px;padding:10px;margin-bottom:8px;
  box-shadow:var(--shadow);cursor:pointer;transition:transform .15s}
.course-card:active{transform:scale(.985)}
.course-thumb{width:68px;height:68px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.bagua-deco{width:42px;height:42px;opacity:.92}
.bagua-deco svg{width:100%;height:100%;stroke:#fff;fill:none;stroke-width:2}
.course-info{flex:1;min-width:0}
.course-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:4px}
.course-meta{font-size:11px;color:var(--muted)}
.course-meta .dot{margin:0 5px}
.course-bottom{display:flex;align-items:center;gap:8px;margin-top:6px}
.course-price{font-size:14px;font-weight:700;color:var(--primary)}
.badge-free{font-size:10px;padding:2px 8px;border-radius:20px;background:rgba(47,93,80,.1);color:var(--primary);font-weight:600}
.badge-paid{font-size:10px;padding:2px 8px;border-radius:20px;background:rgba(154,106,42,.12);color:var(--accent);font-weight:600}
.ph-green{background:linear-gradient(135deg,var(--primary),var(--primary-light))}
.ph-gold{background:linear-gradient(135deg,var(--accent),var(--accent-light))}
.ph-brown{background:linear-gradient(135deg,#5B3A29,#7a5236)}
.ph-dark{background:linear-gradient(135deg,#2A2A28,#4a4a47)}

/* article card */
.article-card{background:var(--surface);border-radius:12px;padding:12px;margin-bottom:8px;
  border:1px solid var(--border);box-shadow:var(--shadow);cursor:pointer;transition:transform .15s}
.article-card:active{transform:scale(.985)}
.article-tag{display:inline-block;font-size:10px;padding:2px 8px;border-radius:4px;background:rgba(47,93,80,.1);color:var(--primary);font-weight:600;margin-bottom:8px}
.article-title{font-size:15px;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:6px}
.article-summary{font-size:12px;color:var(--muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:8px}
.article-meta{font-size:11px;color:var(--muted)}

/* video card */
.video-card{margin-bottom:10px;cursor:pointer;transition:transform .15s}
.video-card:active{transform:scale(.985)}
.video-thumb{position:relative;border-radius:12px;overflow:hidden;height:150px;display:flex;align-items:center;justify-content:center}
.play-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:48px;height:48px;background:rgba(0,0,0,.45);border-radius:50%;display:flex;align-items:center;justify-content:center}
.play-icon svg{width:20px;height:20px;fill:#fff;stroke:none}
.video-duration{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:2px 7px;border-radius:6px}
.video-title{font-size:14px;font-weight:600;color:var(--text);margin-top:8px;line-height:1.4}
.video-meta{font-size:11px;color:var(--muted);margin-top:3px}
.v-now{font-size:13px;color:var(--text);margin:6px 0 12px}
.v-now span{color:var(--accent);font-weight:600}
.v-lessons{list-style:none;margin:0;padding:0 0 8px}
.v-lesson{padding:12px 14px;border:1px solid var(--border);border-radius:10px;margin-bottom:8px;font-size:14px;color:var(--text);cursor:pointer;transition:background .15s,border-color .15s}
.v-lesson:active{background:rgba(140,106,60,.08)}
.v-lesson.active{background:rgba(140,106,60,.13);border-color:var(--accent);color:var(--accent);font-weight:600}

.empty-note{text-align:center;color:var(--muted);font-size:12px;padding:16px 0}

/* ====== 我的 ====== */
.profile{margin:16px 20px;padding:22px 20px;border-radius:var(--radius);background:var(--surface);
  border:1px solid var(--border);box-shadow:var(--shadow);display:flex;align-items:center;gap:16px}
.avatar{width:64px;height:64px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--primary),var(--primary-light));
  display:flex;align-items:center;justify-content:center}
.avatar svg{width:36px;height:36px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.profile-info{flex:1;min-width:0}
.profile-name{font-size:18px;font-weight:700;color:var(--text);letter-spacing:1px}
.profile-hint{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}
.mine-sec{padding:0 20px}
.mine-sec .sec-head{margin:8px 0 12px}
.mine-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px;
  box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;transition:transform .15s}
.mine-card:active{transform:scale(.985)}
.mine-card .mc-title{font-size:14px;font-weight:600;color:var(--text)}
.mine-card .mc-sub{font-size:12px;color:var(--muted);margin-top:3px}
.mine-go{font-size:13px;font-weight:600;color:var(--primary);flex-shrink:0}

/* ====== BOTTOM NAV ====== */
.bottom-nav{display:flex;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 9px;cursor:pointer;color:var(--muted);transition:color .2s}
.nav-item svg{width:24px;height:24px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:all .2s}
.nav-item span{font-size:11px;transition:all .2s}
.nav-item.active{color:var(--primary)}
.nav-item.active svg{stroke:var(--primary)}
.nav-item.active span{color:var(--primary);font-weight:600}
.nav-item:active svg{transform:scale(.9)}

/* ====== TOAST ====== */
.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%) translateY(10px);
  background:rgba(42,42,40,.92);color:#fff;font-size:13px;padding:10px 18px;border-radius:22px;
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:999;max-width:80%;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.paipan-tip{margin:0 16px 12px;font-size:11.5px;color:var(--muted);line-height:1.6;background:rgba(47,93,80,.06);border:1px solid var(--border);border-radius:12px;padding:10px 14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 短屏适配：压缩排盘页，确保单屏无需滚动 */
@media (max-height:600px){
  .hero{margin-top:8px;padding:12px 16px}
  .hero h1{font-size:20px}
  .sec-head{margin:10px 16px 8px}
  .entries{gap:10px}
  .entry{padding:12px}
  .entry-icon{width:46px;height:46px}
  .footer{margin-top:8px;padding:12px 16px 4px}
  .paipan-tip{margin:0 14px 8px;padding:8px 12px;font-size:10.5px}
}
.hidden{display:none!important}
.sub-view{display:none;flex-direction:column;height:100%}
.sub-view.active{display:flex}
.sub-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.sub-back{font-size:13px;color:var(--primary);background:none;border:none;cursor:pointer;font-weight:600;padding:4px 4px}
.sub-title{font-family:"Noto Serif SC",serif;font-size:15px;font-weight:700;color:var(--primary);letter-spacing:1px}
.sub-frame{flex:1;width:100%;border:none;min-height:0;background:var(--bg)}
.content.has-sub{overflow:hidden;padding-bottom:0}
/* 课程详情（点击课程卡打开 · 简单版） */
.course-detail{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}
#sub-course,#sub-video{position:absolute;inset:0;background:var(--bg);z-index:10}
.video-detail{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}
#sub-video .vp-wrap{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:12px;overflow:hidden;margin-bottom:14px}
#sub-video .vp-wrap iframe,#sub-video .vp-wrap video{position:absolute;inset:0;width:100%;height:100%;border:none;background:#000;object-fit:contain}
.video-info{padding:10px 14px 12px}
.cd-cover{height:150px;border-radius:16px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:var(--shadow)}
.cd-cover .bagua-deco{width:72px;height:72px}
.cd-cat{display:inline-block;font-size:11px;color:var(--primary);background:rgba(47,93,80,.08);padding:3px 10px;border-radius:20px;font-weight:600;margin-bottom:10px}
.cd-title{font-family:'Noto Serif SC',serif;font-size:20px;font-weight:800;color:var(--text);line-height:1.4;margin-bottom:8px}
.cd-meta{font-size:12px;color:var(--muted);margin-bottom:12px}
.cd-price-row{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.cd-price{font-size:20px;font-weight:800;color:var(--primary)}
.cd-badge{font-size:10px;padding:2px 8px;border-radius:20px;font-weight:600}
.cd-desc{font-size:13.5px;color:var(--text);line-height:1.7;margin-bottom:22px;opacity:.9}
.cd-sec-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:10px;padding-left:8px;border-left:3px solid var(--primary)}
.cd-lessons{list-style:none;padding:0;margin:0 0 12px}
.cd-lessons li{font-size:13px;color:var(--muted);padding:9px 2px;border-bottom:1px solid var(--border)}
.cd-action{flex-shrink:0;padding:12px 16px;background:var(--surface);border-top:1px solid var(--border)}
.cd-action .btn-main{width:100%;border:none;border-radius:10px;padding:13px;font-size:15px;font-weight:700;cursor:pointer;background:var(--accent);color:#fff}
