/* ============================================================
   Shared stylesheet — Christmas Printables
   设计原则：
   1) 屏幕端轻快、无框架依赖（LCP 优先）
   2) 打印端精确：A4、隐藏导航与按钮、低墨模式
   3) 遵循 @media print 而非 PDF 库（见 gefei_firstsite.md §决策4）
   ============================================================ */

:root{
  --red:#c1272d;
  --red-dk:#9c1e24;
  --green:#0f7a48;
  --green-dk:#0b5c37;
  --gold:#c8952a;
  --cream:#fdfaf3;
  --paper:#ffffff;
  --ink:#1f2421;
  --ink-soft:#5b615c;
  --line:#e2ddd0;
  --radius:12px;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.05);
  --maxw:960px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.65;
  font-size:16px;
}
img{max-width:100%;height:auto}
a{color:var(--green-dk);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{line-height:1.25;margin:0 0 .5em;color:var(--ink)}
h1{font-size:1.9rem}
h2{font-size:1.35rem;margin-top:2em}
h3{font-size:1.1rem;margin-top:1.6em}
p{margin:0 0 1em}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}

/* ---------------- Header / Nav ---------------- */
.site-head{
  background:linear-gradient(135deg,var(--red-dk),var(--red));
  color:#fff;padding:14px 0;position:relative;
}
.site-head .wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.brand{font-weight:800;font-size:1.15rem;color:#fff;letter-spacing:.2px;text-decoration:none}
.brand:hover{text-decoration:none;opacity:.92}
.nav{display:flex;gap:16px;flex-wrap:wrap;margin-left:auto}
.nav a{color:#fff;opacity:.9;font-size:.92rem;text-decoration:none}
.nav a:hover{opacity:1;text-decoration:underline}

/* ---------------- Layout ---------------- */
main{padding:28px 0 56px}
.card{
  background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);
  padding:22px;margin-bottom:22px;
}
.hero{
  background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);
  padding:26px 24px;margin-bottom:24px;
  border-top:4px solid var(--red);
}
.hero h1{margin-bottom:.35em}
.lede{color:var(--ink-soft);font-size:1.05rem;margin-bottom:0}
.lede-note{color:var(--ink-soft);font-size:.9rem;margin-top:.6em;opacity:.85}

.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin:20px 0}
.tile{
  display:block;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px;text-decoration:none;color:var(--ink);
  box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease;
}
.tile:hover{transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.08),0 16px 32px rgba(0,0,0,.07);text-decoration:none}
.tile h3{margin:0 0 .3em;font-size:1.05rem;color:var(--red-dk)}
.tile p{margin:0;color:var(--ink-soft);font-size:.92rem}

/* ---------------- Controls ---------------- */
.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:16px 0}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:.85rem;font-weight:600;color:var(--ink-soft)}
input[type=text],input[type=number],select,textarea{
  font:inherit;font-size:.95rem;padding:9px 11px;
  border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);
}
textarea{width:100%;min-height:96px;resize:vertical;line-height:1.6}
input:focus,select:focus,textarea:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}

