/* 链上攻防 · Neobrutalism 可爱变体（soft brutalism / 贴纸 / 手账风） */
:root{
  --paper:#FFF8EC;
  --paper2:#FFF1DC;
  --card:#FFFFFF;
  --ink:#1D1A17;
  --ink2:#5A5148;
  --muted:#8C8073;
  --line:#1D1A17;
  --grid:#EBDCC4;

  --pink:#FF9DB4;
  --pink-l:#FFD9E3;
  --yellow:#FFD84D;
  --yellow-l:#FFF2B8;
  --mint:#8FE0BC;
  --mint-l:#D6F5E6;
  --blue:#8CC9F7;
  --blue-l:#D9EEFF;
  --lilac:#C9AEFF;
  --lilac-l:#EBE0FF;
  --orange:#FFAE6B;
  --coral:#FF7F6B;
  --shadow:#1D1A17;
  --radius:16px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  color:var(--ink);
  background-color:var(--paper);
  background-image:
    radial-gradient(var(--grid) 1.4px, transparent 1.4px),
    radial-gradient(circle at 8% 4%, rgba(255,216,77,.20), transparent 26%),
    radial-gradient(circle at 92% 10%, rgba(140,201,247,.18), transparent 26%),
    radial-gradient(circle at 4% 62%, rgba(255,157,180,.14), transparent 24%);
  background-size:22px 22px, auto, auto, auto;
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,p{margin:0}
::selection{background:var(--yellow);color:var(--ink)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--paper2)}
::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--paper2);border-radius:8px}

/* 顶部彩虹胶带 */
.rainbow{height:9px;background:linear-gradient(90deg,var(--pink) 0 20%,var(--yellow) 20% 40%,var(--mint) 40% 60%,var(--blue) 60% 80%,var(--lilac) 80% 100%);border-bottom:2px solid var(--line)}
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:18px clamp(16px,4vw,52px);
  background:var(--card);border-bottom:3px solid var(--line);
  position:sticky;top:0;z-index:50;
}
.brand{display:flex;align-items:center;gap:16px}
.logo{
  width:48px;height:48px;flex:0 0 48px;border-radius:12px;display:grid;place-items:center;
  font-size:26px;color:var(--ink);background:var(--yellow);
  border:2.5px solid var(--line);box-shadow:4px 4px 0 var(--shadow);transform:rotate(-5deg);
}
.brand h1{font-size:20px;letter-spacing:.5px;font-weight:900}
.brand h1 span{
  font-size:14px;font-weight:800;color:var(--ink);margin-left:8px;
  background:var(--pink-l);border:2px solid var(--line);border-radius:20px;padding:3px 10px;
  display:inline-block;transform:rotate(-2deg);box-shadow:2px 2px 0 var(--shadow);
}
.brand p{font-size:12px;color:var(--muted);margin-top:7px;font-weight:600;letter-spacing:.4px}
.topmeta{font-size:12px;color:var(--ink2);display:flex;align-items:center;gap:8px;white-space:nowrap;font-weight:700}
.topmeta .dot{width:10px;height:10px;border-radius:50%;background:var(--mint);border:2px solid var(--line)}
.topmeta .sep{color:var(--muted)}
.src-sticker{
  background:var(--pink);border:2px solid var(--line);border-radius:20px;
  padding:4px 11px;box-shadow:2px 2px 0 var(--shadow);transform:rotate(-2deg);
  color:var(--ink);font-weight:900;display:inline-block;text-decoration:none;
  transition:transform .12s,box-shadow .12s,background .12s;
}
a.src-sticker:hover{background:var(--yellow);transform:rotate(0deg) translate(-1px,-1px);box-shadow:4px 4px 0 var(--shadow)}

main{max-width:1440px;margin:0 auto;padding:26px clamp(14px,3vw,40px) 60px}

