/**
 * LH 设计系统 - Base Styles
 * Reset + 排版 + 基础元素 + 玻璃拟态背景光斑
 */

/* === Reset === */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:var(--lh-fs-base);line-height:var(--lh-lh-base);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}
body{font-family:var(--lh-font-sans);color:var(--lh-text);background:var(--lh-bg);min-height:100vh;overflow-x:hidden}
img,svg{display:block;max-width:100%;height:auto}
a{color:var(--lh-primary);text-decoration:none;transition:color var(--lh-dur) var(--lh-ease)}
a:hover{color:var(--lh-primary-hover)}
ul,ol{list-style:none}
button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
table{border-collapse:collapse;border-spacing:0;width:100%}
hr{border:none;border-top:1px solid var(--lh-border);margin:var(--lh-sp-5) 0}
code,pre{font-family:var(--lh-font-mono)}
::selection{background:var(--lh-primary-soft);color:var(--lh-primary)}

/* === 排版 === */
h1,h2,h3,h4,h5,h6{font-weight:var(--lh-fw-semibold);line-height:var(--lh-lh-tight);color:var(--lh-text)}
h1{font-size:var(--lh-fs-4xl)}
h2{font-size:var(--lh-fs-3xl)}
h3{font-size:var(--lh-fs-2xl)}
h4{font-size:var(--lh-fs-xl)}
h5{font-size:var(--lh-fs-lg)}
h6{font-size:var(--lh-fs-md)}
p{margin-bottom:var(--lh-sp-4);color:var(--lh-text-soft)}
small{font-size:var(--lh-fs-sm);color:var(--lh-text-mute)}
strong{font-weight:var(--lh-fw-semibold)}

/* === 玻璃拟态背景光斑 === */
body::before{
  content:'';position:fixed;top:-30%;left:-10%;width:60%;height:60%;
  background:radial-gradient(ellipse,rgba(255,63,159,.10) 0%,transparent 70%);
  pointer-events:none;z-index:-1;animation:lh-orb-float 20s ease-in-out infinite alternate;
}
body::after{
  content:'';position:fixed;bottom:-20%;right:-10%;width:50%;height:50%;
  background:radial-gradient(ellipse,rgba(255,122,69,.10) 0%,transparent 70%);
  pointer-events:none;z-index:-1;animation:lh-orb-float 25s ease-in-out infinite alternate-reverse;
}
@keyframes lh-orb-float{
  0%{transform:translate(0,0) scale(1)}
  50%{transform:translate(5%,8%) scale(1.1)}
  100%{transform:translate(-3%,4%) scale(.95)}
}
[data-theme="dark"] body::before{background:radial-gradient(ellipse,rgba(255,107,181,.12) 0%,transparent 70%)}
[data-theme="dark"] body::after{background:radial-gradient(ellipse,rgba(255,159,107,.10) 0%,transparent 70%)}

/* === 滚动条 === */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--lh-border-strong);border-radius:var(--lh-r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--lh-text-mute)}

/* === 工具类 === */
.lh-text-center{text-align:center}
.lh-text-right{text-align:right}
.lh-text-mute{color:var(--lh-text-mute)}
.lh-text-soft{color:var(--lh-text-soft)}
.lh-text-primary{color:var(--lh-primary)}
.lh-text-success{color:var(--lh-success)}
.lh-text-warning{color:var(--lh-warning)}
.lh-text-danger{color:var(--lh-danger)}
.lh-mt-1{margin-top:var(--lh-sp-1)}.lh-mt-2{margin-top:var(--lh-sp-2)}.lh-mt-3{margin-top:var(--lh-sp-3)}.lh-mt-4{margin-top:var(--lh-sp-4)}.lh-mt-5{margin-top:var(--lh-sp-5)}.lh-mt-6{margin-top:var(--lh-sp-6)}
.lh-mb-1{margin-bottom:var(--lh-sp-1)}.lh-mb-2{margin-bottom:var(--lh-sp-2)}.lh-mb-3{margin-bottom:var(--lh-sp-3)}.lh-mb-4{margin-bottom:var(--lh-sp-4)}.lh-mb-5{margin-bottom:var(--lh-sp-5)}.lh-mb-6{margin-bottom:var(--lh-sp-6)}
.lh-p-1{padding:var(--lh-sp-1)}.lh-p-2{padding:var(--lh-sp-2)}.lh-p-3{padding:var(--lh-sp-3)}.lh-p-4{padding:var(--lh-sp-4)}.lh-p-5{padding:var(--lh-sp-5)}.lh-p-6{padding:var(--lh-sp-6)}
.lh-flex{display:flex}.lh-flex-col{flex-direction:column}.lh-flex-wrap{flex-wrap:wrap}
.lh-items-center{align-items:center}.lh-justify-center{justify-content:center}.lh-justify-between{justify-content:space-between}
.lh-gap-1{gap:var(--lh-sp-1)}.lh-gap-2{gap:var(--lh-sp-2)}.lh-gap-3{gap:var(--lh-sp-3)}.lh-gap-4{gap:var(--lh-sp-4)}.lh-gap-5{gap:var(--lh-sp-5)}
.lh-hidden{display:none!important}
.lh-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* === 渐变文字 === */
.lh-gradient-text{
  background:var(--lh-gradient-text);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}

/* === 响应式断点 === */
@media(max-width:576px){html{font-size:13px}}
@media(min-width:1440px){html{font-size:15px}}
