:root{--primary: #FF6B6B;--secondary: #4ECDC4;--accent: #F7D794;--bg-color: #F9FAFB;--card-bg: #FFFFFF;--text-main: #2D3436;--text-muted: #636E72;--border: #DFE6E9;--radius: 12px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#e5e7eb;color:var(--text-main);line-height:1.6;-webkit-font-smoothing:antialiased}#app{max-width:480px;margin:0 auto;min-height:100vh;background:var(--bg-color);position:relative;padding-bottom:70px;box-shadow:0 0 20px #0000000d}.welcome{text-align:center;padding:40px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh}.welcome h1{color:var(--primary);margin-bottom:10px;font-size:1.8rem}.welcome p{color:var(--text-muted);margin-bottom:30px}.input-group{width:100%;max-width:300px;margin-bottom:20px}.input-group input{width:100%;padding:12px 15px;border:1px solid var(--border);border-radius:var(--radius);font-size:1rem;outline:none;transition:border-color .3s;text-align:center}.input-group input:focus{border-color:var(--primary)}.btn-primary{background:var(--primary);color:#fff;border:none;padding:12px 30px;border-radius:25px;font-size:1.1rem;font-weight:700;cursor:pointer;box-shadow:0 4px 10px #ff6b6b4d;transition:transform .2s,box-shadow .2s}.btn-primary:active{transform:translateY(2px);box-shadow:0 2px 5px #ff6b6b4d}.header{background:#fff;padding:15px 20px;position:sticky;top:0;z-index:10;box-shadow:0 2px 10px #0000000d;display:flex;justify-content:space-between;align-items:center}.progress-text{font-weight:700;color:var(--text-main);font-size:1.1rem}.header-right{color:var(--primary);font-weight:500;font-size:.9rem}.page-content{padding:20px;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--card-bg);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:0 4px 6px #00000005}.card h2{font-size:1.25rem;margin-bottom:15px;color:var(--text-main);border-left:4px solid var(--primary);padding-left:10px;line-height:1.3}.section-title{display:flex;align-items:center;gap:8px;font-size:1.1rem;font-weight:700;margin:15px 0 10px;color:var(--secondary)}.card-text{color:var(--text-muted);white-space:pre-wrap;margin-bottom:15px}.highlight-box{background:#fff8f8;border-radius:8px;padding:15px;margin:15px 0}.highlight-box .card-text{color:var(--primary);margin-bottom:0;font-weight:500}.age-group{margin-top:15px}.age-item{border:1px solid var(--border);border-radius:8px;margin-bottom:10px;overflow:hidden;background:#fff}.age-header{background:#f8f9fa;padding:12px 15px;font-weight:700;cursor:pointer;display:flex;justify-content:space-between;align-items:center;color:var(--text-main);-webkit-user-select:none;user-select:none}.age-header:after{content:"+";color:var(--primary);font-weight:700;font-size:1.2rem}.age-item.active .age-header{background:var(--primary);color:#fff}.age-item.active .age-header:after{content:"-";color:#fff}.age-content{padding:0 15px;max-height:0;overflow:hidden;transition:max-height .3s ease-out,padding .3s ease;white-space:pre-wrap;color:var(--text-muted);font-size:.95rem}.age-item.active .age-content{padding:15px;max-height:800px;border-top:1px solid var(--border)}.checkin-form textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:15px;font-family:inherit;font-size:1rem;min-height:120px;resize:vertical;margin-top:10px;outline:none;background:#fdfdfd}.checkin-form textarea:focus{border-color:var(--secondary);background:#fff;box-shadow:0 0 0 2px #4ecdc41a}.btn-submit{width:100%;background:var(--secondary);color:#fff;border:none;padding:14px;border-radius:8px;font-size:1.1rem;font-weight:700;margin-top:15px;cursor:pointer;transition:background .3s}.btn-submit:active{background:#3eb8b0}.btn-submit:disabled{background:#cbd5e1;cursor:not-allowed}ul.dimensions{padding-left:20px;color:var(--text-muted);margin-bottom:15px}ul.dimensions li{margin-bottom:8px}.nav-bar{position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;background:#fff;display:flex;justify-content:space-around;padding:10px 0 calc(10px + env(safe-area-inset-bottom,0px));box-shadow:0 -2px 10px #0000000d;z-index:100;border-top-left-radius:16px;border-top-right-radius:16px}.nav-item{display:flex;flex-direction:column;align-items:center;color:var(--text-muted);text-decoration:none;font-size:.8rem;gap:4px;cursor:pointer;flex:1;transition:color .3s}.nav-item.active{color:var(--primary);font-weight:700}.nav-icon{font-size:1.4rem;margin-bottom:2px}.board-stats{display:flex;gap:15px;margin-bottom:20px}.stat-box{flex:1;background:#fff;border-radius:var(--radius);padding:15px;text-align:center;box-shadow:0 4px 6px #00000005}.stat-num{font-size:1.8rem;font-weight:900;color:var(--primary);margin-bottom:5px}.stat-label{font-size:.85rem;color:var(--text-muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:15px}.day-cell{aspect-ratio:1;border-radius:8px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-size:.9rem;color:#94a3b8;font-weight:700;position:relative}.day-cell.completed{background:var(--secondary);color:#fff;box-shadow:0 2px 4px #4ecdc44d}.day-cell.current{border:2px solid var(--primary);color:var(--primary);background:#fff}.empty-cell{background:transparent}.record-list{margin-top:30px}.record-item{border-left:3px solid var(--secondary);padding-left:15px;margin-bottom:20px;position:relative}.record-item:before{content:"";position:absolute;left:-7px;top:0;width:11px;height:11px;background:var(--secondary);border-radius:50%}.record-date{font-size:.85rem;color:var(--text-muted);margin-bottom:5px;font-weight:700}.record-title{font-size:1rem;font-weight:700;color:var(--text-main);margin-bottom:8px}.record-content{background:#f8f9fa;padding:12px;border-radius:8px;font-size:.95rem;color:var(--text-main);white-space:pre-wrap}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}#confetti-container{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9999}.image-upload-area{margin-top:12px}.btn-upload{width:100%;padding:12px;border:2px dashed var(--border);border-radius:8px;background:#fafafa;color:var(--text-muted);font-size:1rem;cursor:pointer;transition:border-color .3s,background .3s}.btn-upload:hover{border-color:var(--secondary);background:#f0fffe;color:var(--secondary)}.btn-remove-img{display:block;width:100%;margin-top:8px;padding:8px;border:none;border-radius:6px;background:#fee2e2;color:#b91c1c;font-size:.9rem;cursor:pointer}.upload-btn-group{display:flex;gap:10px}.btn-upload.half{flex:1}.teacher-comment{background:linear-gradient(135deg,#fdf4ff,#f5e6ff);border:1px solid #e9d5ff;border-radius:10px;padding:12px 15px;margin-top:12px}.teacher-comment-label{font-size:.85rem;color:#7c3aed;font-weight:700;margin-bottom:6px}.teacher-comment-text{color:#4c1d95;font-size:.95rem;line-height:1.6}.admin-comment-area{border-top:1px solid #f1f5f9;padding-top:10px;margin-top:12px}.admin-comment-label{font-size:.85rem;color:#7c3aed;font-weight:700;margin-bottom:6px}.admin-comment-saved{background:#fdf4ff;border-radius:6px;padding:8px 12px;font-size:.9rem;color:#4c1d95;margin-bottom:8px;min-height:32px}.admin-comment-input{width:100%;border:1px solid #e2e8f0;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:.9rem;resize:vertical;min-height:70px;outline:none;background:#fafafa;margin-bottom:6px}.admin-comment-input:focus{border-color:#a78bfa;background:#fff}.admin-comment-btn{padding:6px 16px;background:#7c3aed;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background .2s}.admin-comment-btn:hover{background:#6d28d9}.admin-comment-btn:disabled{background:#94a3b8;cursor:not-allowed}.btn-back{background:none;border:none;color:var(--secondary);font-size:.95rem;font-weight:600;cursor:pointer;padding:0;font-family:inherit}.btn-back:hover{opacity:.7}