/* KPI 贴纸卡片 */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:24px}
.kpi{
  background:var(--tint,#fff);border:2.5px solid var(--line);border-radius:var(--radius);
  padding:16px 18px 15px;position:relative;box-shadow:5px 5px 0 var(--shadow);
  transition:transform .14s,box-shadow .14s;
}
.kpi:hover{transform:translate(-2px,-2px) rotate(-.6deg);box-shadow:8px 8px 0 var(--shadow)}
.kpi::before{
  content:attr(data-star);position:absolute;right:-10px;top:-14px;
  width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  font-size:15px;background:var(--yellow);border:2px solid var(--line);
  box-shadow:2px 2px 0 var(--shadow);transform:rotate(12deg);
}
.kpi .label{font-size:12px;color:var(--ink2);letter-spacing:.8px;font-weight:800}
.kpi .value{font-size:30px;font-weight:900;margin-top:9px;letter-spacing:-.5px;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi .value small{font-size:14px;font-weight:800;margin-left:4px}
.kpi .sub{font-size:11px;color:var(--ink2);margin-top:7px;font-weight:600}

/* 面板 + 胶带 */
.panel{
  background:var(--card);border:2.5px solid var(--line);border-radius:var(--radius);
  padding:22px 24px;margin-bottom:24px;position:relative;
  box-shadow:6px 6px 0 var(--shadow);
}
.panel::before{
  content:"";position:absolute;top:-13px;left:34px;width:96px;height:24px;
  background:repeating-linear-gradient(45deg,rgba(255,216,77,.92) 0 8px,rgba(255,235,150,.92) 8px 16px);
  border:2px solid var(--line);border-radius:3px;transform:rotate(-4deg);
  box-shadow:2px 2px 0 rgba(29,26,23,.25);
}
.grid-2 .panel:nth-child(2)::before{background:repeating-linear-gradient(45deg,rgba(255,157,180,.92) 0 8px,rgba(255,214,226,.92) 8px 16px);left:auto;right:34px;transform:rotate(4deg)}
.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.panel h2{font-size:18px;font-weight:900;letter-spacing:.3px;display:flex;align-items:center;gap:10px}
.panel h2::before{
  content:"✦";width:26px;height:26px;flex:0 0 26px;display:grid;place-items:center;
  font-size:14px;background:var(--mint);border:2px solid var(--line);border-radius:8px;
  box-shadow:2px 2px 0 var(--shadow);transform:rotate(-6deg);
}
.panel-head p,.panel-head .hint{font-size:12px;color:var(--ink2);margin-top:6px;font-weight:600}
.panel-head .hint{
  margin-top:2px;color:var(--ink);font-weight:800;background:var(--yellow);
  border:2px solid var(--line);padding:5px 12px;border-radius:20px;
  box-shadow:3px 3px 0 var(--shadow);white-space:nowrap;transform:rotate(1.5deg);
}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.grid-2 .panel{margin-bottom:24px}
.chart{width:100%;height:330px}
.chart.tall{height:430px}

/* 年份贴纸 */
.year-chips{display:flex;flex-wrap:wrap;gap:8px;max-width:780px;justify-content:flex-end}
.chip{
  font-size:12px;font-weight:800;padding:6px 12px;border-radius:9px;cursor:pointer;user-select:none;
  border:2px solid var(--line);color:var(--ink);background:var(--card);
  box-shadow:3px 3px 0 var(--shadow);transition:transform .12s,box-shadow .12s,background .12s;
}
.chip:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--shadow);background:var(--yellow-l)}
.chip.active{background:var(--pink);transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow)}
.year-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:6px 0 18px}
.ys{background:var(--paper2);border:2px solid var(--line);border-radius:11px;padding:11px 14px;box-shadow:3px 3px 0 var(--shadow)}
.ys .k{font-size:11px;color:var(--ink2);font-weight:700}
.ys .v{font-size:19px;font-weight:900;margin-top:5px;font-variant-numeric:tabular-nums;line-height:1.25}
.month-list{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px;max-height:250px;overflow-y:auto;padding:4px 6px 4px 2px}
.ml-item{
  font-size:12px;color:var(--ink2);font-weight:600;background:var(--paper);
  border:2px solid var(--line);border-radius:9px;padding:9px 11px;cursor:pointer;line-height:1.6;
  box-shadow:3px 3px 0 var(--shadow);transition:transform .12s,box-shadow .12s;
}
.ml-item:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--shadow);background:var(--yellow-l)}
.ml-item b{color:var(--ink);font-weight:900}
.ml-item .amt{color:#C2410C;font-weight:900;font-variant-numeric:tabular-nums}

/* 控件 */
.controls{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.controls input,.controls select{
  background:var(--card);border:2px solid var(--line);color:var(--ink);border-radius:9px;
  padding:8px 11px;font-size:12px;font-weight:700;outline:none;font-family:inherit;
  box-shadow:3px 3px 0 var(--shadow);
}
.controls input{width:230px}
.controls input::placeholder{color:var(--muted);font-weight:600}
.controls input:focus,.controls select:focus{background:var(--yellow-l)}
.controls select{cursor:pointer}
.result-line{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink2);font-weight:700;margin:4px 0 12px}
.linkbtn{
  background:var(--blue-l);border:2px solid var(--line);border-radius:8px;color:var(--ink);
  cursor:pointer;font-size:12px;font-weight:800;font-family:inherit;padding:5px 11px;
  box-shadow:2px 2px 0 var(--shadow);
}
.linkbtn:hover{background:var(--blue);transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--shadow)}

