/* ==========================================================
   小云科技 · 统一主题层  site.css
   把全站(首页 / 服务 / 案例 / 资源 / 我的 / 卡网)收成一套视觉：
   纸感底色 · 衬线标题 · 细线分割 · 墨黑按钮 · 橙色点缀
   依赖 portal.css 的类结构，只做覆盖，不改模板
   ========================================================== */

:root{
  /* —— 唯一色板 —— */
  --paper:#fbfaf6;
  --paper-2:#f3f1ea;
  --ink:#16171b;
  --ink-2:#4b4e56;
  --ink-3:#7c808a;
  --line:#e0ddd3;
  --line-2:#d3cfc2;
  --accent:#17387d;
  --accent-soft:#e8ecf6;
  --hot:#c2410c;
  --brand:#0a84ff;
  --serif:"Songti SC","Source Han Serif SC","Noto Serif CJK SC","SimSun",Georgia,serif;
  --radius:2px;

  /* —— 映射 portal.css 的旧变量 —— */
  --primary:var(--accent);
  --primary-dark:#10295c;
  --primary-light:var(--accent-soft);
  --text:var(--ink);
  --text-secondary:var(--ink-2);
  --text-tertiary:var(--ink-3);
  --bg:var(--paper);
  --bg-alt:var(--paper-2);
  --card:#ffffff;
  --border:var(--line-2);
  --border-light:var(--line);
  --shadow-sm:none;
  --shadow-md:0 1px 2px rgba(22,23,27,.04);
  --shadow-lg:0 18px 40px -30px rgba(22,23,27,.4);
  --radius-sm:2px;
  --radius-md:2px;
  --radius-lg:2px;
  --radius-xl:2px;
}

[data-theme="dark"]{
  --paper:#141519;
  --paper-2:#1b1c21;
  --ink:#eceae4;
  --ink-2:#b3b5bc;
  --ink-3:#85888f;
  --line:#282a30;
  --line-2:#34373e;
  --accent:#9dbbff;
  --accent-soft:#1b2334;
  --hot:#ff8a5c;
  --card:#1a1b20;
  --primary-dark:#c9dbff;
  --bg:#141519;
  --bg-alt:#1b1c21;
}

/* ---------------- 基础 ---------------- */
body{
  background:var(--paper);
  color:var(--ink);
  font-size:14px;
  font-feature-settings:"tnum";
}
h1,h2,h3,.serif{
  font-family:var(--serif);
  font-weight:600;
  letter-spacing:-.01em;
}
::selection{background:rgba(194,65,12,.16)}
a{transition:color .15s ease}
.wrap{max-width:1180px;padding:0 22px}

/* ---------------- 顶栏 ---------------- */
.topbar{
  background:rgba(251,250,246,.9);
  border-bottom:1px solid var(--line);
  backdrop-filter:saturate(180%) blur(16px);
  -webkit-backdrop-filter:saturate(180%) blur(16px);
}
[data-theme="dark"] .topbar{background:rgba(20,21,25,.9)}
.topbar-in{height:58px;gap:16px}
.logo{gap:9px}
.logo-mark{
  width:30px;height:30px;border-radius:8px;
  background:var(--brand);font-family:var(--serif);
  font-size:16px;font-weight:400;
}
.logo-mark.big{width:42px;height:42px;font-size:19px;border-radius:10px}
.logo-text{gap:1px}
.logo-text b{font-size:15px;font-weight:650;letter-spacing:.02em}
.logo-text small{font-size:10px;letter-spacing:.1em;color:var(--ink-3)}

.topnav{gap:0}
.topnav a{
  padding:6px 11px;border-radius:0;font-size:13px;font-weight:500;
  color:var(--ink-3);background:none!important;
}
.topnav a:hover{color:var(--ink)}
.topnav a.on{color:var(--ink);font-weight:600}
.topnav a.on::after{
  content:"";display:block;height:1.5px;background:var(--hot);
  margin-top:3px;border-radius:1px;
}

.icon-btn{
  width:30px;height:30px;border-radius:2px;color:var(--ink-3);font-size:14px;
}
.icon-btn:hover{background:var(--paper-2);color:var(--ink)}
.icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round}

