:root{--ink:#133f31;--green:#245c42;--lime:#d6f078;--paper:#f7f8ef;--line:#dce4d9}*{box-sizing:border-box}body{margin:0;font:16px/1.7 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper)}a{color:inherit}header,main,footer{max-width:1160px;margin:auto;padding:24px}header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;text-decoration:none;letter-spacing:.06em}.brand-logo{width:36px;height:36px;display:block;object-fit:contain;flex:0 0 auto}nav{display:flex;align-items:center;gap:24px}nav a{text-decoration:none;font-size:14px;white-space:nowrap}nav .teacher-link{font-weight:700;border:1px solid var(--line);border-radius:999px;padding:5px 12px}h1{font-size:clamp(34px,5vw,66px);line-height:1.18;letter-spacing:-.03em;margin:20px 0}h2{font-size:28px;line-height:1.4}h3{margin:0 0 10px}p{margin:12px 0}.eyebrow{font-size:14px;letter-spacing:.12em;font-weight:700}.hero{display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:60px;padding:45px 0 65px}.hero img{width:100%;max-height:650px;object-fit:contain;border-radius:20px}.button,button{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:0;border-radius:12px;background:var(--green);color:white;padding:13px 22px;font:600 16px/1.4 inherit;cursor:pointer;text-decoration:none;min-height:46px}.button.secondary,button.secondary{background:#e8eedf;color:var(--ink)}.actions{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.chips{display:flex;gap:10px;flex-wrap:wrap}.chip{font-size:14px;padding:5px 12px;border:1px solid var(--line);border-radius:30px}.muted{color:#607166;font-size:14px}.section{padding:40px 0;border-top:1px solid var(--line)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{background:white;border:1px solid var(--line);padding:24px;border-radius:18px}.poster{padding:0;overflow:hidden}.poster img{width:100%;display:block;aspect-ratio:2/3;object-fit:cover}.poster div{padding:18px}.step{font-size:36px;font-weight:800;color:#739242}footer{border-top:1px solid var(--line);font-size:14px;color:#607166}.app{max-width:1060px}.app h1{font-size:36px}.balance{background:var(--green);color:#fff;padding:28px;border-radius:20px}.amount{font-size:48px;font-weight:750;font-variant-numeric:tabular-nums}.appgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}.full{grid-column:1/-1}label{display:block;font-size:14px;font-weight:600;margin:12px 0 5px}input,select{font:inherit;width:100%;padding:11px 12px;border:1px solid #b8c8ba;border-radius:9px;background:#fff;color:var(--ink);min-width:0}input[type=file]{font-size:14px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}progress{width:100%;height:16px;accent-color:#6c962e}ul.records{list-style:none;padding:0}.records li{display:flex;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.records button{font-size:14px;padding:6px 10px;min-height:36px;background:#edf1e8;color:var(--ink)}.income{color:#23713c}.expense{color:#a14b2d}.budget-row{margin:15px 0}.budget-row>div{display:flex;justify-content:space-between;gap:12px}.message{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#173e30;color:#fff;padding:12px 20px;border-radius:12px;z-index:10;max-width:90vw}.message:empty{display:none}details{margin:16px 0}summary{cursor:pointer;font-weight:600}button:focus-visible,a:focus-visible{outline:3px solid #e0a126;outline-offset:3px}.notice{padding:12px 16px;background:#edf2dc;border-radius:10px;font-size:14px}.empty{color:#607166;padding:20px 0}.danger{color:#993e28!important;background:#f8eae5!important}@media(max-width:680px){header,main,footer{padding:18px}header{flex-wrap:wrap}nav{width:100%;justify-content:space-between;flex-wrap:wrap;gap:10px 14px}.hero{grid-template-columns:1fr;gap:20px;padding:20px 0 35px}.hero img{max-height:430px}.grid,.appgrid{grid-template-columns:1fr}.full{grid-column:auto}.app h1{font-size:30px}.amount{font-size:42px}.card{padding:20px}.poster{padding:0}.fields{gap:10px}nav a{font-size:13px}}
@media(max-width:780px){header{flex-wrap:wrap}nav{width:100%;justify-content:space-between;flex-wrap:wrap;gap:10px 14px}}
