:root{
    --primary:#43A047;--primary-2:#2E7D32;--primary-soft:#E8F5E9;--accent:#FFB74D;--yellow-soft:#FFF8E1;--blue-soft:#E3F2FD;--red-soft:#FFEBEE;--danger:#EF5350;--warning:#FBC02D;--success:#43A047;--bg:#F6FAF7;--card:#fff;--text:#263238;--muted:#78909C;--border:#E0E8E2;--shadow:0 12px 28px rgba(38,50,56,.08);--radius:18px;
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);font-size:14px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.admin-body{min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{width:270px;background:linear-gradient(180deg,#172A34,#243842);color:white;position:fixed;inset:0 auto 0 0;padding:18px 14px;z-index:20;overflow-y:auto}.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 22px}.brand-mark{width:42px;height:42px;border-radius:14px;background:#264f3a;display:grid;place-items:center;font-size:25px}.brand span{display:block;font-size:12px;color:#BAE8C0}.brand strong{display:block;font-size:17px;color:#7CFF8C}.side-nav{display:flex;flex-direction:column;gap:4px}.side-nav a{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:12px;color:#DFEBE8;transition:.2s}.side-nav a:hover,.side-nav a.is-active{background:var(--primary);color:#fff}.nav-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#8AA0A8;margin:16px 10px 6px}.main-area{margin-left:270px;width:calc(100% - 270px);min-height:100vh}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 22px;position:sticky;top:0;z-index:15}.hamburger{display:none;border:0;background:var(--primary-soft);border-radius:12px;width:42px;height:42px}.search-box{flex:1;display:flex;align-items:center;gap:10px;background:#F8FBF8;border:1px solid var(--border);border-radius:14px;padding:0 14px;max-width:540px}.search-box input{height:42px;border:0;background:transparent;outline:0;width:100%}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.icon-btn{width:40px;height:40px;border:1px solid var(--border);background:#fff;border-radius:12px}.user-chip{display:flex;align-items:center;gap:10px;border-left:1px solid var(--border);padding-left:12px}.avatar,.big-avatar{border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:800}.avatar{width:38px;height:38px}.user-chip span{display:block;font-size:12px;color:var(--muted)}.logout-link{color:var(--danger);font-weight:700}.page-content{padding:24px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.page-head.no-margin{margin-bottom:0}.breadcrumb{color:var(--muted);font-size:13px;margin-bottom:7px}.page-head h1{font-size:28px;margin:0 0 6px}.page-head p{margin:0;color:var(--muted)}.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-2)}.btn-outline{background:#fff;color:var(--text);border:1px solid var(--border)}.btn-full{width:100%}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.stat-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:17px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow)}.stat-icon{width:50px;height:50px;border-radius:18px;display:grid;place-items:center;font-size:24px;background:var(--primary-soft)}.stat-card span{display:block;color:var(--muted);font-size:13px}.stat-card strong{display:block;font-size:22px;margin:4px 0}.stat-card small{color:var(--muted)}.stat-card.green .stat-icon{background:var(--primary-soft)}.stat-card.blue .stat-icon{background:var(--blue-soft)}.stat-card.yellow .stat-icon{background:var(--yellow-soft)}.stat-card.orange .stat-icon{background:#FFF3E0}.stat-card.red .stat-icon{background:var(--red-soft)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card h2{font-size:18px;margin:0 0 14px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.card-head h2{margin:0}.grid-2{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-bottom:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:18px}.chart-line{height:245px;color:var(--primary);display:flex;align-items:center}.chart-line svg{width:100%;height:100%}.donut-wrap{display:flex;align-items:center;justify-content:center;gap:28px;min-height:245px}.donut{width:170px;height:170px;border-radius:50%;background:conic-gradient(#4FC3F7 0 25%,#66BB6A 25% 52%,#FFCA28 52% 76%,#FFA726 76% 100%);display:grid;place-items:center;position:relative}.donut:before{content:"";position:absolute;width:104px;height:104px;background:#fff;border-radius:50%}.donut span{position:relative;text-align:center;font-size:24px;font-weight:800}.donut small{font-size:12px;color:var(--muted)}.legend{display:grid;gap:8px}.legend span{color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--primary);margin-right:8px}.mini-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.mini-list li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--border);padding-bottom:10px}.mini-list li:last-child{border-bottom:0}.mini-list span{color:var(--muted)}.mini-list.check li:before{content:"◆";color:var(--primary);font-size:10px;margin-right:7px}.filter-bar{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap}.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);outline:0}.input,.select{height:42px;padding:0 13px}.textarea{min-height:105px;padding:13px;resize:vertical}.input.small{height:34px;min-width:150px}.select.compact{width:auto;min-width:160px;height:38px}.table-card{padding:0;overflow:hidden}.table-card table{width:100%;border-collapse:collapse}.table-card th,.table-card td{padding:14px 16px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.table-card th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#607D8B;background:#FAFCFA}.table-card tr:last-child td{border-bottom:0}.actions{white-space:nowrap;color:#388E3C}.actions a{color:#388E3C}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800}.badge.success{background:var(--primary-soft);color:#2E7D32}.badge.danger{background:var(--red-soft);color:#C62828}.badge.warning{background:var(--yellow-soft);color:#9A6400}.badge.muted{background:#ECEFF1;color:#607D8B}.tabs{display:flex;gap:8px;margin-bottom:14px;overflow:auto}.tabs a{padding:10px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--muted);font-weight:700;white-space:nowrap}.tabs a.is-active{background:var(--primary-soft);color:var(--primary-2);border-color:#B9E4BF}.form-grid{display:grid;gap:16px}.form-grid.two-col{grid-template-columns:repeat(2,1fr)}.form-grid.three-col{grid-template-columns:repeat(3,1fr)}.form-grid label{display:block;margin-bottom:6px;font-weight:700;color:#455A64}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;gap:10px;align-items:center}.section-title{font-size:16px;font-weight:900;color:var(--primary-2);padding-top:8px}.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.check-grid label{border:1px solid var(--border);border-radius:12px;padding:12px;background:#FAFCFA}.total-box{background:var(--primary-soft);border:1px dashed #9BD3A1;border-radius:14px;padding:16px;font-size:17px}.detail-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.detail-list li{display:flex;justify-content:space-between;border-bottom:1px dashed var(--border);padding-bottom:10px}.detail-list span{color:var(--muted)}.profile-card{text-align:center}.big-avatar{width:90px;height:90px;margin:0 auto 12px;font-size:27px}.profile-info{display:grid;gap:8px;text-align:left;margin-top:18px}.text-danger{color:var(--danger)}.actions-row{display:flex;gap:10px}.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.report-card{background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:8px}.report-card span{font-size:32px}.report-card strong{font-size:17px}.report-card small{color:var(--muted)}.empty-state{text-align:center;padding:80px 20px}.empty-state div{font-size:64px}.empty-state h1{font-size:28px}.auth-body{min-height:100vh;background:linear-gradient(180deg,#E8F5E9,#F6FAF7)}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:40px;padding:40px;position:relative;overflow:hidden}.login-illustration{position:relative;min-height:560px;border-radius:28px;background:linear-gradient(180deg,#E3F2FD,#C8E6C9 70%,#8BC34A);box-shadow:var(--shadow);overflow:hidden}.garden-scene{position:absolute;inset:0;display:grid;place-items:center;font-size:68px}.sun{position:absolute;top:34px;right:50px}.tree.left{position:absolute;bottom:80px;left:55px}.tree.right{position:absolute;bottom:120px;right:70px}.kids{position:absolute;bottom:170px;left:50%;transform:translateX(-50%);font-size:78px}.flowers{position:absolute;bottom:40px;font-size:30px}.cloud{position:absolute;background:#fff;border-radius:999px;opacity:.8}.cloud-1{width:160px;height:48px;top:65px;left:70px}.cloud-2{width:120px;height:38px;top:140px;right:90px}.login-card{background:#fff;border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow);padding:34px;max-width:440px;width:100%;margin:auto}.login-logo{text-align:center;font-size:48px}.login-card h1{text-align:center;line-height:1.05;margin:8px 0 8px;text-transform:uppercase}.login-card h1 span{color:var(--primary)}.login-card p{text-align:center;color:var(--muted);margin-bottom:20px}.login-card label{font-weight:700;display:block;margin:12px 0 6px}.checkbox-line{display:flex!important;align-items:center;gap:8px;color:var(--muted);font-weight:500!important}.login-card small{display:block;text-align:center;color:var(--muted);margin-top:20px}.alert{border-radius:12px;padding:12px;margin-bottom:12px}.alert-danger{background:var(--red-soft);color:#C62828}.install-wrap{min-height:100vh;display:grid;place-items:center;padding:30px}.install-card{max-width:900px;width:100%}.install-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.sidebar-backdrop{display:none}
@media(max-width:1180px){.stat-grid{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3,.report-grid{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-illustration{display:none}.login-card{max-width:480px}.topbar .search-box{max-width:none}.topbar-actions .select,.logout-link{display:none}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.is-open{transform:translateX(0)}.sidebar-backdrop.is-open{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:19}.main-area{margin-left:0;width:100%}.hamburger{display:block}.topbar{padding:0 12px}.search-box{display:none}.page-content{padding:16px}.page-head{flex-direction:column}.stat-grid,.stat-grid.four{grid-template-columns:1fr}.filter-bar{display:grid;grid-template-columns:1fr}.form-grid.two-col,.form-grid.three-col,.check-grid{grid-template-columns:1fr}.table-card{overflow-x:auto}.table-card table{min-width:760px}.user-chip div:not(.avatar){display:none}.login-page{padding:16px}.login-card{padding:24px;border-radius:22px}.report-grid{grid-template-columns:1fr}}

/* v2.0A public website + parent portal, scoped extension */
.public-site{min-height:100vh;background:#F6FAF7;color:var(--text)}.public-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:24px;padding:16px 34px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.public-brand{display:flex;align-items:center;gap:12px;color:var(--text)}.public-brand-mark{width:44px;height:44px;border-radius:16px;background:var(--primary-soft);display:grid;place-items:center;font-size:24px}.public-brand small{display:block;color:var(--muted);font-size:12px}.public-brand strong{font-size:18px;color:var(--primary-2)}.public-nav{display:flex;gap:18px;margin-left:auto}.public-nav a{color:#455A64;font-weight:700}.public-nav a:hover{color:var(--primary-2)}.public-actions{display:flex;gap:10px}.public-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;align-items:center;padding:64px 42px 38px;max-width:1240px;margin:auto}.public-hero-copy h1{font-size:54px;line-height:1.02;margin:16px 0;color:#1B3A28}.public-hero-copy p{font-size:18px;color:var(--muted);max-width:680px}.public-pill{display:inline-flex;background:var(--primary-soft);color:var(--primary-2);border:1px solid #B9E4BF;padding:8px 13px;border-radius:999px;font-weight:800;font-size:13px}.public-hero-actions{display:flex;gap:12px;margin:24px 0}.public-trust{display:flex;flex-wrap:wrap;gap:10px}.public-trust span{background:#fff;border:1px solid var(--border);border-radius:999px;padding:8px 12px;color:#455A64}.public-hero-card{position:relative;min-height:430px;border:1px solid var(--border);border-radius:32px;background:linear-gradient(180deg,#E3F2FD,#C8E6C9 72%,#99D36E);box-shadow:var(--shadow);overflow:hidden}.garden-card-scene{position:absolute;inset:0}.scene-sun{position:absolute;right:34px;top:34px;font-size:54px}.scene-kids{position:absolute;left:50%;bottom:138px;transform:translateX(-50%);font-size:86px}.scene-tree{position:absolute;left:34px;bottom:88px;font-size:74px}.scene-flowers{position:absolute;left:50%;bottom:36px;transform:translateX(-50%);font-size:42px}.quick-parent-card{position:absolute;right:24px;bottom:24px;left:24px;background:rgba(255,255,255,.92);border:1px solid var(--border);border-radius:22px;padding:18px}.quick-parent-card ul{margin:10px 0 0;padding-left:18px;color:#455A64}.public-section{max-width:1240px;margin:0 auto 28px;padding:0 42px}.public-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.public-feature-grid article,.public-info-card,.public-admin-list{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.public-feature-grid span{font-size:36px}.public-feature-grid h2{font-size:20px;margin:10px 0}.public-feature-grid p,.public-split p,.public-info-card li{color:var(--muted)}.public-split{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:stretch}.public-split>div:first-child{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px}.public-admin-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.public-admin-list span{background:var(--primary-soft);border-radius:14px;padding:14px;font-weight:800;color:var(--primary-2)}.public-page-title{max-width:960px;margin:0 auto;text-align:center;padding:76px 28px 34px}.public-page-title h1{font-size:44px;margin:14px 0 10px}.public-page-title p{color:var(--muted);font-size:18px}.public-footer{display:flex;justify-content:space-between;gap:20px;padding:28px 42px;margin-top:40px;background:#fff;border-top:1px solid var(--border)}.public-footer p{color:var(--muted);margin:6px 0 0}.public-footer-links{display:flex;gap:16px;align-items:center}.parent-body{min-height:100vh;background:#F3F8F4}.parent-shell{display:flex;min-height:100vh}.parent-sidebar{width:270px;background:#183126;color:#fff;padding:18px;position:fixed;inset:0 auto 0 0;z-index:20}.parent-brand{display:flex;align-items:center;gap:10px;color:#fff;padding:10px 8px 22px}.parent-brand span{width:42px;height:42px;border-radius:14px;background:#2E7D32;display:grid;place-items:center}.parent-nav{display:grid;gap:7px}.parent-nav a{color:#DCEBE0;padding:12px 14px;border-radius:14px;font-weight:700}.parent-nav a.is-active,.parent-nav a:hover{background:#2E7D32;color:#fff}.parent-main{margin-left:270px;width:calc(100% - 270px)}.parent-topbar{height:74px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:9}.parent-kicker{display:block;color:var(--muted);font-size:13px}.parent-user{margin-left:auto;display:flex;align-items:center;gap:10px}.parent-user>span{width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:900}.parent-user a{font-size:12px;color:var(--danger)}.parent-content{padding:24px}.parent-page-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}.parent-page-head h1{font-size:28px;margin:0 0 6px}.parent-page-head p{margin:0;color:var(--muted)}.parent-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.parent-stat-grid article,.parent-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.parent-stat-grid span{font-size:30px}.parent-stat-grid strong{display:block;font-size:22px;margin:8px 0}.parent-stat-grid small{color:var(--muted)}.parent-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.qr-card{text-align:center}.qr-img{max-width:320px;width:100%;border:1px solid var(--border);border-radius:18px;background:#fff}.qr-placeholder{width:260px;height:260px;margin:0 auto;display:grid;place-items:center;border-radius:18px;background:repeating-linear-gradient(45deg,#111 0,#111 8px,#fff 8px,#fff 16px);color:#fff;font-size:40px;font-weight:900}.qr-note{color:var(--muted);font-size:13px}.parent-login-body{min-height:100vh;background:linear-gradient(180deg,#E8F5E9,#F6FAF7)}.parent-login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;gap:32px;align-items:center;padding:42px;max-width:1180px;margin:auto}.parent-login-hero{min-height:520px;border-radius:32px;background:linear-gradient(180deg,#E3F2FD,#C8E6C9 68%,#9CCC65);box-shadow:var(--shadow);padding:44px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.parent-login-hero:after{content:"👧🧒🌳";position:absolute;right:32px;bottom:32px;font-size:84px}.parent-login-hero h1{font-size:48px;line-height:1.05;margin:18px 0;color:#1B3A28;max-width:620px}.parent-login-hero p{font-size:18px;color:#455A64;max-width:580px}.parent-login-badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.parent-login-badges span{background:#fff;border:1px solid var(--border);border-radius:999px;padding:8px 12px;font-weight:800}.parent-login-card{background:#fff;border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow);padding:34px;max-width:440px;width:100%;margin:auto}.parent-login-card h2{text-align:center;margin:8px 0}.parent-login-card p{text-align:center;color:var(--muted)}.parent-login-card label{font-weight:800;display:block;margin:12px 0 6px}.parent-login-card small{display:block;text-align:center;margin:14px 0;color:var(--muted)}.parent-login-back{display:block;text-align:center;margin-top:12px;color:var(--primary-2)}
@media(max-width:980px){.public-header{padding:14px 18px;flex-wrap:wrap}.public-nav{order:3;width:100%;overflow:auto;margin-left:0;padding-bottom:4px}.public-actions{margin-left:auto}.public-hero,.public-split,.parent-login-page{grid-template-columns:1fr}.public-hero{padding:36px 18px}.public-section{padding:0 18px}.public-feature-grid{grid-template-columns:1fr}.public-hero-copy h1,.parent-login-hero h1{font-size:38px}.public-footer{flex-direction:column;padding:24px 18px}.parent-login-hero{display:none}.parent-sidebar{transform:translateX(-100%);transition:.25s}.parent-sidebar.is-open{transform:translateX(0)}.parent-main{margin-left:0;width:100%}.parent-stat-grid,.parent-grid-2{grid-template-columns:1fr}.parent-content{padding:16px}.parent-page-head{flex-direction:column}.parent-user div{display:none}.parent-login-page{padding:18px}.parent-login-card{padding:24px}}
/* v2.0B MySQL CRUD helpers */
.alert-success{background:var(--primary-soft);color:#2E7D32;border:1px solid #B9E4BF}.inline-form{display:inline-flex;margin-left:6px}.inline-form button{border:0;background:transparent;color:#388E3C;font-weight:800;cursor:pointer;padding:0}.muted-text{color:var(--muted)}.mt-16{margin-top:16px}.big-number{font-size:42px;font-weight:900;margin:0 0 8px;color:var(--primary-2)}.text-danger{color:var(--danger)}.detail-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.detail-list li{display:flex;justify-content:space-between;gap:16px;border-bottom:1px dashed var(--border);padding-bottom:10px}.detail-list span{color:var(--muted)}.detail-list strong{text-align:right}.profile-card{text-align:center}.big-avatar{width:78px;height:78px;margin:0 auto 12px;font-size:24px}.profile-info{display:grid;grid-template-columns:1fr 1fr;text-align:left;gap:9px;margin-top:14px}.profile-info span{color:var(--muted)}

/* v2.0B2 overrides: centered login, FE parent portal, money formatter, multi-site */
.login-page-centered{display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(180deg,#E3F2FD 0%,#F7FFF4 48%,#A5D86B 100%);position:relative;min-height:100vh;overflow:hidden}.login-bg-scene{position:absolute;inset:0;pointer-events:none}.bg-cloud{position:absolute;background:#fff;border-radius:999px;opacity:.82;box-shadow:35px 8px 0 10px rgba(255,255,255,.72)}.bg-cloud-1{width:150px;height:46px;left:8%;top:12%}.bg-cloud-2{width:120px;height:38px;right:12%;top:20%}.bg-tree{position:absolute;font-size:108px;bottom:92px}.bg-tree-left{left:6%}.bg-tree-right{right:8%}.bg-kids{position:absolute;left:12%;bottom:42px;font-size:84px}.bg-flowers{position:absolute;right:15%;bottom:38px;font-size:40px}.login-card-centered{position:relative;z-index:2;margin:0;max-width:430px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px)}.site-switch-form{display:flex;align-items:center}.money-live-hint{display:block;margin-top:6px;color:var(--primary-2);font-weight:800}.public-flash{max-width:1180px;margin:14px auto 0;padding:0 24px}.public-hero-with-login .public-login-hero-card{min-height:500px}.parent-home-login-card{max-width:470px;margin:auto}.parent-home-login-card p{margin:8px 0 12px}.parent-home-login-form{display:grid;gap:9px;margin-top:12px}.parent-home-login-form label{font-weight:800;color:#455A64}.parent-home-login-form .btn{margin-top:5px}.parent-fe-page{max-width:1180px;margin:0 auto;padding:30px 42px}.parent-fe-page .parent-page-head{margin-top:10px}.parent-fe-logged .public-header{box-shadow:0 10px 30px rgba(38,50,56,.06)}.public-nav a.is-active{color:var(--primary-2)}
@media(max-width:980px){.bg-tree{font-size:72px}.bg-kids{font-size:62px;left:4%;bottom:26px}.bg-flowers{font-size:26px;right:5%;bottom:24px}.login-page-centered{padding:16px}.site-switch-form .select{min-width:190px}.public-hero-with-login .public-login-hero-card{min-height:540px}.parent-fe-page{padding:18px}}
@media(max-width:640px){.public-actions .btn{padding:9px 10px}.public-actions .btn-outline{display:none}.login-card-centered{max-width:100%;padding:24px}.bg-tree,.bg-kids,.bg-flowers{opacity:.35}.site-switch-form{display:none}}


/* v2.0B2.2 hotfix: dùng ảnh nền login thật + sửa trải nghiệm đăng nhập phụ huynh FE */
.login-page-centered,
.parent-login-body{
    background-image:linear-gradient(180deg,rgba(255,255,255,.10),rgba(245,255,238,.18)),url('../images/login-garden-bg.jpg') !important;
    background-size:cover !important;
    background-position:center center !important;
    background-repeat:no-repeat !important;
}
.login-bg-scene{display:none !important;}
.login-card-centered,
.parent-login-card{
    background:rgba(255,255,255,.92) !important;
    border:1px solid rgba(255,255,255,.78) !important;
    box-shadow:0 22px 70px rgba(20,80,40,.18) !important;
    backdrop-filter:blur(10px);
}
.parent-login-page{
    max-width:100% !important;
    min-height:100vh !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    padding:24px !important;
}
.parent-login-hero{display:none !important;}
.parent-login-card{max-width:430px !important;}
.public-login-hero-card{
    background-image:linear-gradient(180deg,rgba(255,255,255,.05),rgba(245,255,238,.18)),url('../images/login-garden-bg.jpg') !important;
    background-size:cover !important;
    background-position:center center !important;
}
.public-login-hero-card .garden-card-scene{display:none !important;}
.public-login-hero-card .quick-parent-card{
    background:rgba(255,255,255,.90) !important;
    backdrop-filter:blur(8px);
}
@media(max-width:980px){
    .parent-login-page{padding:16px !important;}
    .parent-login-card{max-width:100% !important;}
}


/* v2.0B2.3 exact background patch */
.login-page-centered,
.parent-login-body{
    background-image:url('../images/login-garden-bg-exact.png') !important;
    background-size:cover !important;
    background-position:center center !important;
    background-repeat:no-repeat !important;
    background-attachment:fixed !important;
}
.public-login-hero-card{
    background-image:url('../images/login-garden-bg-exact.png') !important;
    background-size:cover !important;
    background-position:center center !important;
    background-repeat:no-repeat !important;
}
.login-card-centered, .parent-login-card, .quick-parent-card{
    background:rgba(255,255,255,.88) !important;
}


/* v2.0B2.4 FE popup login + parent top menu */
.public-header{position:sticky;top:0;z-index:60}.public-nav .parent-menu-link{background:var(--primary-soft);color:var(--primary-2);border-radius:999px;padding:9px 12px;font-weight:900}.public-actions button{font:inherit}.parent-account-chip{max-width:220px;overflow:hidden;text-overflow:ellipsis}.footer-login-link{border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:0}.footer-login-link:hover{color:var(--primary-2)}
.public-hero-actions{display:flex;gap:10px;flex-wrap:wrap}.public-hero-actions button{font:inherit}.parent-home-action-card{text-align:center;display:grid;gap:12px}.home-card-icon{font-size:42px}.parent-home-quick-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}.parent-home-quick-links a{background:rgba(255,255,255,.92);border:1px solid var(--border);border-radius:14px;padding:10px;font-weight:900;color:var(--primary-2)}
.parent-login-modal{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;padding:22px}.parent-login-modal.is-open{display:flex}.parent-login-backdrop{position:absolute;inset:0;background:rgba(10,42,28,.42);backdrop-filter:blur(5px)}.parent-login-dialog{position:relative;width:min(430px,100%);border-radius:30px;background:rgba(255,255,255,.92);box-shadow:0 30px 90px rgba(20,80,40,.30);border:1px solid rgba(255,255,255,.78);padding:32px;overflow:hidden}.parent-login-dialog:before{content:"";position:absolute;inset:0;background-image:url('../images/login-garden-bg-exact.png');background-size:cover;background-position:center;opacity:.16;z-index:0}.parent-login-dialog>*{position:relative;z-index:1}.parent-login-close{position:absolute;right:16px;top:14px;z-index:2;border:0;background:rgba(255,255,255,.86);width:38px;height:38px;border-radius:999px;font-size:28px;line-height:1;cursor:pointer;color:#2E7D32}.parent-login-dialog-logo{width:70px;height:70px;margin:0 auto 10px;border-radius:22px;background:var(--primary-soft);display:grid;place-items:center;font-size:34px}.parent-login-dialog h2{text-align:center;margin:6px 0 8px;font-size:26px}.parent-login-dialog p{text-align:center;color:#607D8B;margin:0 0 18px}.parent-popup-login-form{display:grid;gap:9px}.parent-popup-login-form label{font-weight:900;color:#455A64}.parent-login-dialog small{display:block;text-align:center;margin-top:14px;color:#78909C}.modal-alert{margin-bottom:14px}.public-flash{position:sticky;top:74px;z-index:55}.alert{border-radius:14px;padding:12px 14px;font-weight:800}.alert-danger{background:#FFEBEE;color:#C62828;border:1px solid #FFCDD2}.alert-success{background:var(--primary-soft);color:#2E7D32;border:1px solid #B9E4BF}
@media(max-width:1180px){.public-nav .parent-menu-link:nth-last-child(n+5){display:none}.public-actions{gap:8px}.parent-account-chip{max-width:160px}}
@media(max-width:760px){.public-nav .parent-menu-link{display:none}.public-header{align-items:flex-start}.public-actions{width:100%;justify-content:flex-end}.parent-login-dialog{padding:26px 22px}.parent-home-quick-links{grid-template-columns:1fr}.public-flash{top:92px}}

/* v2.0B2.5: compact admin inputs + permission UI */
.filter-bar.compact-filter,
.filter-bar{
    align-items:end;
}
.filter-bar .input,
.filter-bar .select{
    width:auto !important;
    min-width:180px;
    max-width:280px;
    flex:0 0 auto;
}
.filter-bar .input[name="q"],
.filter-bar input[placeholder*="Tìm"]{
    min-width:260px;
    max-width:360px;
}
.admin-form-card{
    max-width:1180px;
}
.compact-admin-form .form-grid.two-col,
.form-grid.two-col{
    grid-template-columns:repeat(2,minmax(260px,520px));
    justify-content:start;
}
.compact-admin-form .form-grid.three-col,
.form-grid.three-col{
    grid-template-columns:repeat(3,minmax(220px,360px));
    justify-content:start;
}
.compact-admin-form .input,
.compact-admin-form .select,
.compact-admin-form .textarea,
.form-grid .input,
.form-grid .select,
.form-grid .textarea{
    max-width:100%;
}
.permission-table-wrap{
    overflow:auto;
    border:1px solid var(--border);
    border-radius:16px;
    background:#fff;
}
.permission-table{
    width:100%;
    border-collapse:collapse;
    min-width:820px;
}
.permission-table th,
.permission-table td{
    padding:12px 14px;
    border-bottom:1px solid var(--border);
    text-align:center;
}
.permission-table th:first-child,
.permission-table td:first-child{
    text-align:left;
    min-width:220px;
}
.permission-table td small{
    display:block;
    color:var(--muted);
    font-weight:500;
    margin-top:3px;
}
.site-permission-grid{
    grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
    max-width:920px;
}
@media(max-width:980px){
    .filter-bar .input,
    .filter-bar .select,
    .filter-bar .input[name="q"]{
        width:100% !important;
        max-width:100%;
    }
    .compact-admin-form .form-grid.two-col,
    .compact-admin-form .form-grid.three-col,
    .form-grid.two-col,
    .form-grid.three-col{
        grid-template-columns:1fr;
    }
}

/* v2.0B2.6: remember-login + quantified menu tables */
.remember-line{font-weight:800;color:#455A64;margin-top:4px;display:flex;align-items:center;gap:8px}.remember-line input{width:auto}.menu-stat-grid{margin-bottom:16px}.menu-tabs{margin-bottom:18px}.wide-table-card{overflow:auto}.wide-table-card table{min-width:1120px}.table-inner-head{padding:16px 18px 0 18px;margin-bottom:0}.table-inner-head + table{margin-top:12px}.menu-grid-summary{grid-template-columns:1.3fr .7fr}.menu-note-card .mini-list li{align-items:flex-start}.menu-note-card .mini-list strong{text-align:right;max-width:55%}@media(max-width:980px){.menu-grid-summary{grid-template-columns:1fr}.menu-note-card .mini-list li{display:block}.menu-note-card .mini-list strong{display:block;max-width:100%;text-align:left;margin-top:4px}}

/* v2.0B2.7 menu quant practical UI */
.menu-workspace{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);gap:18px;margin-bottom:18px}.menu-panel{align-self:start}.compact-form{display:grid;grid-template-columns:130px minmax(220px,1fr);gap:10px 14px;align-items:center}.compact-form label{font-weight:800;color:#455A64}.compact-form .btn,.compact-form .form-actions,.compact-form .menu-details{grid-column:2}.compact-input{max-width:520px}.menu-entry-form{display:grid;grid-template-columns:130px minmax(220px,1fr);gap:10px 14px;align-items:center}.menu-entry-form label{font-weight:800;color:#455A64}.menu-entry-form .btn{grid-column:2}.menu-details{margin-top:14px;border-top:1px dashed var(--border);padding-top:12px}.menu-details summary{font-weight:900;color:var(--primary-2);cursor:pointer}.shopping-filter-form{display:grid;grid-template-columns:120px minmax(180px,1fr) 120px minmax(180px,1fr);gap:12px 14px;align-items:center}.shopping-filter-form label{font-weight:800;color:#455A64}.shopping-filter-form .btn{grid-column:4;justify-self:start}.compact-total{display:inline-block;padding:12px 16px}.ingredient-form-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;align-items:end}.ingredient-form-grid label{font-weight:800;color:#455A64;display:grid;gap:6px}.ingredient-form-grid .btn{height:42px}.wide-table-card{overflow-x:auto}.wide-table-card table{min-width:980px}.table-inner-head{padding:0 0 12px}.mt-16{margin-top:16px}@media(max-width:1100px){.menu-workspace{grid-template-columns:1fr}.shopping-filter-form{grid-template-columns:1fr 1fr}.shopping-filter-form .btn{grid-column:auto}.ingredient-form-grid{grid-template-columns:1fr 1fr}.compact-form,.menu-entry-form{grid-template-columns:1fr}.compact-form .btn,.compact-form .form-actions,.menu-entry-form .btn{grid-column:auto}}@media(max-width:640px){.shopping-filter-form,.ingredient-form-grid{grid-template-columns:1fr}.compact-input{max-width:100%}}

/* v2.0B2.9 date input dd/mm/yyyy */
.input.date-vn{max-width:220px;}
.compact-form .input.date-vn{max-width:240px;}

/* v2.0B2.10: chỉnh CRUD định lượng theo lớp */
.menu-classes-workspace .info-panel .total-box{font-weight:800;line-height:1.5}.check-line{display:flex!important;align-items:center;gap:8px;margin:8px 0 2px}.check-line input{width:auto!important}.wide-table-card .actions-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.wide-table-card .actions-row a{font-weight:800;color:#2E7D32}

/* v2.0B2.12 - Smart Rotation + compact recipe controls */
.mini-inline-form{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:260px}.mini-inline-form .select{min-width:190px;height:36px;padding:0 10px}.mini-inline-form .btn{padding:8px 11px}.menu-workspace .mini-list{margin-top:4px}.menu-workspace .mini-list li{justify-content:flex-start}.table-inner-head form{margin:0}.badge.muted{background:#ECEFF1;color:#607D8B}.badge.warning{background:#FFF8E1;color:#9A6400}.badge.success{background:#E8F5E9;color:#2E7D32}
@media(max-width:980px){.mini-inline-form{min-width:0;flex-direction:column;align-items:stretch}.mini-inline-form .select{width:100%;min-width:0}.table-inner-head{align-items:flex-start;flex-direction:column}}
/* v2.0B2.12.2 - meal profile CRUD hints */
.field-hint{font-size:12px;color:#78909C;margin-top:6px;line-height:1.35}.mini-link{font-size:12px;font-weight:800;color:#2E7D32;text-decoration:none;margin-left:8px}.mini-link:hover{text-decoration:underline}

/* V2.0B2.12.3 - Compact admin sidebar: reduce height and hide visible scrollbar */
@media (min-width: 821px){
  .sidebar{
    width:250px;
    padding:10px 10px 12px;
    overflow-y:auto;
    scrollbar-width:none;
    -ms-overflow-style:none;
  }
  .sidebar::-webkit-scrollbar{width:0;height:0;display:none;}
  .main-area{margin-left:250px;width:calc(100% - 250px);}
  .brand{gap:10px;padding:4px 8px 12px;}
  .brand-mark{width:36px;height:36px;border-radius:12px;font-size:21px;}
  .brand span{font-size:11px;line-height:1.15;}
  .brand strong{font-size:15px;line-height:1.15;}
  .side-nav{gap:1px;}
  .side-nav a{gap:9px;padding:7px 10px;border-radius:10px;font-size:13px;line-height:1.2;min-height:32px;}
  .side-nav a > span{display:inline-block;line-height:1.2;}
  .nav-label{font-size:10px;margin:9px 9px 4px;letter-spacing:.07em;line-height:1.2;}
}
@media (min-width: 821px) and (max-height: 780px){
  .sidebar{padding-top:8px;}
  .brand{padding-bottom:8px;}
  .brand-mark{width:34px;height:34px;font-size:20px;}
  .side-nav a{padding-top:6px;padding-bottom:6px;min-height:29px;}
  .nav-label{margin-top:7px;margin-bottom:3px;}
}

/* v2.0B2.13 FE CMS Editable */
.cms-admin-grid{align-items:start}.cms-preview-card{position:sticky;top:92px}.cms-page-mini-list{display:grid;gap:10px}.cms-page-mini-list a{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:14px;padding:12px;background:#FAFCFA}.cms-page-mini-list span{color:var(--muted);font-size:12px}.cms-content-textarea{min-height:320px}.public-content-body{line-height:1.78;color:#455A64;font-size:16px}.public-content-body h2{color:var(--text);font-size:28px}.public-contact-line{font-size:13px;color:rgba(255,255,255,.75);margin-top:6px}@media(max-width:1100px){.cms-admin-grid{grid-template-columns:1fr}.cms-preview-card{position:static}}

/* v2.0B2.13.1 - Media manager */
.cms-banner-preview { margin-top: 10px; border: 1px solid #dbe7df; border-radius: 14px; overflow: hidden; background: #f8fbf8; max-height: 170px; }
.cms-banner-preview img { display: block; width: 100%; height: 150px; object-fit: cover; }
.media-admin-grid { align-items: start; }
.media-size-hints { background: #f1fbf1; border: 1px dashed #9bd89b; border-radius: 14px; padding: 12px 14px; display: grid; gap: 6px; color: #315b37; }
.media-help-box { margin-top: 18px; padding: 14px 16px; border-radius: 14px; background: #f8fbff; border: 1px solid #dce9f8; color: #436172; }
.media-help-box p { margin: 6px 0 0; line-height: 1.5; }
.media-library-card { margin-top: 18px; }
.card-head-inline { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 14px; }
.card-head-inline h2 { margin-bottom: 4px; }
.media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.media-card { border: 1px solid #dfe8df; border-radius: 18px; background: #fff; overflow: hidden; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.media-thumb { aspect-ratio: 16 / 10; background: linear-gradient(135deg, #f5fbf6, #eef8ef); display: flex; align-items: center; justify-content: center; border-bottom: 1px solid #e7efe7; }
.media-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.media-meta { padding: 12px; display: grid; gap: 6px; }
.media-meta strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.media-meta span { font-size: 12px; color: #668095; }
.media-url-input { font-size: 12px; height: 34px; padding: 6px 8px; }
.media-actions { padding: 0 12px 12px; display: flex; gap: 8px; flex-wrap: wrap; }
.btn-sm { padding: 7px 10px; border-radius: 10px; font-size: 12px; }
.btn-danger { background: #e75768; color: #fff; border-color: #e75768; }
.soft-separator { border: 0; border-top: 1px solid #e5eee7; margin: 20px 0; }
.cms-recent-media { display: grid; gap: 10px; }
.cms-recent-media a { display: grid; grid-template-columns: 74px 1fr; align-items: center; gap: 10px; padding: 8px; border: 1px solid #e4eee5; border-radius: 14px; text-decoration: none; color: inherit; background: #fbfdfb; }
.cms-recent-media img { width: 74px; height: 48px; object-fit: cover; border-radius: 10px; background: #edf7ed; }
.empty-state.compact { padding: 12px; min-height: auto; }
@media (max-width: 760px) {
  .card-head-inline { flex-direction: column; }
  .media-grid { grid-template-columns: 1fr; }
}

/* v2.0B2.13.2 - Media riêng + logo upload */
.brand-mark img,
.public-brand-mark img,
.login-logo img{
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    border-radius:inherit;
}
.login-logo{
    width:72px;
    height:72px;
    margin:0 auto 10px;
    border-radius:22px;
    background:var(--primary-soft);
    display:grid;
    place-items:center;
    overflow:hidden;
}
.login-logo img{padding:6px;}
.public-brand-mark{
    overflow:hidden;
}
.public-brand-mark img{padding:3px;}
.cms-logo-preview{
    width:96px;
    height:96px;
    margin-top:10px;
    border:1px solid #dbe7df;
    border-radius:20px;
    background:#f8fbf8;
    display:grid;
    place-items:center;
    overflow:hidden;
}
.cms-logo-preview img{max-width:100%;max-height:100%;object-fit:contain;padding:8px;}
.media-use-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.media-target-select{height:34px;min-width:120px;font-size:12px;padding:0 8px;border-radius:10px;}

/* v2.0B2.17 - Finance/Payroll/Report bulk UI */
.page-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:flex-end}.bulk-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.bulk-bar .select{max-width:240px}.bulk-bar .input{max-width:280px}.table-card small{color:var(--muted)}.print-wrap .badge{border:0}.text-right{text-align:right}.qr{max-width:140px;max-height:140px}.finance-form-note{color:var(--muted);font-size:12px;margin-top:4px}

/* v2.0B2.17.2 - Tuition receipt QR upload */
.qr-setting-box { border: 1px dashed #b7e4b0; border-radius: 18px; padding: 16px; background: #fbfffb; }
.compact-grid { gap: 14px; align-items: start; }
.qr-preview-row { margin-top: 14px; display: flex; gap: 16px; align-items: center; padding: 14px; border: 1px solid #e5efe3; border-radius: 16px; background: #fff; }
.qr-preview-row .qr { width: 132px; height: 132px; object-fit: contain; border: 1px solid #dbe7d8; border-radius: 12px; background: #fff; padding: 6px; }
.qr-preview-row .btn { margin-right: 8px; margin-top: 6px; }
@media (max-width: 720px) { .qr-preview-row { align-items: flex-start; flex-direction: column; } }


/* v2.0B2.22.1 - UI hotfix: button contrast + clean topbar user info */
.page-head .actions .btn-primary,
.actions .btn.btn-primary,
a.btn.btn-primary,
button.btn.btn-primary {
    color: #fff !important;
}
.page-head .actions .btn-primary:hover,
.actions .btn.btn-primary:hover,
a.btn.btn-primary:hover,
button.btn.btn-primary:hover {
    color: #fff !important;
}
.user-chip span {
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* v2.0B2.23.3 - Dashboard clean: remove demo text and align dashboard links */
.dashboard-page-head .btn-primary{color:#fff!important;}
.dashboard-card{overflow:hidden;}
.dashboard-card-head{padding:16px 18px 12px;margin:0;border-bottom:1px solid var(--border);}
.dashboard-card-head h2{font-size:17px;line-height:1.25;}
.dashboard-view-link{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 11px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--primary-2);font-weight:800;font-size:12px;white-space:nowrap;}
.dashboard-view-link:hover{background:var(--primary-soft);border-color:#B9E4BF;}
.dashboard-empty-cell{color:var(--muted);padding:18px!important;}
.dashboard-bottom-grid{grid-template-columns:1fr 1.2fr;align-items:stretch;}
.dashboard-summary-card .big-number{font-size:34px;font-weight:900;color:var(--primary-2);margin:4px 0 8px;}
.dashboard-summary-card p{color:var(--muted);}
.dashboard-quick-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.dashboard-quick-actions .btn{min-height:38px;}
@media(max-width:1100px){.dashboard-tables,.dashboard-bottom-grid{grid-template-columns:1fr;}.dashboard-card-head{align-items:center;}}
@media(max-width:640px){.dashboard-card-head{flex-direction:column;align-items:flex-start;}.dashboard-view-link{width:100%;}.dashboard-quick-actions .btn{width:100%;}}