.btn{
  border-radius:var(--radius);font-size:13px;font-weight:600;
  padding:8px 16px;letter-spacing:.02em;
}
.btn-primary{background:var(--ink);color:var(--paper)}
.btn-primary:hover{background:var(--hot);color:#fff}
.btn-ghost{border:1px solid var(--line-2);color:var(--ink);background:transparent}
.btn-ghost:hover{background:var(--paper-2);border-color:var(--ink)}
.btn-outline{border:1px solid var(--ink);color:var(--ink)}
.btn-outline:hover{background:var(--ink);color:var(--paper)}
.btn-lg{padding:13px 26px;font-size:14px;border-radius:var(--radius)}

.user-btn{border-radius:2px;background:transparent;border:1px solid var(--line-2);padding:3px 10px 3px 3px}
.user-btn:hover{background:var(--paper-2)}
.avatar{border-radius:2px;background:var(--ink);font-size:11px}
.uname{font-size:12px;color:var(--ink-2)}
.admin-btn{background:var(--paper-2);border-radius:2px;color:var(--ink-2);font-size:11px}

.flash-notice{
  border-left:2px solid var(--hot);background:var(--paper-2);
  color:var(--ink-2);border-radius:0;font-size:12.5px;padding:11px 14px;
}
.portal-notice{
  border:0;border-left:2px solid var(--hot);background:var(--paper-2);
  color:var(--ink-2);border-radius:0;
}

/* ---------------- 页头 Hero ---------------- */
.portal-hero{
  text-align:left;
  padding:56px 0 46px;
  border-bottom:1px solid var(--line);
  background:
    linear-gradient(to right,rgba(0,0,0,.028) 1px,transparent 1px) 0 0 / 92px 100%,
    linear-gradient(to bottom,rgba(0,0,0,.028) 1px,transparent 1px) 0 0 / 100% 92px,
    var(--paper);
}
[data-theme="dark"] .portal-hero{
  background:
    linear-gradient(to right,rgba(255,255,255,.03) 1px,transparent 1px) 0 0 / 92px 100%,
    linear-gradient(to bottom,rgba(255,255,255,.03) 1px,transparent 1px) 0 0 / 100% 92px,
    var(--paper);
}
.portal-hero .wrap{max-width:860px;margin:0;padding:0 22px}
.hero-title{
  font-size:clamp(28px,4.4vw,44px);line-height:1.2;
  font-weight:600;letter-spacing:-.02em;margin-bottom:14px;
}
.hero-desc{font-size:14.5px;line-height:1.85;color:var(--ink-2);max-width:560px;margin-bottom:26px}
.gradient-text{color:var(--ink);font-weight:600;box-shadow:inset 0 -.16em 0 var(--accent-soft)}
.hero-stats{gap:28px}
.stat-item b{font-family:var(--serif);font-size:26px;font-weight:600;letter-spacing:-.02em}
.stat-item small{font-size:12px;color:var(--ink-3)}

.hero-search{
  border-radius:var(--radius);border:1px solid var(--line-2);
  background:#fff;padding:3px;max-width:520px;margin:0;
}
.hero-search:focus-within{border-color:var(--ink)}
.hero-search input{font-size:14px;color:var(--ink)}
.hero-search button{border-radius:1px;background:var(--ink);color:var(--paper);font-weight:600}
.hero-search button:hover{background:var(--hot)}

/* ---------------- 区块 ---------------- */
.portal-sec{padding:56px 0;border-top:1px solid var(--line)}
.portal-sec.alt{background:var(--paper-2)}
.sec-header{margin-bottom:30px;align-items:flex-end}
.sec-header h2{font-size:26px;letter-spacing:-.01em;margin-bottom:8px}
.sec-header.small h3{font-size:17px;font-weight:650;letter-spacing:0}
.sec-header p{font-size:13.5px;line-height:1.8;color:var(--ink-2);max-width:520px}
.more-link{color:var(--accent);font-size:12.5px;font-weight:500;border-bottom:1px solid currentColor;padding-bottom:1px}
.more-link:hover{color:var(--hot)}

/* ---------------- 卡片 / 列表 ---------------- */
.quick-card,.trending-item,.service-card,.case-card,.prow,.skill-row,.tut-row,.rank-shortcuts a,.cta-block{
  background:#fff;border:1px solid var(--line-2);border-radius:var(--radius);
  box-shadow:none;
}
[data-theme="dark"] .quick-card,
[data-theme="dark"] .trending-item,
[data-theme="dark"] .service-card,
[data-theme="dark"] .case-card,
[data-theme="dark"] .prow,
[data-theme="dark"] .skill-row,
[data-theme="dark"] .tut-row,
[data-theme="dark"] .rank-shortcuts a,
[data-theme="dark"] .cta-block{background:var(--paper)}

.quick-card:hover,.trending-item:hover,.service-card:hover,.case-card:hover,
.prow:hover,.skill-row:hover,.tut-row:hover,.rank-shortcuts a:hover,.cta-block:hover{
  border-color:var(--ink-3);background:var(--paper-2);transform:none;box-shadow:none;
}
.qic,.si,.pi,.service-icon,.tcat{
  background:var(--paper-2);color:var(--ink-2);border-radius:2px;font-size:15px;
}
.quick-card:hover .qic{background:var(--ink);color:var(--paper)}
.quick-card b{font-size:12.5px;font-weight:650}
.quick-card small{font-size:10.5px}

.service-grid{gap:0;border-top:1px solid var(--line-2);border-left:1px solid var(--line-2)}
.service-card{
  border:0;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);
  border-radius:0;padding:24px 24px 20px;min-height:200px;
  display:flex;flex-direction:column;
}
[data-theme="dark"] .service-card{border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.service-icon{
  display:block;width:auto;height:auto;background:none;border:0;border-radius:0;
  font-family:var(--serif);font-size:12px;color:var(--hot);line-height:1;
  letter-spacing:.08em;margin-bottom:14px;
}
.service-card h4{font-size:16px;font-weight:650;letter-spacing:-.01em;margin-bottom:8px}
.service-card p{font-size:12.5px;line-height:1.8;color:var(--ink-2)}
.service-footer{border-top:1px dashed var(--line);margin-top:16px;padding-top:12px}
.service-footer .price{font-weight:600;color:var(--ink)}

.cases-grid{gap:0;border-top:1px solid var(--line-2)}
.case-card{border:0;border-bottom:1px solid var(--line-2);border-radius:0;padding:0}
.case-cover{background:var(--paper-2)}
.case-info h4{font-family:var(--serif);font-size:17px;font-weight:600}
.trend-rank{border-radius:2px;background:var(--paper-2)}
.trending-item:nth-child(1) .trend-rank,
.trending-item:nth-child(2) .trend-rank,
.trending-item:nth-child(3) .trend-rank{background:var(--ink);color:var(--paper)}
.trend-name{font-weight:650}
.trend-meta .up{color:var(--hot)}

/* ---------------- 空状态 ---------------- */
.empty-state{
  border:1px dashed var(--line-2);background:var(--paper-2);
  border-radius:var(--radius);color:var(--ink-3);font-size:12.5px;
  padding:44px 20px;text-align:center;letter-spacing:.04em;
}

/* ---------------- 占位页 ---------------- */
.stub-mark{
  width:46px;height:46px;margin:0 auto 20px;
  border:1px solid var(--line-2);border-radius:2px;
  display:flex;align-items:center;justify-content:center;color:var(--ink-3);
}
.stub-mark svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;
  stroke-linecap:round;stroke-linejoin:round}

