:root{--font-interface:"Songti SC","SimSun","Noto Serif CJK SC","Source Han Serif SC",serif;--font-display:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--blue:#376d70;--line:#e3eae6;font-family:var(--font-interface);font-synthesis:none;color:#293e35;background:#f5f7f9}
*{box-sizing:border-box}body{margin:0}[hidden]{display:none!important}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;min-height:44px;border:1px solid #d5e2df;background:#fff;color:var(--blue);padding:8px 14px}button:hover{background:#edf4ee}button:active{background:#e1ece1;transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #6b948c;outline-offset:4px}
.workbench{max-width:840px;min-height:100svh;margin:auto;background:#fff;display:flex;flex-direction:column}.hero{position:relative;overflow:hidden;min-height:220px;padding:28px 30px;background-image:url('assets/header-campus.svg'),linear-gradient(120deg,#f7fbfd,#eaf5fc 72%,#f8fbfd);background-repeat:no-repeat;background-position:right bottom;background-size:650px auto,cover}.brand-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{flex:1;min-width:0}.brand img{display:block;width:100%;max-width:300px;height:auto;mix-blend-mode:multiply}#search-toggle{display:flex;align-items:center;gap:6px;background:#ffffffe6;padding:8px 12px;flex-shrink:0}#search-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}.portal-name{position:relative;margin:18px 0 0;font-size:13px;line-height:1.6;letter-spacing:1px;color:#5f7986;font-weight:400}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}h2{font-size:21px;margin:0;font-weight:600;color:#2f4540}.section-heading>span{font-size:12px;color:#83909a}.services{padding:27px 30px 24px}.service-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.service-tile{border:1px solid #e1e9df;border-radius:var(--shape-panel);padding:20px 8px 18px;text-align:center;text-decoration:none;background:#f5f8f4;display:flex;align-items:center;flex-direction:column;gap:12px;transition:background 140ms,transform 140ms}.service-tile:hover{background:#ebf2e9;border-color:#ceddc9}.service-tile:active{background:#e2ecdf;transform:scale(.98)}.service-icon{width:52px;height:52px;border-radius:var(--shape-control);display:grid;place-items:center;color:#52806c}.service-icon svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}.service-tile strong{font-family:var(--font-interface);font-size:16px;line-height:1.4;font-weight:500;color:#354c43}
#search-panel{margin-bottom:20px}#search-panel label{display:block;margin-bottom:8px;font-size:13px;color:#657481}.search-row{display:flex;gap:8px}.search-row input{width:100%;min-width:0;min-height:44px;padding:10px 12px;background:#f7f9fb;border:1px solid #ccdce7;color:#293e35}.search-row button{flex-shrink:0;white-space:nowrap}.empty{font-size:14px;color:#6c7c88;padding:22px 16px;background:#f7f9fb;border:1px solid var(--line);border-radius:var(--shape-panel)}footer{padding:28px 18px max(24px,env(safe-area-inset-bottom));margin-top:auto;text-align:center;color:#98a4ad;font-size:11px;letter-spacing:1px}
.tasks-section{padding:24px 30px 18px}.tasks-section .section-heading{margin-bottom:14px}.task-heading-actions{display:flex;gap:6px}.task-heading-actions button{min-height:36px;font-size:13px;padding:5px 11px;background:#f7faf6}.task-tabs{display:flex;gap:8px;margin:16px 0 12px}.task-tabs button{flex:1;min-width:0;font-size:15px;padding:9px 4px;border:1px solid transparent;background:transparent;color:#65776b}.task-tabs [aria-selected="true"]{background:#edf3e9;color:#365c49;border-color:#dce7d8}.task-placeholder{margin:0;padding:28px 12px;text-align:center;background:#f7f9f6;border:1px solid #e5ece2;border-radius:var(--shape-panel);font-size:14px;color:#829084}.task-record{padding:14px;background:#f7f9f6;border:1px solid #e3eae0;border-radius:var(--shape-panel);margin-bottom:8px}.task-record-head{display:flex;justify-content:space-between;gap:10px;font-size:15px}.task-status{color:#687d67;font-size:12px}.task-record p{font-size:13px;color:#748174;margin:8px 0}.task-record a{font-size:13px;color:#376d70;text-underline-offset:3px}#tasks-error{padding:12px;font-size:13px;color:#9b423c;background:#fcf4f1;border-radius:var(--shape-control)}
.calendar-link{display:flex;align-items:center;gap:18px;margin:0 30px;min-height:100px;padding:18px 17px;text-decoration:none;background:#f6f4ee;border:1px solid #e5e1d7;border-radius:var(--shape-panel)}.calendar-link:hover{background:#eeede5}.calendar-link:active{background:#e5e5da}.calendar-label{flex-shrink:0;font-family:var(--font-display);font-size:16px;font-weight:500;line-height:1.5;letter-spacing:1px;color:#8b755d}.calendar-copy{min-width:0}.calendar-link strong{display:block;font-family:var(--font-display);font-size:20px;line-height:1.45;font-weight:500;color:#3d5145;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-link small{display:block;font-size:13px;color:#899081;line-height:1.6;margin-top:7px}.link-arrow{margin-left:auto;flex-shrink:0;color:#7f8b76;font-size:27px;font-weight:400}
@media(max-width:540px){.hero{min-height:196px;padding:22px 20px 24px;background-size:470px auto,cover}.brand-row{gap:12px}.brand img{max-width:270px}#search-toggle{padding:7px 10px;font-size:14px}.portal-name{margin-top:14px}.services{padding:24px 20px}.service-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.service-tile{padding:18px 6px 16px}.section-heading{margin-bottom:17px}h2{font-size:20px}.section-heading>span{font-size:11px}.tasks-section{padding:22px 20px 16px}.calendar-link{margin:0 20px}.task-tabs button{font-size:14px}}
@media(max-width:350px){.hero,.services,.tasks-section{padding-left:16px;padding-right:16px}.section-heading>span{display:none}.service-tile strong{font-size:15px}.calendar-link{margin:0 16px;gap:13px;padding:16px 13px}.calendar-link strong{font-size:18px}.calendar-link small{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.hero{isolation:isolate;background:#f9faf6;min-height:204px;}.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:url('assets/campus-outline.webp') center bottom/cover no-repeat;opacity:.28;mix-blend-mode:multiply;pointer-events:none;}.brand{position:relative;max-width:210px;aspect-ratio:1378/294;overflow:hidden;}.brand img{position:absolute;width:145%;max-width:none;left:-45%;top:-40.82%;height:auto;}.portal-name{margin-top:15px;color:#7b897b;}.calendar-link{position:relative;isolation:isolate;overflow:hidden;background:#f8f7f2;}.calendar-link::before{content:"";position:absolute;inset:0;z-index:-1;background:url('assets/calendar-outline.webp') right center/auto 100% no-repeat;mix-blend-mode:multiply;opacity:.45;pointer-events:none;}.calendar-link .link-arrow{color:#61765b;}.calendar-copy{position:relative;}@media(max-width:540px){.hero{min-height:184px;padding-top:26px;}.brand{max-width:180px;}.hero::before{background-position:58% bottom;}.calendar-link::before{opacity:.42;}}
.hero::before{background-image:url('assets/sakura-illustration.webp');opacity:.45;}.calendar-link::before{background-image:url('assets/youth-calendar.webp');opacity:.5;}@media(max-width:540px){.calendar-link::before{opacity:.5;}}
