/* Local design review. School content and routes remain owned by site.js. */
:root{--rail:300px;--ink:#283c38;--muted:#7c8982;--accent:#3c6356;--line:#e0e6df;--canvas:#f4f6f2;--paper:#fffefa;--nav:#edf1eb;--cover:#edf0e7;--serif:"Noto Serif TC","Source Han Serif TC","Songti TC","PMingLiU",serif;--sans:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif}
html{scroll-behavior:smooth;scroll-padding-top:150px}
body{background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.75;-webkit-font-smoothing:antialiased}
body.primary{--ink:#47443c;--muted:#8b877b;--accent:#567563;--line:#e9e5da;--canvas:#faf8f2;--paper:#fffefb;--nav:#efefe1;--cover:#f3ebdd}
.site-header{width:var(--rail);padding:34px 20px 24px;background:var(--paper);border-right-color:var(--line)}
.identity{gap:13px;padding:0 2px 32px;align-items:center}
.identity img{width:60px;height:60px;object-fit:contain}
.identity>div{flex:1;min-width:0}
.identity h1{font-family:var(--serif);font-size:17px;line-height:1.5;font-weight:700;letter-spacing:.015em;white-space:nowrap}
.identity h1 a{white-space:nowrap}
.school-division{display:block;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.13em;color:var(--accent);margin-top:5px;line-height:1.5}
.identity p{display:none}
.primary .identity h1{font-family:var(--sans);font-size:17px;font-weight:700;letter-spacing:0}
.nav>ul>li{margin-bottom:8px}
.nav a{padding:13px 17px;border-radius:9px;gap:15px;font-size:15px;color:#56655b;transition:background 180ms ease,color 180ms ease,transform 180ms ease}
.nav a:hover{background:var(--nav);color:var(--ink)}
.nav a.selected{background:var(--nav);color:var(--accent);font-weight:700}
.nav a.selected::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);margin-left:auto;flex-shrink:0}
.nav-icon{width:22px;height:22px}
.nav li>ul{border-color:var(--line);margin-left:28px}
.nav li>ul a{font-size:13px;line-height:1.5;color:#718078;padding:9px 10px}
.submenu-toggle{top:12px;right:9px;color:var(--muted);width:26px;height:28px;border-radius:5px}
.submenu-toggle:hover{background:var(--nav)}
.utility{border-color:var(--line);padding-top:19px;gap:22px;color:var(--muted);font-size:12px}
.utility a:hover{color:var(--accent)}
.page-heading{padding:38px 42px 20px;background:var(--canvas);border-bottom:0;backdrop-filter:none}
.layout-inner{max-width:1480px;gap:12px 24px;flex-wrap:wrap}
.page-heading h2{font-family:var(--serif);font-size:29px;font-weight:700;letter-spacing:.06em;line-height:1.4}
.primary .page-heading h2{font-family:var(--sans);font-size:28px;font-weight:750;letter-spacing:.025em}
.breadcrumb{font-size:11px;letter-spacing:.04em;color:var(--muted)}
.searchform{width:330px;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding-left:16px;box-shadow:0 2px 5px #243c2c02}
.searchform input{font-size:12px;line-height:1.5;padding:12px 0;color:var(--ink)}
.searchform button{color:var(--accent);padding:8px 12px;font-size:12px}
.primary .searchform{border-radius:22px}
.category-tabs{padding:0 42px 25px;gap:8px;scrollbar-width:none;max-width:1564px}
.category-tab{padding:7px 16px;border:1px solid transparent;border-radius:7px;font-size:12px;line-height:1.6;color:#768177;transition:background 180ms ease,border-color 180ms ease,color 180ms ease}
.category-tab:hover{background:var(--paper);border-color:var(--line);color:var(--accent)}
.category-tab.selected{background:#e2e9df;color:#3d5b49;border-color:#d7e1d3;font-weight:700}
.primary .category-tab{border-radius:20px}
.primary .category-tab.selected{background:#e9eddb;border-color:#dee4cd;color:#5e714d}
.primary .category-tab:nth-child(4n+2):hover{background:#f4e6dd;border-color:#ecdcd1}
.primary .category-tab:nth-child(4n+3):hover{background:#e4eceb;border-color:#d8e4e2}
.layout{padding:0 42px 32px}
.content{max-width:1480px}
.entry-list,.honor-list{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;gap:28px 25px;align-items:stretch}
.entry-card{display:flex;flex-direction:column;align-self:stretch;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--paper);padding:0;min-height:0;box-shadow:0 2px 6px #253d2e03;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}
.entry-image{width:100%;aspect-ratio:4/3;border-radius:0;background:var(--cover);position:relative;flex-shrink:0;overflow:hidden}
.entry-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 35%;max-height:none;transition:transform 400ms cubic-bezier(.2,.65,.3,1),filter 250ms}
.entry-image.placeholder-cover img{object-fit:cover}
.entry-text{display:grid;grid-template-rows:60px 41px auto;gap:9px;padding:19px 19px 15px;flex:1;position:relative;min-width:0}
.entry-card h2,.text-card h2{font-family:var(--serif);font-size:18px;font-weight:700;line-height:1.65;letter-spacing:.015em;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.entry-card h2{min-height:0;max-height:3.3em;align-self:start}
.entry-card h2 a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.entry-summary,.text-card .entry-summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0;color:#7e887f;font-size:12px;line-height:1.7;min-height:0;max-height:3.4em;align-self:start}
.card-meta,.text-card .card-meta{border-top:1px solid var(--line);padding-top:12px;margin-top:4px;display:flex;flex-wrap:nowrap;align-items:center;gap:10px;color:var(--muted);font-size:10px;line-height:1.6;min-width:0}
.entry-category{min-width:0;max-width:65%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#6c7b6a}
.entry-date{font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:10px}
.entry-card .pin-badge{position:absolute;right:12px;top:12px;z-index:2;display:flex;align-items:center;gap:4px;border:1px solid #dce3d6;background:#f7f9f1eb;color:#577044;padding:4px 9px;border-radius:5px;font-size:10px;margin:0;box-shadow:0 1px 4px #35482e06}
.entry-card .pin-badge::before{content:"";width:4px;height:4px;border-radius:50%;background:currentColor}
.primary .entry-card{border-radius:18px;box-shadow:0 3px 8px #63553b04}
.primary .entry-card h2{font-family:var(--sans);font-size:17px;line-height:1.65;font-weight:700;letter-spacing:.01em}
.primary .entry-summary{color:#91887c}
.primary .entry-card:nth-child(4n+1){border-bottom-color:#d8dfc8}
.primary .entry-card:nth-child(4n+2){border-bottom-color:#e6d4c8}
.primary .entry-card:nth-child(4n+3){border-bottom-color:#d1e0df}
.primary .entry-card:nth-child(4n){border-bottom-color:#ded5e4}
.team-tabs{gap:10px;margin-bottom:26px}
.team-tabs a{border-color:var(--line);background:var(--paper);font-size:12px;padding:7px 16px;border-radius:8px;color:#6f7e70}
.primary .team-tabs a{border-radius:20px}
.team-heading{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:24px}
.team-heading h2{font-family:var(--serif);font-size:23px;letter-spacing:.035em}
.primary .team-heading h2{font-family:var(--sans);font-size:21px}
.team-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:25px;align-items:stretch}
.team-card{border-color:var(--line);border-radius:13px;background:var(--paper);align-self:stretch;display:flex;flex-direction:column}
.team-card>img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:center 35%;background:var(--cover)}
.team-name{padding:19px;flex:1;min-height:83px}
.team-name h3{font-family:var(--serif);font-size:17px;line-height:1.7}
.primary .team-card{border-radius:18px}
.primary .team-name h3{font-family:var(--sans);font-size:16px}
.team-name>span{font-size:18px;color:#9ba894;transition:transform 180ms}
.calendar-filters{background:var(--paper);border-color:var(--line);border-radius:12px;padding:19px 22px}
.calendar-card{background:var(--paper);border-color:var(--line);border-radius:13px;padding:28px;min-height:195px}
.calendar-card h2{font-family:var(--serif);font-size:23px;font-weight:700}
.primary .calendar-card h2{font-family:var(--sans);font-size:21px}
.calendar-card:hover{background:#fcfdf8;border-color:#bbcbb5}
.calendar-meta{color:var(--muted)}
.calendar-open{color:var(--accent)}
.detail-page .page-heading{border-bottom:1px solid var(--line);margin-bottom:30px}
.article-detail{max-width:980px;padding:26px 38px 42px;background:var(--paper);border:1px solid var(--line);border-radius:15px}
.article-detail>h1{font-family:var(--serif);font-size:31px;line-height:1.65;letter-spacing:.02em}
.primary .article-detail>h1{font-family:var(--sans);font-size:29px}
.article-meta{color:var(--muted);border-color:var(--line)}
.prose{font-family:var(--sans);font-size:16px;line-height:2;color:#49574d}
.prose a{color:var(--accent)}
.back,.pagination button{background:var(--paper);border-color:var(--line);border-radius:8px;color:#65765d}
.honor-filter select,.calendar-filters select{border-color:var(--line);background:var(--paper);color:var(--ink)}
.honor-filter{padding:16px 20px;background:var(--paper);border:1px solid var(--line);border-radius:10px}
.footer{color:var(--muted);padding:8px 42px 30px;letter-spacing:.025em;margin-top:14px;font-size:10px}
.view-enter{animation:campus-enter 260ms cubic-bezier(.2,.7,.3,1) both}
@keyframes campus-enter{from{opacity:.35;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(hover:hover){.entry-card:hover{transform:translateY(-4px);box-shadow:0 9px 24px #304b3710;border-color:#c7d3c3}.entry-card:hover .entry-image img{transform:scale(1.025)}.entry-card:hover h2 a{color:var(--accent)}.team-card:hover{transform:translateY(-3px);box-shadow:0 8px 20px #304b3710}.team-card:hover .team-name>span{transform:translate(2px,-2px)}}
@media(min-width:1900px){.layout,.page-heading{padding-left:54px;padding-right:54px}.category-tabs{padding-left:54px;padding-right:54px}.entry-list,.honor-list{column-gap:28px;row-gap:32px}}
@media(max-width:1399px) and (min-width:801px){:root{--rail:280px}.site-header{padding-left:17px;padding-right:17px}.identity{gap:10px}.identity img{width:54px;height:54px}.identity h1,.primary .identity h1{font-size:16px}.layout,.page-heading{padding-left:28px;padding-right:28px}.category-tabs{padding-left:28px;padding-right:28px}.entry-list,.honor-list,.team-grid{gap:22px}.entry-text{padding:16px 15px 14px}.entry-card h2{font-size:17px}.primary .entry-card h2{font-size:16px}}
@media(max-width:1199px) and (min-width:801px){.entry-list,.honor-list,.team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.searchform{width:270px}.page-heading h2{font-size:26px}}
@media(max-width:950px) and (min-width:801px){.entry-list,.honor-list,.team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.searchform{width:230px}.category-tabs{gap:4px}.category-tab{padding:6px 12px}}
@media(max-width:800px){:root{--rail:0px}html{scroll-padding-top:130px}.site-header{position:relative;width:auto;padding:20px 22px 0;border-right:0;border-bottom:1px solid var(--line)}.identity{gap:12px;padding:0 0 16px;max-width:330px}.identity img{width:54px;height:54px}.identity h1,.primary .identity h1{font-size:17px}.school-division{font-size:11px;letter-spacing:.08em;margin-top:3px}.utility{top:40px;right:22px;padding:0;border:0;gap:12px}.nav-wrap{border-color:var(--line)}.menu-toggle{font-size:12px;color:var(--accent);padding:10px 2px}.nav a{font-size:14px;padding:10px 14px}.submenu-toggle{top:7px}.page-heading{padding:23px 22px 17px}.page-heading h2,.primary .page-heading h2{font-size:24px}.layout-inner{gap:11px 15px}.breadcrumb{font-size:10px}.searchform{width:48%;min-width:145px;border-radius:9px;padding-left:12px}.searchform input{padding:10px 0;font-size:11px}.searchform button{font-size:11px;padding:6px 9px}.category-tabs{padding:0 22px 20px;gap:6px}.category-tab{font-size:11px;padding:6px 12px}.layout{padding:0 20px 26px}.entry-list,.honor-list,.team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}.entry-card{border-radius:12px}.primary .entry-card{border-radius:15px}.entry-text{padding:15px 14px 13px;gap:8px}.entry-card h2,.primary .entry-card h2{font-size:16px}.entry-summary{font-size:11px}.card-meta{font-size:9px;padding-top:10px;gap:6px}.entry-date{font-size:9px}.team-name{padding:15px;min-height:76px}.team-name h3{font-size:16px}.team-heading h2{font-size:21px}.article-detail{padding:23px 19px 30px;border-radius:12px}.article-detail>h1,.primary .article-detail>h1{font-size:25px}.prose{font-size:15px}.footer{padding:10px 22px 25px;font-size:9px}.calendar-card h2{font-size:21px}.honor-filter{padding:13px 15px}.team-tabs{gap:7px}.team-tabs a{font-size:11px;padding:6px 12px}.directory-links{gap:12px}}
@media(max-width:420px){.site-header{padding-left:16px;padding-right:16px}.identity{gap:10px}.identity img{width:48px;height:48px}.identity h1,.primary .identity h1{font-size:16px}.utility{right:16px;top:38px}.page-heading{padding-left:16px;padding-right:16px}.page-heading h2,.primary .page-heading h2{font-size:22px}.layout{padding-left:14px;padding-right:14px}.category-tabs{padding-left:16px;padding-right:16px}.entry-list,.honor-list,.team-grid{gap:15px 11px}.entry-text{padding:12px 11px 11px;gap:7px}.entry-card h2,.primary .entry-card h2{font-size:14px}.entry-summary{font-size:10px}.card-meta{gap:4px;font-size:8px}.entry-date{font-size:8px}.team-name{padding:13px 11px}.team-name h3,.primary .team-name h3{font-size:14px}}
@media(max-width:340px){.utility{display:none}.entry-list,.honor-list,.team-grid{grid-template-columns:1fr}.entry-card h2,.primary .entry-card h2{font-size:17px}.searchform{min-width:120px}.card-meta,.entry-date{font-size:10px}}
@media(max-width:800px){.entry-text{grid-template-rows:54px 38px auto}}
@media(max-width:420px){.entry-text{grid-template-rows:47px 34px auto}}
@media(max-width:340px){.entry-text{grid-template-rows:57px 38px auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