/* ---------------- 表单 ---------------- */
.form-control{
  border:1px solid var(--line-2);border-radius:var(--radius);
  background:#fff;font-size:13.5px;padding:10px 12px;color:var(--ink);
}
.form-control:focus{border-color:var(--ink);outline:none}
.form-group label{font-size:12px;letter-spacing:.04em;color:var(--ink-3);font-weight:500}

/* ---------------- 表格 ---------------- */
table{border:1px solid var(--line);border-radius:0;background:#fff}
th{background:var(--paper-2);font-size:11px;letter-spacing:.08em;color:var(--ink-3);font-weight:600}
th,td{border-bottom:1px solid var(--line)}

/* ---------------- 页脚 ---------------- */
.portal-foot{
  background:var(--paper);border-top:1px solid var(--line);
  padding:44px 0 0;margin-top:0;
}
.foot-grid{gap:36px}
.foot-brand .site-title{font-size:16px;font-weight:650;margin-bottom:6px}
.foot-brand small{font-size:12px;line-height:1.8;color:var(--ink-2)}
.foot-col h4{
  font-size:10.5px;font-weight:600;letter-spacing:.18em;
  color:var(--ink-3);text-transform:uppercase;margin-bottom:14px;
}
.foot-col a,.foot-col span{font-size:12.5px;color:var(--ink-2);margin-bottom:9px}
.foot-col a:hover{color:var(--hot)}
.portal-foot .foot-bottom{
  border-top:1px solid var(--line);margin-top:34px;padding:16px 0 26px;
  font-size:11px;color:var(--ink-3);
}

/* ---------------- 底部导航 ---------------- */
.bottomnav{
  background:rgba(251,250,246,.92);border-top:1px solid var(--line);
  height:60px;
}
[data-theme="dark"] .bottomnav{background:rgba(20,21,25,.92)}
.bottomnav a{font-size:9.5px;letter-spacing:.04em;color:var(--ink-3);gap:2px;padding:6px 0 5px}
.bottomnav a svg{width:21px;height:21px;stroke-width:1.5;margin-bottom:1px}
.bottomnav a.on{color:var(--accent);font-weight:600}
.bottomnav a.on::before{
  content:"";position:absolute;top:0;width:18px;height:2px;
  background:var(--accent);border-radius:0 0 2px 2px;
}
.bottomnav a{position:relative}

/* ---------------- 移动端 ---------------- */
@media (max-width:768px){
  .wrap{padding:0 20px}
  .portal-hero{padding:40px 0 34px}
  .portal-hero .wrap{padding:0 20px}
  .hero-title{font-size:27px;margin-bottom:12px}
  .hero-desc{font-size:13.5px}
  .portal-sec{padding:44px 0}
  .sec-header{margin-bottom:24px}
  .sec-header h2{font-size:22px}
  .service-grid{border-left:0}
  .service-card{border-left:1px solid var(--line-2);border-right:0;min-height:0;padding:20px}
  .foot-grid{gap:28px}
  .portal-foot{padding-bottom:0}
  .portal-foot .foot-bottom{padding-bottom:calc(60px + env(safe-area-inset-bottom))}
}
@media (max-width:480px){
  .wrap{padding:0 18px}
  .portal-hero .wrap{padding:0 18px}
}
