:root{color:#111827;background:#f7f3ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;overflow-x:hidden}body{background:#f7f3ff;min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{max-width:100%;font:inherit}button{cursor:pointer;border:0}.app-shell{color:#111827;background:#f7f3ff;min-width:0;min-height:100vh}.mobile-root{background:#f7f3ff;width:100%;max-width:430px;min-height:100vh;margin:0 auto;overflow-x:hidden;box-shadow:0 20px 50px #7c3aed29}.app-main{min-width:0;padding-bottom:96px;overflow-x:hidden}.header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f7f3fff0;padding:20px 20px 12px;position:sticky;top:0}.header-row{justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;display:flex}.header-title{color:#111827;text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font-size:26px;font-weight:900;line-height:1.1;overflow:hidden}.header-subtitle{color:#6b7280;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;font-size:14px;line-height:1.45;display:-webkit-box;overflow:hidden}.kicker{color:#8b5cf6;font-size:12px;font-weight:800}.icon-btn{color:#7c3aed;background:#fff;border-radius:18px;place-items:center;width:42px;height:42px;display:grid;box-shadow:0 6px 18px #0f172a0f}.back-btn{background:#fff;border-radius:16px;width:36px;height:36px;margin-top:2px;font-size:24px;line-height:1;box-shadow:0 6px 18px #0f172a0f}.page{gap:16px;padding:0 20px 24px;display:grid}.hero{color:#fff;border-radius:30px;padding:20px;box-shadow:0 16px 40px #7c3aed2e}.hero>div>span{min-width:0}.hero p{opacity:.82;margin:0;font-size:14px}.hero h2{overflow-wrap:anywhere;margin:8px 0 0;font-size:28px;font-weight:900;line-height:1.1}.hero-grid{text-align:center;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px;font-size:12px;display:grid}.hero-cell{overflow-wrap:anywhere;background:#ffffff29;border-radius:18px;min-width:0;padding:12px 8px}.hero-cell b{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;display:block;overflow:hidden}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.card{background:#fff;border-radius:28px;min-width:0;padding:16px;box-shadow:0 8px 24px #0f172a0d}.stat-card{background:#fff;border-radius:24px;padding:16px;box-shadow:0 8px 24px #0f172a0d}.student-overview{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.student-overview-cell{color:#374151;text-align:center;background:#fff;border-radius:20px;padding:14px 8px;box-shadow:0 8px 24px #0f172a0d}.student-overview-cell b{color:#111827;font-size:22px;font-weight:900;line-height:1;display:block}.student-overview-cell span{color:#6b7280;margin-top:6px;font-size:12px;font-weight:900;display:block}.stat-icon{border-radius:16px;place-items:center;width:40px;height:40px;margin-bottom:12px;display:grid}.stat-value{color:#111827;white-space:nowrap;text-overflow:ellipsis;font-size:24px;font-weight:900;overflow:hidden}.stat-label{color:#6b7280;margin-top:4px;font-size:12px;font-weight:600}.card-title-row{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:12px;display:flex}.card h3{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:16px;font-weight:900;overflow:hidden}.link-btn{color:#7c3aed;white-space:nowrap;background:0 0;flex:none;font-size:12px;font-weight:800}.link-btn:disabled{color:#c4b5fd;cursor:not-allowed}.search-box{color:#9ca3af;background:#fff;border-radius:18px;align-items:center;gap:8px;padding:12px 14px;display:flex;box-shadow:0 8px 24px #0f172a0d}.search-box input{color:#111827;background:0 0;border:0;outline:none;width:100%;font-size:14px}.module-group{background:#ffffffb8;border-radius:28px;padding:12px;box-shadow:0 8px 24px #0f172a0d}.module-group-title{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.module-group-title h3{margin:0;font-size:16px;font-weight:900}.extensible{color:#7c3aed;background:#fff;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900}.module-card{text-align:left;background:#fff;border:1px solid;border-radius:18px;min-width:0;min-height:106px;padding:12px;transition:transform .15s;box-shadow:0 8px 20px #0f172a0a}.module-card:active{transform:scale(.98)}.module-icon{border-radius:14px;place-items:center;width:36px;height:36px;margin-bottom:8px;display:grid}.module-card b{color:#111827;white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.module-card small{color:#9ca3af;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;font-size:11px;line-height:1.25;display:-webkit-box;overflow:hidden}.row{text-align:left;background:0 0;border-bottom:1px solid #f3f4f6;align-items:center;gap:10px;width:100%;min-width:0;padding:12px 0;display:flex;overflow:hidden}.row.selected{background:#f7f3ff;border-bottom-color:#0000;border-radius:16px;margin:0 -8px;padding:12px 8px}.row:last-child{border-bottom:0;padding-bottom:0}.row-check{color:#7c3aed;background:#fff;border:1px solid #ddd6fe;border-radius:8px;flex:none;place-items:center;width:22px;height:22px;font-size:13px;font-weight:900;display:grid}.row-avatar{border-radius:18px;flex:none;place-items:center;width:42px;height:42px;font-weight:900;display:grid}.row-body{flex:1;min-width:0}.row-body b{color:#111827;white-space:nowrap;text-overflow:ellipsis;font-size:14px;display:block;overflow:hidden}.row-body small{color:#9ca3af;white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:12px;display:block;overflow:hidden}.row>svg{flex:none}.amount{color:#111827;white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;max-width:72px;font-size:13px;font-weight:900;overflow:hidden}.status{white-space:nowrap;text-overflow:ellipsis;border-radius:999px;flex:none;max-width:78px;padding:5px 9px;font-size:11px;font-weight:900;overflow:hidden}.status.ok{color:#059669;background:#ecfdf5}.status.warning{color:#d97706;background:#fffbeb}.status.danger{color:#e11d48;background:#fff1f2}.status.info{color:#2563eb;background:#eff6ff}.status.normal{color:#6b7280;background:#f3f4f6}.filter-row{scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.filter-chip{color:#64748b;background:#fff;border-radius:999px;flex:none;padding:7px 12px;font-size:12px;font-weight:900}.form-grid{gap:12px;display:grid}.field>span{color:#4b5563;overflow-wrap:anywhere;margin-bottom:8px;font-size:12px;font-weight:900;display:block}.field input,.field textarea{color:#111827;background-color:#f9fafb;border:1px solid #f3f4f6;border-radius:18px;outline:none;width:100%;min-height:46px;padding:12px;font-size:14px;transition:border-color .15s,box-shadow .15s,background-color .15s}.field input:focus,.field textarea:focus{background-color:#fff;border-color:#ddd6fe;box-shadow:0 0 0 4px #7c3aed14}select{color:#111827;appearance:none;cursor:pointer;background-color:#f9fafb;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;background-size:16px;border:1px solid #f3f4f6;border-radius:18px;outline:none;width:100%;min-height:46px;padding:12px 38px 12px 12px;font-size:14px;transition:border-color .15s,box-shadow .15s,background-color .15s}select:focus{background-color:#fff;border-color:#ddd6fe;box-shadow:0 0 0 4px #7c3aed14}.select-control{min-width:0;position:relative}.field textarea{resize:vertical;min-height:88px}.student-select{position:relative}.student-select-menu{z-index:30;background:#fff;border:1px solid #ede9fe;border-radius:18px;max-height:220px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 14px 32px #0f172a1f}.student-select-option{cursor:pointer;color:#111827;border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;font-size:14px;display:flex}.student-select-option:last-child{border-bottom:0}.student-select-option:hover{background:#f7f3ff}.student-select-option b{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.student-select-meta{color:#64748b;flex:none;margin:0;font-size:12px}.intro-student-control{color:#7c3aed;background:#f9fafb;border:1px solid #f3f4f6;border-radius:18px;align-items:center;gap:8px;min-height:46px;padding:0 12px;display:flex;position:relative}.intro-student-control input{min-height:44px;box-shadow:none;background:0 0;border:0;padding:0}.intro-student-control input:focus{box-shadow:none;background:0 0;border:0}.intro-clear-btn{color:#7c3aed;background:#ede9fe;border-radius:999px;flex:none;padding:6px 9px;font-size:11px;font-weight:900}.intro-option-name{color:#111827;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;font-weight:900;display:flex;overflow:hidden}.permission-tree{background:#f9fafb;border:1px solid #f3f4f6;border-radius:18px;gap:10px;padding:12px;display:grid}.permission-node{gap:8px;display:grid}.permission-check{color:#374151;align-items:center;gap:8px;min-height:28px;font-size:13px;font-weight:900;display:flex}.permission-check input{accent-color:#7c3aed;width:16px;height:16px;min-height:16px}.permission-children{border-left:2px solid #ede9fe;gap:6px;margin-left:24px;padding-left:10px;display:grid}.permission-summary{color:#6d28d9;border-top:1px solid #ede9fe;padding-top:10px;font-size:12px;font-weight:900}.context-card{color:#3730a3;background:#eef2ff;border:1px solid #e0e7ff;border-radius:18px;min-width:0;padding:12px 14px;font-size:13px;font-weight:900;box-shadow:0 8px 20px #4f46e50f}.context-card svg{vertical-align:middle;flex:none;margin-right:6px}.context-card>span{overflow-wrap:anywhere;min-width:0}.planned-card{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:18px;padding:12px 14px;font-size:12px;font-weight:900;line-height:1.45}.planned-card,.assist-card,.flow-step{overflow-wrap:anywhere}.assist-card{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:18px;padding:12px 14px;font-size:12px;font-weight:900;line-height:1.45;box-shadow:0 8px 20px #1665340f}.flow-card{background:#fff;border-radius:18px;gap:8px;padding:12px;display:grid;box-shadow:0 8px 24px #0f172a0d}.flow-step{color:#4b5563;align-items:center;gap:10px;min-height:34px;font-size:12px;font-weight:900;display:flex;position:relative}.flow-step:after{content:"";background:#ede9fe;width:2px;position:absolute;top:31px;bottom:-8px;left:13px}.flow-step.last:after{display:none}.flow-step b{color:#fff;background:#7c3aed;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:12px;display:grid}.switch-field{color:#111827;text-align:left;background:#f9fafb;border-radius:18px;justify-content:space-between;align-items:center;width:100%;padding:12px;display:flex}.switch-field:focus{outline:none;box-shadow:0 0 0 4px #7c3aed14}.switch{background:#7c3aed;border-radius:999px;width:44px;height:24px;padding:4px}.switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;display:block;transform:translate(20px)}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.action-row{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:10px;margin-top:16px;display:grid}.primary-btn{color:#fff;text-align:center;overflow-wrap:anywhere;border-radius:18px;min-width:0;min-height:46px;padding:12px 10px;font-size:13px;font-weight:900;line-height:1.2;transition:transform .15s,box-shadow .15s,opacity .15s;box-shadow:0 8px 18px #7c3aed29}.primary-btn:active{transform:scale(.98)}.primary-btn:disabled{cursor:not-allowed}.primary-btn.planned{color:#6b7280;box-shadow:none!important;background:#e5e7eb!important}.action-btn{color:#374151;background:#fff;border-radius:22px;padding:14px 10px;font-size:14px;font-weight:900;transition:transform .15s,box-shadow .15s;box-shadow:0 8px 24px #0f172a0d}.action-btn:active{transform:scale(.98)}.danger-action-btn{color:#ef4444;border:1px solid #fee2e2;width:100%;margin-top:24px;box-shadow:0 8px 24px #ef44440f}.empty-state{color:#9ca3af;text-align:center;font-size:13px;font-weight:800}.shortcut-grid{text-align:center;grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.shortcut-btn{color:#4b5563;background:0 0;border-radius:18px;min-width:0;padding:6px 2px;font-size:11px;font-weight:800;transition:background .15s,transform .15s}.shortcut-btn:active{transform:scale(.97)}.shortcut-btn:hover{background:#f7f3ff}.shortcut-icon{color:#7c3aed;background:#f3e8ff;border-radius:16px;place-items:center;width:40px;height:40px;margin:0 auto 8px;display:grid}.home-page{gap:14px;position:relative}.home-hero{color:#fff;background:linear-gradient(145deg,#4f46e5 0%,#7c3aed 48%,#ec4899 100%);border-radius:30px;padding:20px;position:relative;overflow:hidden;box-shadow:0 18px 42px #7c3aed33}.home-hero:after{content:"";background:#ffffff21;border-radius:48px;width:160px;height:160px;position:absolute;top:-54px;right:-44px;transform:rotate(18deg)}.home-hero-main{z-index:1;justify-content:space-between;align-items:flex-start;gap:16px;display:flex;position:relative}.home-hero-main p{color:#ffffffd1;margin:0;font-size:14px;font-weight:800}.home-hero-main h2{overflow-wrap:anywhere;letter-spacing:0;margin:8px 0 0;font-size:29px;font-weight:900;line-height:1.08}.home-hero-action{color:#fff;background:#ffffff2e;border-radius:17px;flex:none;place-items:center;width:44px;height:44px;display:grid;box-shadow:inset 0 0 0 1px #ffffff2e}.home-focus-grid{z-index:1;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:20px;display:grid;position:relative}.home-focus-cell{color:#fff;text-align:left;background:#ffffff24;border-radius:18px;justify-items:start;gap:6px;min-width:0;padding:12px 10px;display:grid;box-shadow:inset 0 0 0 1px #ffffff21}.home-focus-cell b{font-size:23px;font-weight:900;line-height:1}.home-focus-cell span:not(.status){color:#ffffffc7;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;font-weight:900;overflow:hidden}.home-focus-cell .status{color:#fff;background:#fff3;max-width:100%;padding:4px 7px;font-size:10px}.home-empty-on-hero{text-align:center;color:#ffffffd1;background:#ffffff24;border-radius:18px;grid-column:1/-1;padding:14px;font-size:13px;font-weight:900}.home-action-panel{background:#ffffffc7;border-radius:28px;padding:14px;box-shadow:0 8px 24px #0f172a0d}.home-action-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.home-action-card{color:#111827;text-align:left;background:#fff;border-radius:20px;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:7px;min-width:0;min-height:104px;padding:12px;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 8px 20px #0f172a0a}.home-action-card:active{transform:scale(.98)}.home-action-icon{color:#7c3aed;background:#f3e8ff;border-radius:14px;place-items:center;width:36px;height:36px;display:grid}.home-action-card.green .home-action-icon{color:#059669;background:#dcfce7}.home-action-card.blue .home-action-icon{color:#2563eb;background:#dbeafe}.home-action-card.rose .home-action-icon{color:#e11d48;background:#ffe4e6}.home-action-card.amber .home-action-icon{color:#d97706;background:#fef3c7}.home-action-card.slate .home-action-icon{color:#334155;background:#f1f5f9}.home-action-card b{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13px;font-weight:900;line-height:1.15;overflow:hidden}.home-action-card small{color:#94a3b8;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:11px;font-weight:800;line-height:1.3;display:-webkit-box;overflow:hidden}.home-reminder-card{padding:16px 14px}.home-reminder-list{gap:4px;display:grid}.home-reminder-row{text-align:left;background:0 0;border-radius:18px;align-items:center;gap:10px;width:100%;min-width:0;padding:11px 8px;display:flex}.home-reminder-row:active{background:#f7f3ff}.home-reminder-icon{color:#7c3aed;background:#f3e8ff;border-radius:15px;flex:none;place-items:center;width:38px;height:38px;display:grid}.home-calm-state{color:#94a3b8;place-items:center;gap:8px;min-height:82px;font-size:13px;font-weight:900;display:grid}.home-floating-create{z-index:45;color:#fff;background:#7c3aed;border-radius:20px;place-items:center;width:52px;height:52px;display:grid;position:fixed;bottom:92px;right:max(20px,50vw - 195px);box-shadow:0 14px 28px #7c3aed3d}.campus-switch-card{justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding:16px 20px;display:flex}.campus-switch-copy{min-width:0}.campus-switch-copy h4{color:#1f2937;margin:0;font-size:15px}.campus-switch-copy p{color:#6b7280;margin:4px 0 0;font-size:12px}.campus-select{flex:0 0 140px}.campus-select select{color:#374151;background-color:#f9fafb;border:1px solid #f3f4f6;border-radius:16px;outline:none;width:100%;padding:10px 34px 10px 12px;font-size:14px;font-weight:800;transition:border-color .15s,box-shadow .15s,background-color .15s}.campus-select select:focus{background-color:#fff;border-color:#ddd6fe;box-shadow:0 0 0 4px #7c3aed14}.mine-profile-card{color:#fff;border-radius:28px;padding:18px;box-shadow:0 16px 40px #0f172a24}.mine-profile-main,.mine-profile-top{align-items:center;gap:14px;min-width:0;display:flex}.mine-avatar{background:#ffffff29;border-radius:22px;flex:none;place-items:center;width:62px;height:62px;font-size:24px;font-weight:900;display:grid}.mine-profile-copy{min-width:0}.mine-profile-copy small{color:#ffffff9e;margin-bottom:4px;font-size:12px;font-weight:900;line-height:1;display:block}.mine-profile-copy b{text-overflow:ellipsis;white-space:nowrap;font-size:20px;line-height:1.2;display:block;overflow:hidden}.mine-profile-copy p{opacity:.82;text-overflow:ellipsis;white-space:nowrap;margin:6px 0 0;font-size:13px;line-height:1.35;overflow:hidden}.mine-profile-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.mine-profile-stats span{color:#ffffffc7;background:#ffffff21;border-radius:16px;min-width:0;padding:10px 12px;font-size:12px;font-weight:800}.mine-profile-stats b{color:#fff;margin-bottom:3px;font-size:17px;line-height:1;display:block}.mine-profile-focus{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;display:grid}.mine-profile-focus span{color:#ffffffb3;background:#ffffff1f;border-radius:16px;min-width:0;padding:10px 9px;font-size:11px;font-weight:900;line-height:1.25}.mine-profile-focus b{color:#fff;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:13px;line-height:1.15;display:block;overflow:hidden}.mine-profile-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.mine-profile-actions button{color:#334155;background:#ffffffeb;border-radius:15px;justify-content:center;align-items:center;gap:6px;min-height:38px;font-size:12px;font-weight:900;display:flex;box-shadow:0 8px 18px #0f172a14}.password-sheet-error{color:#e11d48;overflow-wrap:anywhere;background:#fff1f2;border-radius:16px;margin:0;padding:10px 12px;font-size:12px;font-weight:900;line-height:1.4}.password-save-btn{background:linear-gradient(135deg,#334155,#0f172a);justify-content:center;align-items:center;gap:8px;display:flex}.password-save-spinner{animation:1s linear infinite spin}.mine-list{gap:2px;display:grid}.mine-info-row,.mine-settings-row{text-align:left;background:0 0;border-top:1px solid #f3f4f6;align-items:center;gap:12px;width:100%;min-width:0;padding:12px 0;display:flex}.mine-list>:first-child{border-top:0}.mine-row-icon{color:#475569;background:#f1f5f9;border-radius:14px;flex:none;place-items:center;width:36px;height:36px;display:grid}.mine-settings-row:active{transform:scale(.99)}.mine-back-row{color:#111827;text-align:left;background:#fff;border-radius:20px;align-items:center;gap:12px;width:100%;min-width:0;padding:12px 14px;display:flex;box-shadow:0 8px 24px #0f172a0d}.logout-btn{color:#e11d48;background:#fff1f2;border-radius:18px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:48px;font-size:14px;font-weight:900;display:flex;box-shadow:0 8px 24px #e11d480f}.role-overview{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.role-overview div{background:#fff;border-radius:18px;min-width:0;padding:12px 10px;box-shadow:0 8px 24px #0f172a0d}.role-overview b{color:#111827;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:900;line-height:1.1;display:block;overflow:hidden}.role-overview span{color:#64748b;margin-top:6px;font-size:11px;font-weight:900;display:block}.role-list{gap:8px;display:grid}.role-item{color:#111827;text-align:left;background:#f8fafc;border-radius:18px;align-items:center;gap:10px;width:100%;min-width:0;padding:11px;display:flex}.role-item.active{background:#ecfdf5;box-shadow:inset 0 0 0 1px #bbf7d0}.permission-matrix{gap:12px;display:grid}.permission-panel{background:#f8fafc;border:1px solid #f1f5f9;border-radius:18px;padding:12px}.permission-panel-head{color:#111827;align-items:flex-start;gap:10px;display:flex}.permission-panel-head input,.permission-option input{accent-color:#334155;flex:none;width:16px;height:16px;min-height:16px;margin-top:2px}.permission-panel-head b{font-size:14px;font-weight:900;display:block}.permission-panel-head small{color:#64748b;margin-top:3px;font-size:11px;font-weight:700;line-height:1.35;display:block}.permission-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.permission-option{color:#334155;background:#fff;border-radius:12px;align-items:flex-start;gap:7px;min-width:0;padding:8px;font-size:12px;font-weight:900;display:flex}.permission-option span{overflow-wrap:anywhere;min-width:0}.role-save-btn{background:linear-gradient(135deg,#334155,#0f172a);justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.teacher-toolbar{grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:10px;display:grid}.teacher-toolbar .search-box{min-width:0}.teacher-add-btn{color:#fff;background:#334155;border-radius:18px;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 8px 20px #33415529}.teacher-list{gap:6px;display:grid}.teacher-row{color:#111827;text-align:left;background:#f8fafc;border-radius:18px;align-items:center;gap:10px;width:100%;min-width:0;padding:10px;display:flex}.teacher-row.active{background:#ecfdf5;box-shadow:inset 0 0 0 1px #bbf7d0}.teacher-detail-head{background:#f8fafc;border-radius:18px;align-items:center;gap:12px;min-width:0;margin-bottom:14px;padding:12px;display:flex}.teacher-save-btn{background:linear-gradient(135deg,#334155,#0f172a);justify-content:center;align-items:center;gap:8px;width:100%;margin-top:16px;display:flex}.bottom-nav{z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;border-top:1px solid #ede9fe;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;max-width:430px;height:74px;padding:8px 8px 10px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-btn{color:#9ca3af;background:0 0;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;font-size:11px;font-weight:800;display:flex}.nav-btn.active{color:#7c3aed}.nav-icon{border-radius:16px;padding:6px 11px}.nav-btn.active .nav-icon{background:#ede9fe}.detail-table{background:#f9fafb;border-radius:18px;gap:8px;padding:12px;font-size:12px;display:grid}.info-line{justify-content:space-between;gap:12px;display:flex}.info-line span{color:#9ca3af;flex:none}.info-line b{color:#374151;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.homework-imgs{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.homework-img{color:#9ca3af;background:#f3f4f6;border-radius:18px;place-items:center;height:96px;font-size:12px;font-weight:800;display:grid}@media (width>=900px){.app-shell{padding:24px}.mobile-root{border-radius:32px;min-height:calc(100vh - 48px);overflow:hidden}.bottom-nav{border-radius:0 0 32px 32px;bottom:24px}}.daycare-login-bg{color:#0f172a;box-sizing:border-box;background-color:#f7f3ff;justify-content:center;align-items:center;min-height:100vh;padding:24px 20px;display:flex}.daycare-login-card-container{box-sizing:border-box;background-color:#faf8ff;border-radius:34px;flex-direction:column;width:100%;max-width:430px;min-height:calc(100vh - 48px);margin-left:auto;margin-right:auto;display:flex;position:relative;overflow:hidden;box-shadow:0 25px 50px -12px #7c3aed26,0 20px 40px #c4b5fd66}.daycare-login-header{box-sizing:border-box;padding:56px 28px 16px;position:relative}.daycare-login-orb{filter:blur(64px);opacity:.6;z-index:1;border-radius:50%;position:absolute}.daycare-login-orb.left-orb{background-color:#c4b5fd80;width:224px;height:224px;top:-90px;left:-80px}.daycare-login-orb.right-orb{background-color:#f5d0fe66;width:224px;height:224px;top:40px;right:-90px}.daycare-login-header-content{z-index:10;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.daycare-login-logo-wrapper{justify-content:center;align-items:center;width:200px;height:150px;margin-top:10px;margin-bottom:4px;display:flex}.daycare-login-logo-img{object-fit:contain;filter:drop-shadow(0 6px 12px #7c3aed1f);width:100%;height:100%}.daycare-login-subtitle-text{color:#94a3b8;margin:8px 0 0;font-size:14px;font-weight:600}.daycare-login-main{z-index:10;box-sizing:border-box;flex:1;padding:32px 24px 16px;position:relative}.daycare-login-form-box{box-sizing:border-box;background-color:#fff;border-radius:30px;padding:20px;box-shadow:0 10px 25px -5px #7c3aed14,0 8px 10px -6px #7c3aed14}.daycare-login-form-title{margin-bottom:24px}.daycare-login-form-title h2{color:#020617;margin:0;font-size:20px;font-weight:900}.daycare-login-space-y>*+*{margin-top:20px}.daycare-login-field-section{text-align:left;flex-direction:column;display:flex}.daycare-login-field-label{color:#334155;margin-bottom:8px;font-size:14px;font-weight:600;display:block}.daycare-login-input-relative{width:100%;position:relative}.daycare-login-input-icon-left{pointer-events:none;color:#7c3aed;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.daycare-login-input-field{color:#1e293b;box-sizing:border-box;background-color:#f8fafc;border:1px solid #f1f5f9;border-radius:16px;outline:none;width:100%;height:56px;padding:0 16px 0 48px;font-size:14px;font-weight:600;transition:all .2s}.daycare-login-input-field::placeholder{color:#cbd5e1}.daycare-login-input-field:focus{background-color:#fff;border-color:#c4b5fd;box-shadow:0 0 0 4px #7c3aed1a}.daycare-login-input-field.padding-right-toggle{padding-right:56px}.daycare-login-pw-toggle-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.daycare-login-pw-toggle-btn:hover{color:#7c3aed}.field-error-msg{color:#f43f5e;text-align:left;margin:8px 0 0;font-size:12px;font-weight:500}.daycare-login-options-row{justify-content:space-between;align-items:center;margin-top:20px;display:flex}.daycare-login-remember-btn{color:#64748b;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;font-size:14px;font-weight:600;display:flex}.daycare-login-checkbox-box{background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;transition:all .2s;display:flex}.daycare-login-checkbox-box.checked{background-color:#7c3aed;border-color:#7c3aed}.daycare-login-checkbox-dot{background-color:#fff;border-radius:50%;width:8px;height:8px}.daycare-login-forgot-btn{color:#7c3aed;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:600}.daycare-login-submit-btn{color:#fff;cursor:pointer;background-color:#7c3aed;border:none;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;height:56px;font-size:16px;font-weight:900;transition:all .2s;display:flex;box-shadow:0 10px 15px -3px #7c3aed4d,0 4px 6px -2px #7c3aed0d}.daycare-login-submit-btn:hover{background-color:#6d28d9;box-shadow:0 20px 25px -5px #7c3aed66,0 10px 10px -5px #7c3aed1a}.daycare-login-submit-btn:active{transform:scale(.99)}.daycare-login-submit-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.daycare-login-alert{color:#ef4444;text-align:left;background-color:#fef2f2;border:1px solid #fee2e2;border-radius:16px;align-items:center;gap:8px;margin-bottom:20px;padding:10px 14px;font-size:13px;font-weight:500;animation:.3s ease-out slideDownAlert;display:flex}@keyframes slideDownAlert{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.daycare-login-footer{text-align:center;color:#cbd5e1;padding:20px 24px 24px;font-size:12px;font-weight:500}.finance-quick-actions{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px;display:grid}.finance-quick-actions button{color:#374151;background:#fff;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:16px 8px;font-size:13px;font-weight:800;transition:transform .15s;display:flex;box-shadow:0 8px 24px #0f172a0d}.finance-quick-actions button:active{transform:scale(.97)}.finance-action-icon{border-radius:16px;place-items:center;width:44px;height:44px;display:grid}.pending-group{border:2px solid #0000;margin-bottom:16px}.pending-group:hover{border-color:#f3f4f6}.student-status-bar{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px;display:grid}.student-status-bar button{text-align:left;background:#fff;border-radius:18px;padding:12px;box-shadow:0 8px 24px #0f172a0d}.student-status-bar b{color:#111827;font-size:20px;font-weight:900;line-height:1.1;display:block}.student-status-bar span{color:#6b7280;margin-top:4px;font-size:12px;font-weight:800;display:block}.status-tab-row{scrollbar-width:none;gap:8px;margin-bottom:6px;padding-bottom:10px;display:flex;overflow-x:auto}.status-tab-row button{color:#64748b;background:0 0;border:1px solid #0000;border-radius:999px;flex:none;padding:8px 14px;font-size:13px;font-weight:800;transition:all .15s}.status-tab-row button.active{color:#7c3aed;background:#fff;box-shadow:0 4px 12px #0f172a0d}.sheet-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;background:#0f172a66;animation:.2s forwards sheetFadeIn;position:fixed;inset:0}.sheet-panel{z-index:101;background:#f7f3ff;border-radius:32px 32px 0 0;flex-direction:column;width:100%;max-width:430px;max-height:90vh;animation:.3s cubic-bezier(.16,1,.3,1) forwards sheetSlideUp;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)translateY(100%);box-shadow:0 -10px 40px #00000026}.sheet-header{background:#fff;border-bottom:1px solid #ede9fe;border-radius:32px 32px 0 0;justify-content:space-between;align-items:center;padding:20px 20px 12px;display:flex}.sheet-header h2{margin:0;font-size:18px;font-weight:900}.sheet-close{color:#64748b;background:#f1f5f9;border-radius:16px;place-items:center;width:32px;height:32px;display:grid}.sheet-body{padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));flex:1;overflow-y:auto}@keyframes sheetFadeIn{to{opacity:1}}@keyframes sheetSlideUp{to{transform:translate(-50%)translateY(0)}}.app-dialog-layer{z-index:220;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.app-dialog-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172a6b;animation:.18s forwards appDialogFadeIn;position:absolute;inset:0}.app-dialog{text-align:center;opacity:0;background:#fff;border-radius:28px;width:min(100%,352px);padding:24px 20px 20px;animation:.22s cubic-bezier(.16,1,.3,1) forwards appDialogPopIn;position:relative;transform:translateY(10px)scale(.98);box-shadow:0 24px 54px #0f172a38,0 0 0 1px #ede9fee6}.app-dialog-close{color:#64748b;background:#f8fafc;border-radius:14px;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:14px;right:14px}.app-dialog-icon{color:#7c3aed;background:#ede9fe;border-radius:20px;place-items:center;width:54px;height:54px;margin:4px auto 14px;display:grid;box-shadow:0 10px 24px #7c3aed24}.app-dialog-success .app-dialog-icon{color:#059669;background:#dcfce7;box-shadow:0 10px 24px #0596691f}.app-dialog-danger .app-dialog-icon{color:#e11d48;background:#fff1f2;box-shadow:0 10px 24px #e11d481a}.app-dialog h2{color:#111827;letter-spacing:0;margin:0;font-size:19px;font-weight:900;line-height:1.25}.app-dialog p{color:#64748b;overflow-wrap:anywhere;white-space:pre-wrap;margin:10px 0 18px;font-size:14px;font-weight:800;line-height:1.55}.app-dialog-confirm{color:#fff;background:#7c3aed;border-radius:18px;width:100%;min-height:46px;font-size:14px;font-weight:900;transition:transform .15s,box-shadow .15s,background .15s;box-shadow:0 10px 18px #7c3aed2e}.app-dialog-confirm:active{transform:scale(.98)}.app-dialog-confirm:hover{background:#6d28d9;box-shadow:0 14px 22px #7c3aed38}@keyframes appDialogFadeIn{0%{opacity:0}to{opacity:1}}@keyframes appDialogPopIn{to{opacity:1;transform:translateY(0)scale(1)}}
