:root{--ink:#34483d;--paper:#fffaf0;--leaf:#5b9a78;--mint:#dcecdf;--sun:#f4c96a;--coral:#ef967f;--sky:#bfe0e9;--line:#44584d;--muted:#6f8076;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Noto Sans SC",Arial,sans-serif;--font-display:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Noto Sans SC",Arial,sans-serif}
.stack-form input[type=checkbox]{display:block;width:22px!important;max-width:22px!important}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(#cbd8cc .7px,transparent .7px);background-size:18px 18px;font-family:var(--font-sans);-webkit-font-smoothing:antialiased}h1,h2,h3,.logo,.eyebrow,.button{font-family:var(--font-display);letter-spacing:.01em}button,input,select,textarea{font-family:inherit}a{color:inherit}.topbar{position:sticky;z-index:20;top:0;height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100% - 1160px)/2));border-bottom:2px dashed #9eb0a4;background:#fffaf0ed;backdrop-filter:blur(10px)}.logo{display:flex;align-items:center;text-decoration:none;font-size:18px;font-weight:900}.logo i{display:grid;place-items:center;width:38px;height:38px;margin-right:10px;color:#fff;font-style:normal;border:2px solid var(--line);border-radius:45% 55% 52% 48%;background:var(--leaf);box-shadow:3px 3px 0 var(--line);transform:rotate(-4deg)}.account{display:flex;align-items:center;gap:14px;font-size:14px;white-space:nowrap}.account form{margin:0}.text-button{padding:4px 8px;color:#765b4f;border:0;border-bottom:1px dashed #765b4f;background:none;cursor:pointer}.page{width:min(1160px,calc(100% - 36px));min-height:calc(100vh - 138px);margin:auto;padding:34px 0 70px}footer{padding:24px;text-align:center;color:#7a8c81;font-size:13px}.messages{position:fixed;z-index:30;top:82px;left:50%;width:min(560px,calc(100% - 32px));transform:translateX(-50%)}.message{padding:13px 18px;border:2px solid var(--line);border-radius:14px;background:#fff;box-shadow:4px 4px 0 var(--line)}.message.success{background:#dff1e2}.message.error{background:#ffe1da}
.paper-card{border:2px solid var(--line);border-radius:23px 16px 27px 18px;background:#fffef8;box-shadow:7px 8px 0 var(--line)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;text-decoration:none;font-size:15px;font-weight:900;border:2px solid var(--line);border-radius:13px 9px 14px 10px;background:#fff;box-shadow:3px 3px 0 var(--line);cursor:pointer}.button:hover,.small-button:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}.button.primary{color:#fff;background:var(--leaf)}.eyebrow{display:inline-block;margin:0 0 10px;padding:5px 10px;color:#fff;font-weight:900;font-size:13px;letter-spacing:.08em;border:1.5px solid var(--line);background:var(--leaf);box-shadow:2px 2px 0 var(--line);transform:rotate(-1deg)}.eyebrow.coral{background:var(--coral)}.tape{display:inline-block;padding:7px 16px;color:#6a5a37;background:#f7e3a9;transform:rotate(-2deg)}
.login-wrap{display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:80px;min-height:680px}.login-illustration{position:relative;padding:50px}.login-illustration h1{position:relative;z-index:2;margin:0;font-size:clamp(42px,5vw,68px);line-height:1.25}.login-illustration h1 em{color:var(--coral);font-style:normal;border-bottom:5px solid var(--sun)}.login-illustration p{font-size:18px;color:var(--muted)}.sun{position:absolute;top:0;right:60px;color:var(--sun);font-size:82px;text-shadow:2px 2px 0 var(--line);transform:rotate(8deg)}.cloud{position:absolute;top:150px;right:0;color:var(--sky);font-size:76px;text-shadow:2px 2px 0 var(--line)}.flower{position:absolute;bottom:-70px;left:40px;color:var(--coral);font-size:90px;text-shadow:2px 2px 0 var(--line);transform:rotate(-12deg)}.login-card{position:relative;padding:48px}.login-card .tape{position:absolute;top:-16px;right:30px}.login-card h2{font-size:32px}.hint{margin:22px 0 0;color:var(--muted);font-size:13px;line-height:1.7}
.stack-form{display:grid;gap:18px}.stack-form label{display:grid;gap:7px;font-weight:700}.stack-form label em{color:var(--coral);font-style:normal}.stack-form input:not([type=checkbox]),.stack-form select,.stack-form textarea{width:100%;padding:12px 14px;color:var(--ink);font:inherit;border:2px solid #778a7e;border-radius:13px 9px 14px 10px;background:#fff}.stack-form input[type=checkbox]{appearance:none;width:22px;height:22px;margin:1px 0;border:2px solid #778a7e;border-radius:6px;background:#fff;box-shadow:2px 2px 0 #c9d7cc}.stack-form input[type=checkbox]:checked{background:var(--leaf);box-shadow:inset 0 0 0 4px #fff,2px 2px 0 #c9d7cc}.stack-form input:focus,.stack-form select:focus,.stack-form textarea:focus{outline:3px solid #bfe0c9;border-color:var(--leaf)}.stack-form ul{margin:0;padding:12px;list-style:none;border:1.5px dashed #9cac9f;border-radius:12px}.stack-form small{color:var(--muted);font-weight:400}.form-error{display:block;color:#a33b2e;font-size:13px}.form-page{width:min(760px,100%);margin:auto}.back{display:inline-block;margin-bottom:22px;text-decoration:none;border-bottom:1px dashed}.form-card{position:relative;padding:46px}.form-card>.tape{position:absolute;top:-15px;right:35px}.form-card h1{margin:0 0 8px;font-size:36px}.subtitle{margin:0 0 28px;color:var(--muted)}
.welcome{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;padding:18px 6px 36px}.welcome h1{margin:0;font-size:38px}.welcome h1 span{color:var(--coral)}.welcome>div>p:last-child{color:var(--muted)}.quick-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:26px}.stat{display:flex;align-items:center;gap:15px;padding:22px;border:2px solid var(--line);border-radius:22px 15px 25px 17px;box-shadow:4px 5px 0 var(--line);transform:rotate(-.5deg)}.stat:nth-child(2){transform:rotate(.5deg)}.stat b{font-size:36px;font-weight:900;font-family:var(--font-display)}.stat span{font-weight:700}.stat.sunshine{background:#ffe5a5}.stat.leaf{background:#cce6d2}.stat.sky{background:#cce8ef}.dashboard-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:25px}.dashboard-grid>.paper-card{min-width:0;padding:26px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.section-head h2{margin:0;font-size:26px}.section-head a{font-size:13px}.child-list,.feed-list{display:grid;gap:12px}.child-item{display:flex;align-items:center;gap:12px;padding:13px;border:1.5px dashed #a5b3aa;border-radius:14px}.avatar{display:grid;place-items:center;flex:0 0 45px;height:45px;color:#fff;font-size:20px;font-weight:900;font-family:var(--font-display);border:2px solid var(--line);border-radius:50% 45% 53% 47%;background:#e6a465;transform:rotate(-4deg)}.grow{flex:1;min-width:0}.grow b,.grow small{display:block}.grow small{margin-top:4px;color:var(--muted);font-size:12px}.small-button{padding:6px 9px;text-decoration:none;font-size:12px;border:1.5px solid var(--line);border-radius:8px;background:#e1f0e4;box-shadow:2px 2px 0 var(--line)}.feed-item{padding:18px;border-left:4px solid var(--coral);border-bottom:1.5px dashed #a7b5ab}.feed-meta{display:flex;justify-content:space-between;gap:12px;align-items:center}.feed-meta>span{display:inline-block;padding:4px 9px;font-size:12px;border:1.5px solid var(--line);border-radius:999px;background:#e2f0e5}.feed-meta time{color:var(--muted);font-size:12px}.feed-item h3{margin:10px 0 6px}.feed-item p{margin:0;color:var(--muted);font-size:13px;line-height:1.7}.feed-item>small{display:block;margin-top:10px;color:#7f8e85}.thumb-row{display:flex;gap:8px;margin-top:10px}.thumb-row img{width:62px;height:62px;object-fit:cover;border:2px solid var(--line);border-radius:10px;transform:rotate(-1deg)}.empty{padding:28px;color:var(--muted);text-align:center}
.roster-filter{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:25px;padding:14px 18px}.roster-filter select{padding:8px 10px;border:1.5px solid var(--line);border-radius:9px;background:#fff}.item-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.item-actions form{margin:0}.teacher-replies,.reply-history{margin-top:12px;padding:10px 12px;border:1.5px dashed #8ca18f;border-radius:10px;background:#eef6ef}.teacher-replies p,.reply-history p{margin:5px 0!important}.compact-welcome{padding-bottom:25px}.management-grid,.account-list{display:grid;gap:22px}.school-card,.account-card{padding:25px}.school-title{display:flex;align-items:center;gap:14px;margin-bottom:18px}.school-title h2{margin:0;flex:1}.grade-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.grade-card{padding:15px;border:1.5px dashed #8fa397;border-radius:14px;background:#fff}.grade-card h3{margin:0}.class-list{display:grid;gap:8px}.class-list>div{display:flex;justify-content:space-between;gap:10px;padding:9px;border-radius:9px;background:#f3f7f1}.class-list small{color:var(--muted)}.account-title{display:flex;align-items:center;gap:13px}.account-title h2,.account-title p{margin:0}.account-title p{margin-top:4px;color:var(--muted);font-size:13px}.account-title .status{margin-left:auto;padding:5px 9px;border-radius:999px;background:#dcefe0;font-size:12px}.account-title .status.off{background:#eee1de}.linked-children{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.linked-children span{padding:5px 9px;border:1px dashed #8fa397;border-radius:8px;font-size:12px}
.parent-hero{position:relative;padding:45px 20px 30px;text-align:center}.parent-hero h1{margin:0;font-size:44px}.parent-hero>p:last-child{color:var(--muted)}.sun-doodle{position:absolute;right:12%;top:0;color:var(--sun);font-size:60px;text-shadow:2px 2px 0 var(--line);transform:rotate(8deg)}.privacy-note{display:flex;align-items:center;gap:13px;width:min(650px,100%);margin:0 auto 35px;padding:15px 20px;border:1.5px dashed #7a9987;border-radius:14px;background:#e6f2e7}.privacy-note>span{font-size:25px}.lock-mark{display:grid;place-items:center;width:38px;height:38px;color:#fff;font-size:14px!important;font-weight:900;border:2px solid var(--line);border-radius:50%;background:var(--leaf)}.privacy-note b{font-family:var(--font-display)}.privacy-note p{margin:3px 0 0;color:var(--muted);font-size:12px}.timeline{display:grid;gap:28px;width:min(820px,100%);margin:auto}.memory-card{display:grid;grid-template-columns:90px 1fr;gap:20px}.memory-date{text-align:center}.memory-date b{display:grid;place-items:center;width:66px;height:66px;margin:auto;font-size:30px;font-weight:900;font-family:var(--font-display);border:2px solid var(--line);border-radius:50% 45% 53% 47%;background:var(--sun);box-shadow:3px 3px 0 var(--line);transform:rotate(-3deg)}.memory-date span{display:block;margin-top:9px;color:var(--muted);font-size:12px}.memory-body{min-width:0;padding:28px;border:2px solid var(--line);border-radius:23px 16px 27px 18px;background:#fffef8;box-shadow:6px 7px 0 var(--line)}.memory-body h2{margin:14px 0;font-size:28px;overflow-wrap:anywhere}.observation{color:#52685c;line-height:1.9}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:15px 0}.photo-grid img{width:100%;max-height:360px;object-fit:cover;border:2px solid var(--line);border-radius:16px 12px 18px 13px}.guidance{margin-top:20px;padding:17px;border:1.5px dashed #a68a53;border-radius:13px;background:#fff0b9}.guidance p{margin:7px 0 0;line-height:1.8}.teacher-sign{text-align:right;color:#7c8b82;font-size:12px;font-style:italic}
.goal-board{width:min(820px,100%);margin:0 auto 32px;padding:24px}.goal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.goal-grid article{padding:15px;border:1.5px dashed #93a595;border-radius:13px;background:#fff}.goal-grid h3{margin:12px 0 7px}.goal-grid p{color:var(--muted);line-height:1.7}.goal-status{padding:4px 8px;border-radius:999px;background:#f6df9f;font-size:12px}.goal-status.achieved{background:#d6ead9}.reply-form{display:flex;align-items:flex-end;gap:10px;margin-top:15px}.reply-form label{display:grid;flex:1;gap:5px;font-size:13px;font-weight:700}.reply-form textarea{width:100%;padding:9px;border:1.5px solid #809487;border-radius:9px;font:inherit}.reply-history span{font-weight:700}.reply-history small{color:var(--muted)}
@media(max-width:850px){.page{width:min(100% - 24px,700px);padding-top:20px}.topbar{height:64px;padding:0 14px}.logo span{display:none}.account>span{max-width:120px;overflow:hidden;text-overflow:ellipsis}.login-wrap{grid-template-columns:1fr;gap:26px;min-height:0}.login-illustration{padding:55px 12px 15px;text-align:center}.login-illustration h1{font-size:40px}.cloud{display:none}.sun{right:10px}.flower{left:0;bottom:-30px;font-size:60px}.login-card,.form-card{padding:34px 22px}.welcome{display:block;padding-top:22px}.welcome h1{font-size:32px}.quick-actions{justify-content:flex-start;margin-top:20px}.stats,.dashboard-grid,.grade-grid,.goal-grid{grid-template-columns:1fr}.stat{padding:16px}.dashboard-grid>.paper-card{padding:18px}.parent-hero h1{font-size:36px}.sun-doodle{right:0}.memory-card{grid-template-columns:1fr}.memory-date{display:flex;align-items:center;gap:10px;text-align:left}.memory-date b{width:54px;height:54px;margin:0}.memory-date span{margin:0}.memory-body{padding:21px}.photo-grid{grid-template-columns:1fr}.feed-meta{align-items:flex-start}.button{font-size:14px}.child-item{align-items:flex-start;flex-wrap:wrap}.item-actions{width:100%;padding-left:57px}.reply-form{display:block}.reply-form button{margin-top:8px}.school-title{align-items:flex-start;flex-wrap:wrap}}
@media(max-width:1100px) and (min-width:851px){.dashboard-grid{grid-template-columns:1fr}.welcome{align-items:flex-start}.quick-actions{max-width:520px}.management-grid{grid-template-columns:1fr}}
@media(max-width:600px){.page{width:calc(100% - 20px);padding-bottom:42px}.topbar{padding:0 10px}.account>span{display:none}.welcome{padding:14px 2px 24px}.welcome h1{font-size:28px;line-height:1.35}.quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:8px}.quick-actions .button{width:100%;padding:8px}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat{display:block;min-width:0;padding:12px 8px;transform:none!important}.stat b{display:block;font-size:26px}.stat span{font-size:11px;white-space:nowrap}.roster-filter{display:grid;grid-template-columns:1fr;padding:14px}.roster-filter select,.roster-filter .small-button{width:100%;min-height:38px}.dashboard-grid>.paper-card,.school-card,.account-card,.goal-board{padding:16px}.child-item{gap:9px}.item-actions{padding-left:0}.section-head h2{font-size:23px}.feed-item{padding:14px 12px}.form-card{padding:30px 18px}.form-card h1{font-size:29px}.login-illustration h1{font-size:34px}.login-card{padding:30px 20px}.parent-hero{padding:38px 4px 24px}.parent-hero h1{font-size:31px}.privacy-note{padding:13px}.memory-body{padding:18px 15px}.memory-body h2{font-size:24px}.guidance{padding:14px}.account-title{align-items:flex-start;flex-wrap:wrap}.account-title .status{margin-left:0}.class-list>div{display:block}.class-list small{display:block;margin-top:4px}.reply-form textarea{font-size:16px}}