/* 表格 */
.table-wrap{overflow-x:auto;border:2.5px solid var(--line);border-radius:11px;box-shadow:4px 4px 0 var(--shadow);background:var(--card)}
table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:960px}
thead th{
  background:var(--yellow);color:var(--ink);font-weight:900;text-align:left;
  padding:11px 12px;border-bottom:2.5px solid var(--line);white-space:nowrap;
  position:sticky;top:0;z-index:2;
}
thead th:not(:last-child){border-right:1px dashed rgba(29,26,23,.35)}
tbody td{padding:10px 12px;border-bottom:1.5px dashed #DCCBB0;vertical-align:top;line-height:1.65;color:var(--ink2);font-weight:600}
tbody tr{cursor:pointer;transition:background .12s}
tbody tr:nth-child(even){background:#FFFCF5}
tbody tr:hover{background:var(--yellow-l)}
tbody tr:last-child td{border-bottom:none}
td.name{color:var(--ink);font-weight:900;white-space:nowrap}
td.date{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink2);font-weight:700}
td.loss{white-space:nowrap;font-variant-numeric:tabular-nums;color:#C2410C;font-weight:900}
td.desc{max-width:560px}
.tag{display:inline-block;font-size:11px;font-weight:800;padding:2px 9px;border-radius:20px;background:var(--blue-l);color:var(--ink);border:1.8px solid var(--line);white-space:nowrap}
.tag.chain{background:var(--lilac-l)}

/* 分页 */
.pager{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px;align-items:center}
.pager button{
  background:var(--card);border:2px solid var(--line);color:var(--ink);border-radius:8px;
  padding:6px 12px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;
  box-shadow:3px 3px 0 var(--shadow);transition:transform .12s;
}
.pager button:hover:not(:disabled){transform:translate(-1px,-1px);background:var(--yellow-l)}
.pager button.active{background:var(--pink);transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow)}
.pager button:disabled{opacity:.4;cursor:default;box-shadow:none}
.pager span{font-size:12px;color:var(--ink2);font-weight:700;margin:0 8px}

/* 页脚 */
footer{
  border-top:3px dashed var(--line);padding-top:20px;margin-top:32px;
  font-size:12px;color:var(--ink2);line-height:2;font-weight:600;
}
footer p{margin-bottom:6px}
footer strong{
  background:var(--mint-l);border:1.8px solid var(--line);border-radius:6px;
  padding:2px 8px;margin-right:6px;color:var(--ink);font-weight:900;
}
footer a{color:var(--ink);font-weight:900;text-decoration:underline;text-decoration-color:var(--coral);text-decoration-thickness:3px;text-underline-offset:3px}
footer a:hover{background:var(--yellow-l)}
.doodles{display:flex;gap:10px;justify-content:center;margin-top:18px;font-size:20px;letter-spacing:14px;opacity:.85}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(29,26,23,.45);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal.open{display:flex}
.modal-card{
  position:relative;width:min(720px,100%);max-height:86vh;overflow-y:auto;
  background:var(--card);border:3px solid var(--line);border-radius:18px;
  padding:30px 32px 26px;box-shadow:10px 10px 0 var(--shadow);
}
.modal-card::before{
  content:"";position:absolute;top:-14px;left:50%;transform:translateX(-50%) rotate(-2deg);
  width:130px;height:26px;background:repeating-linear-gradient(45deg,rgba(143,224,188,.95) 0 8px,rgba(211,245,230,.95) 8px 16px);
  border:2px solid var(--line);border-radius:3px;
}
.modal-close{
  position:absolute;right:14px;top:10px;background:var(--pink);border:2px solid var(--line);
  color:var(--ink);font-size:20px;font-weight:900;line-height:1;width:32px;height:32px;
  border-radius:9px;cursor:pointer;box-shadow:2px 2px 0 var(--shadow);
}
.modal-close:hover{background:var(--coral)}
.modal-tag{
  display:inline-block;font-size:11px;font-weight:900;color:var(--ink);letter-spacing:.5px;
  background:var(--lilac-l);border:2px solid var(--line);border-radius:20px;
  padding:4px 12px;margin-bottom:12px;transform:rotate(-1.5deg);box-shadow:2px 2px 0 var(--shadow);
}
.modal-card h3{font-size:24px;font-weight:900;margin-bottom:12px;line-height:1.3}
.modal-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.modal-meta span{
  font-size:12px;font-weight:700;color:var(--ink);background:var(--paper2);
  border:1.8px solid var(--line);border-radius:7px;padding:5px 10px;
}
.modal-loss{
  display:inline-block;font-size:26px;font-weight:900;color:#C2410C;margin-bottom:16px;
  font-variant-numeric:tabular-nums;background:var(--yellow-l);
  border:2px solid var(--line);border-radius:10px;padding:6px 14px;box-shadow:3px 3px 0 var(--shadow);
}
.modal-desc{
  font-size:14px;line-height:2;color:var(--ink);font-weight:600;
  background:var(--paper);border:2px dashed var(--line);border-radius:10px;
  padding:16px 18px;white-space:pre-wrap;
}
.modal-foot{font-size:11px;color:var(--muted);margin-top:16px;text-align:right;font-weight:700}
.empty{text-align:center;color:var(--muted);padding:40px 0;font-size:13px;font-weight:700}

@media (max-width:900px){
  .grid-2{grid-template-columns:1fr}
  .topmeta{display:none}
  .year-chips{justify-content:flex-start;max-width:none}
  .chart{height:300px}.chart.tall{height:360px}
  .controls input{width:100%}
  .panel{padding:18px 16px}
  .kpi .value{font-size:26px}
}
