:root{--navy-950:#0b1c29;--navy-900:#102535;--navy-800:#183347;--teal-700:#176b68;--teal-600:#1f7c77;--teal-100:#dcecea;--ink-900:#18232f;--ink-700:#42515e;--ink-500:#6d7984;--line:#dfe5e7;--paper:#fff;--canvas:#f4f6f5;--warm:#c2a46e}*{box-sizing:border-box}html,body,#root{min-height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--canvas);color:var(--ink-900);margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang HK,PingFang TC,Microsoft JhengHei,sans-serif;overflow-x:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app-shell{background:var(--canvas);min-height:100vh}.app-sidebar.ant-layout-sider{border-right:1px solid #ffffff0d;background:var(--navy-900)!important}.app-sidebar .ant-layout-sider-trigger{background:var(--navy-950);color:#ffffffad}.sidebar-brand{border-bottom:1px solid #ffffff17;align-items:center;gap:12px;height:98px;padding:20px 18px;display:flex}.sidebar-brand img{object-fit:contain;flex:none;width:43px;height:43px}.sidebar-brand__copy{flex-direction:column;min-width:0;line-height:1.3;display:flex}.sidebar-brand__copy span{color:#ecf3f594;white-space:nowrap;font-size:10px}.sidebar-brand__copy strong{color:#fff;letter-spacing:.04em;margin-top:4px;font-size:15px;font-weight:650}.sidebar-brand--compact{justify-content:center;padding-inline:0}.sidebar-brand--compact img{width:38px;height:38px}.sidebar-section-label{color:#e4eef161;letter-spacing:.16em;text-transform:uppercase;padding:20px 20px 8px;font-size:10px;font-weight:650}.sidebar-menu.ant-menu{background:0 0;border-inline-end:0}.sidebar-menu .ant-menu-item{height:42px;margin-block:3px;font-size:13px;line-height:42px}.sidebar-menu .ant-menu-item .anticon{font-size:16px}.sidebar-menu .ant-menu-item-selected{box-shadow:inset 3px 0 #83bbb4}.app-header.ant-layout-header{border-bottom:1px solid var(--line);background:#fffffff5;justify-content:space-between;align-items:center;height:64px;line-height:normal;display:flex}.app-header__left{align-items:center;gap:12px;min-width:0;display:flex}.app-header__page{color:var(--ink-900);white-space:nowrap;font-size:15px;font-weight:650}.app-header__divider{background:var(--line);width:1px;height:20px}.year-icon{color:var(--teal-700)}.add-year-button{color:var(--teal-700);cursor:pointer;border-radius:6px;padding:8px}.add-year-button:hover{background:#edf5f4}.user-menu-trigger{cursor:pointer;align-items:center;gap:10px;display:flex}.user-avatar.ant-avatar{background:var(--navy-800)}.user-name{color:var(--ink-700);font-weight:600}.login-link{cursor:pointer;color:var(--teal-700);align-items:center;gap:6px;font-weight:600;display:flex}.mobile-menu-trigger{padding:0 4px;font-size:18px}.app-content.ant-layout-content{background:var(--paper);border:1px solid #e2e7e9;border-radius:10px;min-height:360px;overflow-x:hidden;box-shadow:0 8px 28px #1427340d}.ant-card{border-color:var(--line);box-shadow:none}.ant-card-hoverable:hover,.ant-card:hover{border-color:#c8d4d6}.ant-btn-primary:not(:disabled){box-shadow:none}.ant-table-wrapper .ant-table{border:1px solid #e4e9eb;border-radius:8px}.ant-table-thead>tr>th{letter-spacing:.02em;font-size:12px;font-weight:650!important}.ant-modal .ant-modal-content{border:1px solid #dfe5e7}.login-page{background:#f8f8f5;grid-template-columns:minmax(420px,1.1fr) minmax(460px,.9fr);min-height:100vh;display:grid}.login-visual{background:var(--navy-900);min-height:100vh;position:relative;overflow:hidden}.login-visual>img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.login-visual__shade{background:linear-gradient(#0919251f 24%,#091925e0 100%);position:absolute;inset:0}.login-visual__content{z-index:1;color:#fff;max-width:620px;position:absolute;bottom:clamp(42px,8vh,90px);left:clamp(36px,6vw,84px);right:48px}.login-visual__eyebrow,.page-eyebrow{letter-spacing:.2em;text-transform:uppercase;font-size:10px;font-weight:700;display:block}.login-visual__eyebrow{color:#b6d4d0;margin-bottom:16px}.login-visual__content h1{color:#fff;letter-spacing:.015em;margin:0;font-family:Georgia,Songti TC,serif;font-size:clamp(36px,4vw,62px);font-weight:500;line-height:1.16}.login-visual__content p{color:#f2f7f7c2;max-width:520px;margin:22px 0 0;font-size:15px;line-height:1.8}.login-panel{justify-content:center;align-items:center;min-height:100vh;padding:56px clamp(28px,6vw,88px);display:flex}.login-card.ant-card{background:0 0;width:100%;max-width:470px}.login-card .ant-card-body{padding:0}.login-brand{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding-bottom:26px;display:flex}.login-brand img{object-fit:contain;width:50px;height:50px}.login-brand__school{color:var(--ink-500);margin-bottom:3px;font-size:11px;display:block}.login-brand .ant-typography{margin:0;font-family:Georgia,Songti TC,serif;font-size:23px;font-weight:550}.login-intro{margin:42px 0 30px}.login-intro .ant-typography{margin-top:0;margin-bottom:7px}.login-card .ant-form-item-label>label{color:var(--ink-700);font-size:12px;font-weight:650}.login-card .ant-input-affix-wrapper{background:#fff;border-color:#d7dee1;height:48px}.login-card .ant-input-prefix{color:#73818b;margin-right:10px}.login-submit-row{margin-top:10px;margin-bottom:22px}.login-submit-row .ant-btn{height:48px;font-size:15px}.google-login-wrap{justify-content:center;min-height:44px;margin-top:4px;display:flex;position:relative}.google-login-wrap.is-loading{opacity:.55;pointer-events:none}.google-login-button{justify-content:center;width:100%;display:flex}.google-login-placeholder{color:#73818b;background:#fff;border:1px solid #d7dee1;border-radius:5px;place-items:center;min-height:44px;font-size:13px;display:grid;position:absolute;inset:0}.google-domain-note{text-align:center;color:#6c7a84;margin:13px 0 23px;font-size:12px;display:block}.google-config-alert{margin-bottom:16px}.admin-login-toggle.ant-btn{color:#687680;height:auto;margin:0 auto 22px;padding:0;font-size:12px;display:block}.login-security-note{color:#7b878e;align-items:center;gap:8px;font-size:11px;display:flex}.dashboard-intro{color:#fff;background:var(--navy-900);justify-content:space-between;align-items:center;gap:32px;min-height:228px;margin:-30px -30px 30px;padding:42px 46px;display:flex;position:relative;overflow:hidden}.dashboard-intro:after{content:"";border:1px solid #ffffff1f;width:360px;height:360px;position:absolute;top:-210px;right:-90px;transform:rotate(42deg)}.dashboard-intro>div{z-index:1;position:relative}.dashboard-intro .page-eyebrow{color:#8fc5bf;margin-bottom:14px}.dashboard-intro .ant-typography{color:#fff}.dashboard-intro h2.ant-typography{margin:0 0 12px;font-family:Georgia,Songti TC,serif;font-size:34px;font-weight:500}.dashboard-intro p.ant-typography{color:#eef5f7b8;max-width:660px;margin:0;line-height:1.8}.dashboard-intro__mark{border-left:1px solid #ffffff2e;flex-direction:column;min-width:150px;padding-left:26px;display:flex}.dashboard-intro__mark span{letter-spacing:.1em;font-family:Georgia,serif;font-size:32px}.dashboard-intro__mark small{color:#ffffff85;letter-spacing:.12em;text-transform:uppercase;margin-top:4px;font-size:9px}.section-heading{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:16px;display:flex}.section-heading .ant-typography{margin:0}.section-heading p.ant-typography{margin-top:4px;font-size:12px}.module-count.ant-tag{color:#49635f;background:#edf3f2;border:0;margin:0}.module-card.ant-card{cursor:pointer;height:100%;transition:border-color .2s,transform .2s,box-shadow .2s}.module-card.ant-card:hover{border-color:#b8cac8;transform:translateY(-2px);box-shadow:0 10px 22px #13373d12}.module-card .ant-card-body{flex-direction:column;min-height:210px;padding:22px;display:flex}.module-card__top{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.module-card__icon{width:38px;height:38px;color:var(--teal-700);background:#e7f1f0;border-radius:8px;place-items:center;font-size:18px;display:grid}.module-card__category{color:#7b878f;letter-spacing:.08em;font-size:10px}.module-card h5.ant-typography{color:var(--ink-900);margin:0 0 8px}.module-card p.ant-typography{margin-bottom:18px;font-size:12px;line-height:1.65}.module-card__action{color:var(--teal-700);align-items:center;gap:7px;margin-top:auto;font-size:12px;font-weight:650;display:flex}.module-card__action .anticon{transition:transform .2s}.module-card:hover .module-card__action .anticon{transform:translate(3px)}.data-rule-alert{background:#f2f8f7;border-color:#cddfdd;margin-bottom:16px}.import-errors{color:#8f3737;background:#fff3f1;border-radius:6px;max-height:210px;margin-top:8px;padding:10px 12px;font-size:12px;line-height:1.7;overflow:auto}.page-loading{place-items:center;min-height:360px;display:grid}.profile-toolbar{justify-content:space-between;gap:10px;margin-bottom:16px;display:flex}.student-summary-card,.profile-section-card{margin-bottom:16px}.student-summary-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px;display:flex}.student-summary-heading h3.ant-typography{margin:4px 0 0;font-family:Georgia,Songti TC,serif;font-weight:550}.student-code-label{color:var(--teal-700);letter-spacing:.04em;font-size:11px;font-weight:700}.profile-add-button{margin-bottom:10px}.two-column-form{grid-template-columns:1fr 1fr;gap:0 14px;display:grid}.analysis-action-grid{grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;display:grid}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-visual{min-height:310px}.login-visual__content{bottom:30px;left:28px;right:28px}.login-visual__content h1{font-size:34px}.login-visual__content p{display:none}.login-panel{min-height:auto;padding:44px 26px 56px}.login-intro{margin-top:34px}}@media (width<=767px){.ant-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.ant-card-body{padding:12px!important}.ant-descriptions-view{overflow-x:auto}.app-header__divider,.user-name{display:none}.app-content.ant-layout-content{border-radius:8px}.dashboard-intro{min-height:210px;margin:-16px -16px 24px;padding:30px 24px}.dashboard-intro h2.ant-typography{font-size:29px}.dashboard-intro__mark{display:none}.module-card .ant-card-body{min-height:178px}.profile-toolbar{align-items:stretch}.student-summary-heading{margin-bottom:16px}.analysis-action-grid,.two-column-form{grid-template-columns:1fr}}@media (width<=480px){.login-visual{min-height:245px}.login-visual__content h1{font-size:28px}.login-panel{padding:34px 22px 44px}}
