/* =====================================================================
   图了个AI · 共享设计系统 (Design System)
   Retro Cartoon Flat · 复古卡通扁平化
   所有页面复用此文件，改一次全局生效
   ===================================================================== */

:root{
  --bg: #FFFBF0;
  --ink: #1a1a1a;
  --coral: #FF6B6B;
  --mint: #4ECDC4;
  --sky: #45B7D1;
  --yellow: #FFBE0B;
  --orange: #FB5607;
  --purple: #B39DDB;
  --pink: #FFB3C1;
  --cream: #FFF3D6;
  --green: #7BC96F;
  --line: 4px;
  --radius: 28px;
  --radius-sm: 16px;
  --font-head: 'Fredoka','Comic Neue','Nunito',sans-serif;
  --font-body: 'Nunito','Comic Neue',sans-serif;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  background-image:
    radial-gradient(circle at 15% 15%, rgba(255,190,11,.12) 0 45px, transparent 45px),
    radial-gradient(circle at 85% 12%, rgba(255,107,107,.10) 0 55px, transparent 55px),
    radial-gradient(circle at 70% 92%, rgba(78,205,196,.12) 0 60px, transparent 60px),
    radial-gradient(circle at 25% 88%, rgba(69,183,209,.10) 0 45px, transparent 45px);
  font-family:var(--font-body);
  color:var(--ink);
  line-height:1.6;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
.wrap{max-width:1120px;margin:0 auto;padding:0 22px;width:100%;}
main{flex:1;padding:30px 0 20px;}

/* ---------- 通用描边/容器 ---------- */
.b4{border:var(--line) solid var(--ink);}
.card{background:#fff;border:var(--line) solid var(--ink);border-radius:var(--radius);padding:26px 28px;position:relative;}
.card-off{box-shadow:7px 7px 0 rgba(26,26,26,.08);}
.pill{display:inline-flex;align-items:center;gap:8px;border:3px solid var(--ink);border-radius:999px;padding:6px 16px;font-weight:800;font-size:.85rem;letter-spacing:.3px;}
.tag{display:inline-block;border:3px solid var(--ink);border-radius:12px;padding:4px 12px;font-weight:800;font-size:.8rem;background:#000;color:#fff;}
.diff{display:inline-flex;align-items:center;gap:6px;border:3px solid var(--ink);border-radius:999px;padding:3px 12px;font-weight:900;font-size:.78rem;}
.diff.easy{background:var(--mint);}
.diff.mid{background:var(--yellow);}
.diff.hard{background:var(--coral);}

/* ---------- 顶部导航 ---------- */
.nav{position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:var(--line) solid var(--ink);padding:12px 0;}
.nav .inner{display:flex;align-items:center;gap:18px;}
.nav .logo{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-weight:700;font-size:1.35rem;letter-spacing:-.3px;color:var(--ink);text-decoration:none;}
.nav .logo .m{width:42px;height:42px;border:var(--line) solid var(--ink);border-radius:12px;background:var(--yellow);display:flex;align-items:center;justify-content:center;font-size:1.5rem;transform:rotate(-4deg);}
.nav .links{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}
.nav .links a{font-family:var(--font-head);font-weight:600;color:var(--ink);text-decoration:none;border:3px solid transparent;border-radius:999px;padding:6px 16px;transition:.15s;}
.nav .links a:hover{border-color:var(--ink);background:var(--yellow);}
.nav .links a.active{background:#000;color:#fff;}

/* ---------- HERO ---------- */
.hero{text-align:center;padding:20px 0 34px;position:relative;}
.hero .kicker{display:inline-block;background:var(--yellow);border:var(--line) solid var(--ink);border-radius:999px;padding:8px 22px;font-weight:900;font-size:.95rem;margin-bottom:20px;transform:rotate(-2deg);}
.hero h1{font-family:var(--font-head);font-size:clamp(2.2rem,6.5vw,4.4rem);font-weight:700;line-height:1.08;letter-spacing:-.5px;text-transform:uppercase;}
.hero h1 .hl{background:var(--coral);padding:0 12px;border:var(--line) solid var(--ink);border-radius:18px;display:inline-block;transform:rotate(-1.5deg);}
.hero h1 .hl.green{background:var(--mint);transform:rotate(1.5deg);}
.hero .sub{margin-top:20px;font-weight:700;font-size:clamp(1rem,2.4vw,1.3rem);color:#444;}
.hero .chips{margin-top:24px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

/* ---------- 栏目区块标题 ---------- */
.sec{display:flex;align-items:center;gap:16px;margin:44px 0 22px;}
.sec .num{width:58px;height:58px;flex:0 0 58px;border:var(--line) solid var(--ink);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;transform:rotate(-3deg);}
.sec h2{font-family:var(--font-head);font-size:clamp(1.5rem,4vw,2.2rem);font-weight:700;letter-spacing:-.3px;}
.sec .line{flex:1;height:var(--line);background:var(--ink);border-radius:99px;opacity:.15;}
.sec .line.solid{opacity:1;background:var(--yellow);}
.sec .sub-p{margin-top:4px;font-weight:700;color:#666;font-size:.95rem;}

/* ---------- 卡片网格 ---------- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.grid2 .card h3{font-family:var(--font-head);font-size:1.25rem;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.grid2 .card p{font-weight:600;color:#333;font-size:1.02rem;}
.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;}

/* ---------- 图解示例(双栏对比 + 步骤链) ---------- */
.example-box{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px;}
.ex{position:relative;}
.ex .ex-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:800;font-size:1.05rem;}
.ex .balloon{position:relative;background:#fff;border:var(--line) solid var(--ink);border-radius:22px;padding:16px 18px;font-weight:700;font-size:.98rem;}
.ex .balloon::after{content:"";position:absolute;top:-18px;left:34px;width:0;height:0;border:10px solid transparent;border-bottom-color:var(--ink);}
.ex .balloon::before{content:"";position:absolute;top:-12px;left:38px;width:0;height:0;border:8px solid transparent;border-bottom-color:#fff;}
.ex .chain{margin-top:14px;display:flex;flex-direction:column;gap:8px;}
.ex .chain .step{display:flex;align-items:center;gap:10px;background:#fff;border:3px solid var(--ink);border-radius:14px;padding:8px 14px;font-weight:700;font-size:.9rem;}
.ex .chain .step .snum{width:28px;height:28px;flex:0 0 28px;border:3px solid var(--ink);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:.85rem;}

/* ---------- 循环流程 ---------- */
.cycle-wrap{border:3px dashed var(--ink);border-radius:22px;padding:20px;background:#fff;margin-top:22px;}
.cycle{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:16px 0;}
.cnode{border:var(--line) solid var(--ink);border-radius:16px;padding:14px 18px;text-align:center;font-family:var(--font-head);font-weight:900;font-size:1rem;min-width:130px;}
.cnode small{display:block;font-family:var(--font-body);font-weight:700;font-size:.75rem;margin-top:4px;opacity:.75;}
.carrow{font-size:1.7rem;font-weight:900;}
.legend{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;font-weight:700;font-size:.85rem;margin-top:12px;}

/* ---------- 对话演示 ---------- */
.demo{margin-top:22px;background:var(--cream);border:var(--line) solid var(--ink);border-radius:22px;padding:20px;}
.demo .title{font-family:var(--font-head);font-weight:900;font-size:1.05rem;margin-bottom:12px;}
.demo .dline{display:flex;gap:10px;align-items:flex-start;margin:8px 0;font-weight:700;}
.demo .who{flex:0 0 84px;border:3px solid var(--ink);border-radius:10px;padding:4px 8px;text-align:center;font-weight:900;font-size:.85rem;}
.demo .msg{background:#fff;border:3px solid var(--ink);border-radius:12px;padding:6px 12px;flex:1;font-size:.92rem;}

/* ---------- 关系对比 ---------- */
.relation{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;margin-bottom:8px;}
.rel-card{padding:24px;text-align:center;}
.rel-card .big{font-size:3.2rem;line-height:1;margin-bottom:8px;}
.rel-card h4{font-family:var(--font-head);font-size:1.3rem;font-weight:800;margin-bottom:8px;}
.rel-card p{font-weight:700;color:#333;font-size:.95rem;}
.rel-vs{font-size:2rem;font-weight:900;border:var(--line) solid var(--ink);border-radius:50%;width:74px;height:74px;display:flex;align-items:center;justify-content:center;background:var(--yellow);}
.equation{text-align:center;margin-top:26px;background:#000;color:#fff;border:var(--line) solid var(--ink);border-radius:18px;padding:16px;font-family:var(--font-head);font-size:clamp(1.2rem,3vw,1.7rem);font-weight:800;letter-spacing:1px;}

/* ---------- 表格 ---------- */
.tbl{border-collapse:separate;border-spacing:0;width:100%;border:var(--line) solid var(--ink);border-radius:18px;overflow:hidden;background:#fff;font-weight:700;}
.tbl th,.tbl td{border-bottom:3px solid var(--ink);padding:14px 16px;text-align:left;}
.tbl th{font-family:var(--font-head);font-weight:800;font-size:1.05rem;}
.tbl tr:last-child th,.tbl tr:last-child td{border-bottom:none;}
.tbl td:first-child{background:#FFF7E0;font-weight:900;}
.tbl .yes{color:#1a7a1a;font-weight:900;}
.tbl .no{color:#c0392b;font-weight:900;}

/* ---------- 小贴士 ---------- */
.tips{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.tip{display:flex;gap:14px;align-items:flex-start;background:#fff;border:3px solid var(--ink);border-radius:18px;padding:16px 18px;}
.tip .icon{flex:0 0 44px;height:44px;border:3px solid var(--ink);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;}
.tip h5{font-family:var(--font-head);font-weight:800;font-size:1.05rem;margin-bottom:4px;}
.tip p{font-weight:700;color:#333;font-size:.9rem;}

/* ---------- 一句话总结(黑色横幅) ---------- */
.takeaway{margin-top:30px;background:#000;color:#fff;border:var(--line) solid var(--ink);border-radius:22px;padding:22px 26px;text-align:center;}
.takeaway .lbl{display:inline-block;background:var(--yellow);color:var(--ink);border:3px solid var(--ink);border-radius:999px;padding:4px 16px;font-weight:900;font-size:.8rem;margin-bottom:10px;}
.takeaway p{font-family:var(--font-head);font-size:clamp(1.2rem,3vw,1.6rem);font-weight:700;line-height:1.4;}

/* ---------- 文章正文段落 ---------- */
.para{margin-top:22px;}
.para p{font-weight:600;color:#333;font-size:1.05rem;margin-bottom:12px;}
.para p b{color:var(--ink);}

/* ---------- 学习路径 ---------- */
.path{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;counter-reset:path;}
.path .node{position:relative;background:#fff;border:var(--line) solid var(--ink);border-radius:20px;padding:20px;text-align:center;counter-increment:path;}
.path .node .pn{width:46px;height:46px;margin:0 auto 10px;border:var(--line) solid var(--ink);border-radius:14px;display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-weight:900;font-size:1.3rem;transform:rotate(-3deg);}
.path .node h4{font-family:var(--font-head);font-size:1.15rem;font-weight:800;margin-bottom:8px;}
.path .node p{font-weight:700;color:#333;font-size:.9rem;min-height:2.6em;}
.path .arrow{position:absolute;right:-16px;top:50%;transform:translateY(-50%);font-size:1.6rem;font-weight:900;z-index:2;}
.path .node:last-child .arrow{display:none;}

/* ---------- 首页卡片瀑布 ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.tcard{display:flex;flex-direction:column;background:#fff;border:var(--line) solid var(--ink);border-radius:20px;overflow:hidden;text-decoration:none;color:var(--ink);transition:transform .15s, box-shadow .15s;}
.tcard:hover{transform:translate(-3px,-3px);box-shadow:7px 7px 0 rgba(26,26,26,.15);}
.tcard .thumb{height:120px;border-bottom:var(--line) solid var(--ink);display:flex;align-items:center;justify-content:center;font-size:3rem;}
.tcard .body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1;}
.tcard .meta{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap;}
.tcard h3{font-family:var(--font-head);font-size:1.2rem;font-weight:700;line-height:1.25;margin-bottom:8px;}
.tcard .desc{font-weight:600;color:#555;font-size:.9rem;flex:1;}
.tcard .foot{margin-top:14px;padding-top:12px;border-top:3px dashed var(--ink);display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:.82rem;color:#333;}
.cat{display:inline-flex;align-items:center;gap:6px;border:3px solid var(--ink);border-radius:999px;padding:2px 10px;font-weight:900;font-size:.72rem;}

/* ---------- 分类过滤 ---------- */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px;}
.fbtn{border:3px solid var(--ink);border-radius:999px;padding:7px 18px;font-family:var(--font-head);font-weight:700;cursor:pointer;background:#fff;color:var(--ink);font-size:.9rem;}
.fbtn:hover{background:var(--yellow);}
.fbtn.on{background:#000;color:#fff;}

/* ---------- 文章页顶部 ---------- */
.art-head{text-align:center;padding:14px 0 26px;}
.art-head .meta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:18px;}
.art-head h1{font-family:var(--font-head);font-size:clamp(1.8rem,5vw,3.2rem);font-weight:700;line-height:1.12;letter-spacing:-.3px;}
.art-head .sub{margin-top:14px;font-weight:700;color:#555;font-size:1.1rem;max-width:720px;margin-left:auto;margin-right:auto;}
.art-toc{margin:22px 0;background:#fff;border:var(--line) solid var(--ink);border-radius:18px;padding:18px 22px;}
.art-toc h4{font-family:var(--font-head);font-weight:800;margin-bottom:10px;}
.art-toc ol{padding-left:22px;font-weight:700;}
.art-toc li{margin:4px 0;}
.art-toc a{color:var(--ink);text-decoration:none;border-bottom:3px solid var(--yellow);}
.art-nav{display:flex;gap:16px;margin:30px 0;}
.art-nav a{flex:1;border:3px solid var(--ink);border-radius:16px;padding:14px 18px;text-decoration:none;color:var(--ink);background:#fff;}
.art-nav a:hover{background:var(--yellow);}
.art-nav .dir{display:block;font-size:.75rem;font-weight:800;opacity:.6;margin-bottom:4px;}
.art-nav .tt{font-family:var(--font-head);font-weight:800;}

/* ---------- 页脚 ---------- */
.foot{border-top:var(--line) solid var(--ink);background:var(--bg);padding:26px 0;margin-top:40px;}
.foot .inner{display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center;}
.foot .logo{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-weight:700;font-size:1.2rem;}
.foot .logo .m{width:36px;height:36px;border:3px solid var(--ink);border-radius:10px;background:var(--yellow);display:flex;align-items:center;justify-content:center;font-size:1.3rem;transform:rotate(-4deg);}
.foot .navfoot{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;}
.foot .navfoot a{color:var(--ink);text-decoration:none;font-weight:800;border-bottom:3px solid var(--yellow);}
.foot .copy{font-size:.82rem;color:#888;font-weight:700;}

/* ---------- 面试问答 QA ---------- */
.qa-section{margin-top:34px;}
.qa-head{display:inline-flex;align-items:center;gap:10px;background:var(--yellow);border:var(--line) solid var(--ink);border-radius:999px;padding:9px 24px;font-family:var(--font-head);font-weight:800;font-size:1.15rem;transform:rotate(-1deg);}
.qa-sub{margin:12px 0 20px;font-weight:700;color:#555;font-size:.95rem;}
.qa-item{background:#fff;border:var(--line) solid var(--ink);border-radius:18px;padding:18px 20px;margin-bottom:16px;box-shadow:5px 5px 0 rgba(26,26,26,.06);}
.qa-q{display:flex;gap:10px;align-items:flex-start;font-weight:800;font-size:1.05rem;margin-bottom:12px;}
.qa-a{display:flex;gap:10px;align-items:flex-start;background:var(--cream);border:3px solid var(--ink);border-radius:14px;padding:12px 14px;font-weight:600;color:#333;}
.qa-a p{margin:0;line-height:1.7;}
.qa-a p b{color:var(--ink);}
.qa .who{flex:0 0 auto;border:3px solid var(--ink);border-radius:10px;padding:2px 12px;font-weight:900;font-size:.82rem;line-height:1.9;white-space:nowrap;}
.qa-q .who{background:var(--sky);}
.qa-a .who{background:var(--mint);}
.qa-tip{margin-top:12px;padding:10px 14px;background:#FFF4D6;border:3px dashed var(--ink);border-radius:12px;font-weight:700;font-size:.9rem;color:#7a5c00;line-height:1.6;}

/* ---------- 文章侧边吸顶目录 ---------- */
.art-layout{display:flex;gap:64px;align-items:flex-start;}
.art-main{flex:1;min-width:0;}
.art-aside{flex:0 0 230px;position:sticky;top:0;height:100vh;display:flex;align-items:center;}
.toc-side{width:100%;background:#fff;border:var(--line) solid var(--ink);border-radius:18px;padding:16px 18px;}
.toc-side-title{font-family:var(--font-head);font-weight:800;font-size:1.05rem;margin-bottom:12px;}
.toc-side ul{list-style:none;padding:0;margin:0;}
.toc-side li{margin:5px 0;}
.toc-side a{display:block;color:var(--ink);text-decoration:none;font-weight:700;font-size:.84rem;padding:6px 10px;border-radius:8px;border-left:4px solid transparent;line-height:1.4;transition:.12s;}
.toc-side a:hover{background:var(--yellow);}
.toc-side a.active{background:#000;color:#fff;border-left-color:var(--yellow);}
.toc-progress{height:6px;background:#EDE4CE;border-radius:99px;margin-top:14px;overflow:hidden;}
.toc-progress-bar{display:block;height:100%;width:0;background:var(--mint);border-radius:99px;}
/* 桌面端用侧边目录替代顶部内嵌目录 */
.art-toc{display:none;}

/* ---------- 停留计时器 (鼓励式) ---------- */
.timer-widget{position:fixed;left:20px;bottom:20px;z-index:300;display:flex;align-items:center;gap:8px;
  background:#fff;border:3px solid var(--ink);border-radius:999px;padding:6px 14px;
  font-family:var(--font-head);font-weight:800;font-size:.85rem;color:var(--ink);
  box-shadow:3px 3px 0 rgba(26,26,26,.12);cursor:pointer;
  opacity:0;transform:translateY(12px);transition:.3s;user-select:none;}
.timer-widget.show{opacity:.94;transform:translateY(0);}
.timer-widget:hover{opacity:1;}
.timer-widget.bump{animation:timer-bump .5s ease;}
@keyframes timer-bump{0%{transform:scale(1);}35%{transform:scale(1.12);}100%{transform:scale(1);}}
.tw-icon{font-size:1.02rem;}
.tw-time{min-width:46px;text-align:center;letter-spacing:.5px;}
.tw-bar{width:64px;height:6px;background:#EDE4CE;border-radius:99px;overflow:hidden;}
.tw-bar span{display:block;height:100%;background:var(--yellow);width:0;transition:width .3s;}
.timer-toast{position:fixed;left:20px;bottom:80px;z-index:400;max-width:min(82vw,430px);
  background:#000;color:#fff;border:var(--line) solid var(--ink);border-radius:16px;padding:12px 18px;
  font-family:var(--font-head);font-weight:700;font-size:1rem;line-height:1.5;text-align:center;
  box-shadow:6px 6px 0 rgba(255,190,11,.35);cursor:pointer;
  opacity:0;transform:translateY(10px);transition:.4s;pointer-events:none;}
.timer-toast.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.timer-toast .tt-emoji{display:block;font-size:1.7rem;margin-bottom:6px;}

/* =====================================================================
   响应式
   ===================================================================== */
@media(max-width:820px){
  .grid2,.grid3,.intro-grid,.example-box,.tips,.path,.cards{grid-template-columns:1fr;}
  .relation{grid-template-columns:1fr;}
  .rel-vs{margin:0 auto;transform:rotate(90deg);}
  .cycle-wrap{overflow-x:auto;}
  .cycle{flex-wrap:nowrap;justify-content:flex-start;min-width:680px;}
  .nav{padding:6px 0;}
  .nav .inner{flex-wrap:nowrap;gap:8px;}
  .nav .logo{font-size:1rem;line-height:1;gap:6px;}
  .nav .logo .m{width:26px;height:26px;font-size:1rem;border-width:3px;}
  .nav .links{margin-left:auto;gap:4px;flex-wrap:nowrap;align-items:center;}
  .nav .links a{font-size:.72rem;padding:4px 9px;border-width:2px;display:inline-flex;align-items:center;line-height:1;}
  .art-nav{flex-direction:column;}
  .path .arrow{display:none;}
  /* 移动端：隐藏侧边栏，恢复顶部内嵌目录 */
  .art-layout{flex-direction:column;align-items:stretch;}
  .art-main{width:100%;max-width:100%;}
  .art-aside{display:none;}
  .art-toc{display:block;}
  /* 移动端：计时器更小巧 */
  .timer-widget{left:12px;bottom:12px;padding:4px 10px;font-size:.74rem;gap:6px;}
  .timer-widget .tw-bar{width:44px;height:5px;}
  .timer-toast{left:12px;bottom:60px;font-size:.9rem;padding:10px 14px;max-width:82vw;border-width:3px;}
  .timer-toast .tt-emoji{font-size:1.4rem;}
}