.btn{
  font:inherit;font-weight:600;font-size:.95rem;cursor:pointer;
  padding:10px 18px;border-radius:8px;border:1px solid transparent;
  background:var(--green);color:#fff;transition:background .15s ease;
}
.btn:hover{background:var(--green-dk)}
.btn-primary{background:var(--red)}
.btn-primary:hover{background:var(--red-dk)}
.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{background:#f5f2ea}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}

.print-hint{
  background:#fff8e6;border:1px solid #f0dfae;border-left:4px solid var(--gold);
  padding:12px 14px;border-radius:8px;font-size:.9rem;margin:14px 0;
}
.print-hint strong{color:#8a6316}

/* ---------------- Tool output ---------------- */
.paper{
  background:#fff;border:1px solid var(--line);border-radius:8px;
  padding:24px;margin:16px 0;
}
.print-title{font-size:1.3rem;font-weight:800;text-align:center;margin:0 0 4px}
.print-sub{text-align:center;color:var(--ink-soft);font-size:.9rem;margin-bottom:18px}

/* word search grid */
.ws-grid{
  display:grid;gap:0;margin:0 auto;width:max-content;
  border-top:1px solid #333;border-left:1px solid #333;
}
.ws-cell{
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border-right:1px solid #333;border-bottom:1px solid #333;
  font:600 15px/1 "Courier New",monospace;text-transform:uppercase;user-select:none;
}
.ws-cell.sel{background:#ffe9a8}
.ws-words{display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:center;margin-top:18px}
.ws-words span{font-size:.92rem}

/* check lists */
.check-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 24px}
@media(max-width:560px){.check-list{grid-template-columns:1fr}}
.check-list li{display:flex;align-items:flex-start;gap:10px;padding:5px 0;border-bottom:1px dotted #ccc}
.box{width:15px;height:15px;border:1.5px solid #333;flex:0 0 auto;margin-top:4px;border-radius:2px}

/* advent grid */
.adv-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
@media(max-width:560px){.adv-grid{grid-template-columns:repeat(4,1fr)}}
.adv-cell{
  border:1.5px solid var(--green-dk);border-radius:8px;aspect-ratio:1/1;
  display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:1.4rem;color:var(--red-dk);background:#fff;
}
.adv-cell .txt{font-size:.68rem;font-weight:500;text-align:center;padding:4px;line-height:1.25;color:var(--ink)}

/* questionnaire forms */
.q-sheets{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:680px){.q-sheets{grid-template-columns:1fr}}
.q-sheet{border:1.5px solid #333;border-radius:8px;padding:16px;background:#fff}
.q-sheet h4{margin:0 0 12px;font-size:1rem;color:var(--red-dk);text-align:center}
.q-line{display:flex;align-items:baseline;gap:8px;margin-bottom:11px;font-size:.9rem}
.q-line .lbl{white-space:nowrap;font-weight:600}
.q-line .fill{flex:1;border-bottom:1px solid #333;min-height:18px}

/* letter */
.letter{border:1.5px solid #333;border-radius:8px;padding:28px 26px;background:#fff;line-height:1.9}
.letter p{margin-bottom:1.1em}

/* countdown */
.cd-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;text-align:center;margin:18px 0}
@media(max-width:520px){.cd-wrap{grid-template-columns:repeat(2,1fr)}}
.cd-unit{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 8px}
.cd-num{font-size:2.1rem;font-weight:800;color:var(--red-dk);line-height:1.1;font-variant-numeric:tabular-nums}
.cd-lab{font-size:.78rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em}
.tz-table{width:100%;border-collapse:collapse;font-size:.92rem}
.tz-table th,.tz-table td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:left}
.tz-table th{color:var(--ink-soft);font-size:.85rem}
pre.code{background:#2b2b2b;color:#e8e8e8;padding:14px;border-radius:8px;overflow-x:auto;font-size:.82rem;line-height:1.5}

/* ad slot placeholder (第二阶段才启用) */
.ad-slot{border:1px dashed var(--line);border-radius:8px;padding:14px;text-align:center;
  color:#a5a5a5;font-size:.82rem;margin:20px 0}

/* ---------------- Footer ---------------- */
.site-foot{background:#2a2f2b;color:#cfd4cf;padding:26px 0;font-size:.9rem}
.site-foot a{color:#eae9e2}
.site-foot .wrap{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.site-foot nav{display:flex;gap:14px;flex-wrap:wrap;margin-left:auto}

/* ============================================================
   PRINT — 核心
   ============================================================ */
@media print{
  @page{size:A4;margin:14mm}

  /* 隐藏一切非打印元素 */
  .no-print,.site-head,.site-foot,.controls,.btn-row,.print-hint,
  .ad-slot,.grid-cards,form,.feedback{display:none !important}

  html,body{background:#fff !important;font-size:11.5pt}
  .wrap{max-width:none;padding:0}
  main{padding:0}
  .card,.hero,.paper{
    border:0 !important;box-shadow:none !important;
    padding:0 !important;margin:0 !important;border-radius:0 !important;
  }
  .hero{border-top:0 !important}

  /* 打印区之间分页 */
  .page-break{page-break-before:always;break-before:page}

  /* 避免内容被切断 */
  .check-list li,.q-sheet,.adv-cell,.ws-grid{break-inside:avoid}
  .q-sheets{break-inside:avoid}
  .print-title{color:#000}

  a[href]:after{content:""}

  /* 低墨模式：默认关闭，可由 body.low-ink 开启 */
  body.low-ink *{color:#000 !important;background:#fff !important;border-color:#000 !important}
  body.low-ink .ws-cell{border-color:#666 !important}
  body.low-ink .adv-cell{background:#fff !important}
}

/* 屏幕端：低墨开关由 JS 加 class，仅屏幕可见 */
body.low-ink .ws-cell{border-color:#999}
body.low-ink .adv-cell{background:#fff;border-color:#000;color:#000}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important}
}
