:root{--background:#f7f5ee;--foreground:#233349;--primary:#152d45;--primary-foreground:#fff;--card:#fffefa;--card-foreground:#233349;--border:#d9d3c4;--muted:#eeeae0;--muted-foreground:#616c75;--ring:#977138;--radius:.35rem;--ltu-gold:#b18a4c;--ltu-navy:#142b43;--ltu-paper:#fffefa}
*{box-sizing:border-box}html{color-scheme:light}body{margin:0;background-color:var(--background);background-image:linear-gradient(90deg,rgba(177,138,76,.025) 1px,transparent 1px);background-size:32px 32px;color:var(--foreground);font-family:"Segoe UI","Microsoft JhengHei","PingFang TC",sans-serif;font-size:16px;line-height:1.75}body::before{content:"";position:fixed;z-index:-1;right:-70px;bottom:-80px;width:520px;height:520px;background:url('/ltu-logo.png') center/contain no-repeat;opacity:.045;pointer-events:none}h1,h2,h3,.ltu-wordmark{font-family:Georgia,"Noto Serif TC","Songti TC","PMingLiU",serif}h1{font-size:clamp(1.65rem,3vw,2.15rem);line-height:1.45;letter-spacing:.045em;color:var(--ltu-navy);margin:16px 0 12px}h2{font-size:1.4rem;line-height:1.55;color:var(--ltu-navy);margin:10px 0 16px;letter-spacing:.035em}h3{font-size:1.12rem;line-height:1.6;color:var(--ltu-navy);margin:20px 0 10px}p{margin:12px 0;overflow-wrap:anywhere}a{color:#765321;text-underline-offset:4px}a:hover{text-decoration:underline}.hint,.muted,small{color:#616c75;font-size:.875rem}.error{color:#9b3240}
.ltu-header{background:#142b43;color:#f7f0df;padding:0;border:0;border-top:4px solid #b18a4c;position:relative;z-index:20;box-shadow:0 3px 12px #10263b18}.ltu-masthead{max-width:1440px;margin:auto;min-height:114px;padding:8px 38px;display:flex;align-items:center;justify-content:space-between;gap:24px}.ltu-identity{display:flex;align-items:center;gap:16px;color:#f4e9cc;flex-shrink:0}.ltu-identity:hover{text-decoration:none}.ltu-logo{position:relative;display:block;width:92px;height:96px;overflow:hidden;flex-shrink:0}.ltu-logo img{position:absolute;width:160px;height:160px;max-width:none;left:-34px;top:-28px;object-fit:contain}.ltu-wordmark{display:block;font-size:2rem;letter-spacing:.07em;line-height:1.35;color:#d6b676}.ltu-wordmark>span{font-size:1.05rem;font-weight:400;letter-spacing:.05em}.ltu-subtitle{display:block;font-size:.875rem;letter-spacing:.12em;color:#e3e5e5;margin-top:5px}.ltu-subtitle i{font-style:normal;color:#b18a4c;margin:0 5px}.ltu-account{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;font-size:.875rem}.ltu-role{border:1px solid #b18a4c80;color:#e4c78f;padding:3px 10px;border-radius:3px;white-space:nowrap}.ltu-email{color:#d0d8df;overflow-wrap:anywhere}.ltu-signout{color:#eee6d8!important;background:transparent!important;border:1px solid #87919a!important;padding:5px 13px!important;min-height:36px!important;font-size:.875rem!important}.ltu-public-label{font-family:Georgia,serif;color:#c3ad83;font-size:.8rem;letter-spacing:.16em}.ltu-nav{border-top:1px solid #ffffff1b;background:#10253a}.ltu-nav-inner{max-width:1440px;margin:auto;padding:0 38px;display:flex;justify-content:space-between;align-items:stretch;gap:16px;min-height:54px}.ltu-main-links{display:flex;align-items:stretch;gap:6px}.ltu-main-links a,.ltu-admin-menu>summary{display:flex;align-items:center;justify-content:center;gap:18px;min-height:54px;padding:12px 23px;font-size:.9375rem;line-height:1.5;color:#e7ebee;border-bottom:3px solid transparent;white-space:nowrap;letter-spacing:.04em}.ltu-main-links a:hover,.ltu-main-links a[aria-current=page]{background:#ffffff08;border-bottom-color:#c9a363;color:#e9ce99;text-decoration:none}.ltu-admin-menu{position:relative;margin:0;border:0!important;padding:0!important;background:none!important}.ltu-admin-menu>summary{cursor:pointer;color:#e5c894;list-style:none}.ltu-admin-menu>summary::-webkit-details-marker{display:none}.ltu-admin-menu[open]>summary{background:#ffffff0b}.ltu-admin-links{position:absolute;right:0;top:100%;width:210px;background:#fffefa;border:1px solid #d5c39f;border-top:3px solid #b18a4c;box-shadow:0 14px 28px #12263d25;padding:7px;z-index:30}.ltu-admin-links a{display:block;padding:11px 14px;color:#233349;border-radius:3px;font-size:.9375rem}.ltu-admin-links a:hover{background:#f2ede2;text-decoration:none}.ltu-header-error{margin:0;padding:8px 38px;background:#fce8e8;color:#912d3f}
.shell{max-width:1280px;margin:0 auto;padding:32px 38px 56px}.shell>p:first-child a{font-size:.875rem}.shell>h1{padding-bottom:15px;border-bottom:1px solid #cbb98f}.box,.entry-card{background:var(--ltu-paper);border:1px solid var(--border);border-radius:6px;padding:26px 30px;margin:22px 0;box-shadow:0 4px 16px #25334505}.box>h2:first-child,.entry-card>h2:first-child{border-bottom:1px solid #e5ddcb;padding-bottom:13px}.entry{max-width:800px;margin:3vh auto;padding:28px 34px 60px}.entry>.brand{display:none}.entry h1{font-size:2.5rem}.entry-card{border-top:3px solid var(--ltu-gold);padding:30px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
button,.primary,[data-slot=button]{font-family:inherit;font-size:.9375rem;line-height:1.5;font-weight:500;min-height:43px;height:auto;padding:10px 17px;border:1px solid #aeb4b8;border-radius:4px;background:#fffefa;color:#213951;cursor:pointer;white-space:normal;box-shadow:0 1px 2px #102b4310;transition:background .15s,border-color .15s}.primary,[data-slot=button]:not([data-variant=outline]):not([data-variant=ghost]):not([data-variant=link]){background:#17364e;color:#fff;border-color:#17364e}button:hover,.primary:hover{border-color:#aa8248;background:#eee6d7;text-decoration:none;color:#142b43}button:disabled{opacity:.5;cursor:not-allowed}button+button{margin-left:8px}.actions button+button{margin-left:0}input,select,textarea{font:inherit;font-size:.9375rem;color:#24364b;background:#fff;border:1px solid #c7c7c0;border-radius:4px;padding:10px 12px;min-height:43px;max-width:100%;line-height:1.5;box-shadow:inset 0 1px 2px #152b4404}input[type=checkbox],input[type=radio]{width:18px;min-height:18px;height:18px;vertical-align:middle;accent-color:#977138;margin-right:7px}input[type=file]{padding:9px;width:100%}textarea{resize:vertical}label{display:block;font-size:.9375rem;font-weight:500;margin:14px 0}label>input:not([type=checkbox]):not([type=radio]),label>select,label>textarea{display:block;margin-top:7px;width:100%}label:has(>select){min-width:160px}label:has(>input[type=checkbox]){min-width:0}fieldset{min-width:0}input:focus,textarea:focus,select:focus{outline:2px solid #ad8b4c;outline-offset:2px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #b18a4c;outline-offset:4px}table{width:100%;border-collapse:collapse;font-size:.9375rem}th{background:#f1eee5;color:#5c5a50;font-weight:600;text-align:left;padding:12px 15px;border-bottom:1px solid #d4c6a7}td{padding:13px 15px;border-bottom:1px solid #e8e3d7;vertical-align:top}tbody tr:hover{background:#faf6ed}details>summary{cursor:pointer;font-weight:600;padding:8px 0;line-height:1.7}details:not(.ltu-admin-menu)[open]>summary{color:#83602c}pre{font:inherit;line-height:1.85}ol,ul{padding-left:24px}li{margin:8px 0}
.portal-frame{display:block;width:100%;height:calc(100dvh - 172px);min-height:620px;border:0}.records-page{background:var(--background)}.records-page>header{background:transparent;color:var(--ltu-navy);max-width:1450px;padding:22px 38px 10px;margin:auto;border:0}.records-page>header small{color:#88632f;letter-spacing:.16em;font-family:Georgia,serif}.records-page>header h1{font-size:1.8rem}.records-page>header>div{color:#646d74;font-size:.875rem}.records-page main{max-width:1450px;margin:auto;padding:0 38px 34px}.records-page .notice{background:#eeeade;border-left:3px solid #ae8a4c;color:#565d61;font-size:.875rem;padding:12px 16px;margin:14px 0}.records-page .stats{gap:14px;margin:20px 0}.records-page .card{background:var(--ltu-paper);border:1px solid #ddd4c1;border-top:2px solid #b18a4c;border-radius:5px;padding:14px 20px;min-width:145px}.records-page .card strong{font-family:Georgia,serif;font-size:2rem;color:#17364e}.records-page .layout{grid-template-columns:minmax(285px,.7fr) minmax(0,1.6fr);gap:22px}.records-page .panel{background:var(--ltu-paper);border:1px solid var(--border);border-radius:6px;padding:23px;box-shadow:0 3px 16px #25334504}.records-page .panel>h2:first-child{border-bottom:1px solid #ded2b7;padding-bottom:14px;margin-top:0}.records-page .list{scrollbar-color:#c4b697 #f5f1e8;max-height:720px}.records-page th{background:#f1eee5;font-size:.875rem;padding:12px 9px}.records-page td{padding:13px 9px}.records-page td button{background:transparent;border:0;box-shadow:none;text-align:left;padding:0;min-height:36px;line-height:1.7}.records-page .detail-row{padding:9px 0;border-bottom:1px solid #efebe2;line-height:1.85}.records-page .detail-row b{font-size:.875rem;color:#726448}.records-page h3{border-top:1px solid #dcd2be;padding-top:20px}.records-page .tag{color:#78582e;background:#f0e8d9;border:1px solid #dfcfaf;border-radius:3px;font-size:.875rem}.records-page #detail>section{border-color:#d9cbb1!important;border-radius:5px!important;background:#fffefa!important}.records-page #enrollmentPanel{background:#f5f0e4!important;border:1px solid #d8c5a2!important;border-left:3px solid #ac8344!important;padding:17px!important}.records-page #detail textarea{background:#fffefa;line-height:1.9}.records-page #detail details{margin:8px 0}.records-page #detail section h2{padding-bottom:12px;border-bottom:1px solid #e3d8c4}.records-page #aiPreview textarea{min-height:230px}.records-page input#q{flex:1 1 290px;max-width:480px}.records-page select{flex:0 1 auto}.records-page .ltu-record-filters{padding:17px;background:#ebe7db;border:1px solid #ded6c3;border-radius:5px}.records-page footer{color:#6d726f}
@media(min-width:1000px){.entry{position:relative}.entry::after{content:"";position:fixed;right:4%;top:210px;width:310px;height:310px;background:url('/ltu-logo.png') center/contain no-repeat;opacity:.07;pointer-events:none;z-index:-1}}
@media(max-width:850px){.ltu-masthead{padding:10px 20px;gap:12px;flex-wrap:wrap}.ltu-account{gap:9px;margin-left:auto}.ltu-wordmark{font-size:1.7rem}.ltu-wordmark>span{font-size:.9rem}.ltu-public-label{display:none}.ltu-nav-inner{padding:0 16px;gap:0;flex-wrap:wrap}.ltu-main-links{flex:1}.ltu-main-links a,.ltu-admin-menu>summary{padding:12px 13px;font-size:.875rem;min-height:49px}.ltu-admin-menu{margin-left:auto}.shell{padding:24px 20px 40px}.box{padding:22px}.records-page main{padding:0 18px 25px}.records-page>header{padding:20px 18px 8px}.records-page .layout{grid-template-columns:1fr}.records-page .list{max-height:360px}.portal-frame{height:calc(100dvh - 205px)}.records-page .panel{padding:19px}}
@media(max-width:520px){.ltu-masthead{padding:8px 15px}.ltu-logo{width:70px;height:79px}.ltu-logo img{width:135px;height:135px;left:-32px;top:-24px}.ltu-identity{gap:9px}.ltu-wordmark{font-size:1.5rem}.ltu-wordmark>span{font-size:.82rem}.ltu-subtitle{font-size:.75rem;letter-spacing:.05em}.ltu-account{width:100%;padding-bottom:8px;justify-content:flex-start}.ltu-email{flex:1;font-size:.8rem}.ltu-nav-inner{padding:0 8px}.ltu-main-links{width:100%;justify-content:space-between;gap:0}.ltu-main-links a{padding:11px 10px}.ltu-admin-menu>summary{min-height:41px;padding:8px 12px}.entry{padding:22px 18px}.entry h1{font-size:2rem}.entry-card,.box{padding:20px 17px}.shell{padding:22px 16px}.records-page .card{min-width:125px;padding:13px}.records-page main{padding:0 12px 22px}.records-page .panel{padding:16px}button+button{margin-top:7px}.actions button+button{margin-top:0}.portal-frame{height:calc(100dvh - 240px)}.ltu-admin-links{width:200px}}
.ltu-logo{background:#f4eddb;border:1px solid #b18a4c70;border-radius:3px;box-shadow:inset 0 0 0 4px #e5d9bd}.records-page>header h1{margin:4px 0;font-size:1.55rem}.records-page .stats .card{line-height:1.5}.records-page .stats .card strong{font-size:1.8rem}.records-page .stats .card p{margin:4px 0}.records-page .stats .card{padding:12px 18px}.records-page .stats{margin:16px 0}.records-page .notice{margin:10px 0;padding:9px 14px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{.ltu-header,.ltu-record-filters,button{display:none!important}body{background:white}body::before{display:none}.box,.panel{box-shadow:none;break-inside:avoid}.portal-frame{height:auto}}

.ltu-main-links{flex-wrap:wrap}@media(max-width:850px){.ltu-nav-inner{flex-wrap:wrap}.ltu-main-links{flex-basis:100%;justify-content:flex-start}.ltu-main-links a{flex:0 0 auto}.ltu-admin-menu{margin-left:auto}}

.records-page .roster-courses{margin-top:12px;border-top:1px solid #e6decc;padding-top:9px}.records-page .roster-courses-label{font-size:13px;color:#786442}.records-page .roster-course{margin-top:9px}.records-page .roster-course-line{display:flex;justify-content:space-between;flex-wrap:wrap;gap:3px 8px;font-size:14px;line-height:1.6}.records-page .roster-course-name{font-weight:600;color:#213d52;overflow-wrap:anywhere}.records-page .roster-course-percent{color:#68502f;font-variant-numeric:tabular-nums}.records-page .roster-course progress{display:block;width:100%;height:5px;margin:5px 0;border:0;border-radius:3px;overflow:hidden;accent-color:#aa8346;background:#ece6d9}.records-page .roster-course progress::-webkit-progress-bar{background:#ece6d9}.records-page .roster-course progress::-webkit-progress-value{background:#aa8346}.records-page .roster-course progress::-moz-progress-bar{background:#aa8346}.records-page .roster-course-count{font-size:12px;color:#6d736e}.records-page .roster-courses-empty{font-size:13px;color:#72766f;margin-top:10px}.records-page .list th:first-child{width:57%}.records-page .list td:first-child{min-width:150px}

/* Preserve every letter of the supplied logo; never enlarge beyond its frame. */
.ltu-logo{width:138px;height:112px;overflow:visible}.ltu-logo img{position:static;display:block;width:100%;height:100%;max-width:100%;object-fit:contain;left:auto;top:auto}@media(max-width:520px){.ltu-logo{width:94px;height:88px}.ltu-logo img{width:100%;height:100%;left:auto;top:auto}}
.ltu-logo img{transform:scale(1.45);transform-origin:center;pointer-events:none}

.records-page .roster-school{font-size:14px;color:#765b31;margin-top:7px;line-height:1.7}.records-page .student-school{font-weight:600;color:#304b5b;margin:0 0 10px}.records-page #schoolFilter{min-width:220px;max-width:100%}
