: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;}}
.hero{min-height:242px;background:#f6faf7;padding-top:26px;}.hero::before{inset:auto 0 0;height:130px;background-position:center 57%;opacity:.7;mask-image:linear-gradient(to bottom,transparent,#000 32%);}.brand-row,.portal-name{position:relative;z-index:1;}.portal-name{margin-top:10px;color:#526a5b;font-size:13px;letter-spacing:.5px;}.calendar-link{gap:16px;min-height:110px;padding:20px 22px;background:#edf3e8;border-color:#dce6d5;}.calendar-link::before{inset:0 20px 0 auto;width:140px;background-position:right center;background-size:auto 100%;opacity:.32;mask-image:linear-gradient(to right,transparent,#000 45%);}.calendar-label{font-size:15px;color:#6f8560;letter-spacing:.5px;}.calendar-copy{flex:1;padding-right:130px;}.calendar-link strong{color:#354c38;font-size:20px;font-weight:600;}.calendar-link small{color:#6e8168;font-size:13px;margin-top:7px;}.calendar-link .link-arrow{position:relative;z-index:1;display:grid;place-items:center;width:30px;height:38px;color:#527044;background:#edf3e8;border-radius:var(--shape-item);}.calendar-link:hover{background:#e6efdf;}.calendar-link:active{background:#dce8d2;}@media(max-width:540px){.hero{min-height:220px;padding-top:24px;}.hero::before{height:118px;}.portal-name{margin-top:12px;}.calendar-link{padding:18px 16px;gap:12px;}.calendar-link::before{width:100px;right:25px;opacity:.2;}.calendar-copy{padding-right:0;}.calendar-link strong{font-size:18px;}.calendar-link small{font-size:12px;}.calendar-link .link-arrow{background:#edf3e8e8;}}@media(max-width:350px){.calendar-link{padding:16px 13px;gap:10px;}.calendar-label{font-size:14px;}.calendar-link strong{font-size:16px;}}
@media(max-width:350px){.calendar-link::before{width:65px;right:27px;opacity:.18;}}
.hero{background:linear-gradient(120deg,#f4f9fc,#edf6fd 68%,#fff);min-height:238px;}.hero::before{background-image:url('assets/campus-simple.webp');height:136px;opacity:.85;background-position:center 61%;mask-image:linear-gradient(to bottom,transparent,#000 34%,#000 76%,transparent);}.portal-name{color:#405d70;}.hero::after{content:"";position:absolute;bottom:0;left:0;right:0;height:32px;background:linear-gradient(to bottom,transparent,#fff);pointer-events:none;}@media(max-width:540px){.hero{min-height:216px;}.hero::before{height:114px;background-position:58% 62%;}.portal-name{color:#405d70;}}
.portal-name{font-family:var(--font-interface);font-size:14px;font-weight:500;}.calendar-link{background:#eaf3fc;border-color:#d6e5f2;}.calendar-link::before{background-image:url('assets/calendar-blue.webp');opacity:.7;mix-blend-mode:normal;}.calendar-link:hover{background:#e0edf9;}.calendar-link:active{background:#d4e5f6;}.calendar-label{font-family:"STKaiti","KaiTi","Kaiti SC",var(--font-interface);font-size:20px;font-weight:600;line-height:1.35;color:#417baa;letter-spacing:1px;}.calendar-link strong{font-family:var(--font-interface);color:#2d5577;font-weight:600;}.calendar-link small{font-family:var(--font-interface);color:#5b7790;}.calendar-link .link-arrow{color:#417baa;background:#eaf3fce8;}@media(max-width:540px){.calendar-link::before{opacity:.55;}.calendar-label{font-size:19px;}}@media(max-width:350px){.calendar-label{font-size:18px;}.calendar-link::before{opacity:.45;}}
/* Blue workbench alignment: preserve original wordmark pixels, tint display only. */
.brand img{filter:brightness(0) saturate(100%) invert(39%) sepia(26%) saturate(1147%) hue-rotate(161deg) brightness(92%) contrast(89%);}
.calendar-copy{display:flex;align-items:center;min-height:54px;transform:translateY(1px);}
.service-tile{background:#eff6fc;border-color:#d9e7f3;}
.service-tile:hover{background:#e5f0fa;border-color:#c6dcee;}
.service-tile:active{background:#d9eafb;}
.service-icon{color:#417baa;}
.service-icon svg{width:54px;height:46px;stroke-width:2.5;}
.service-icon .venue-facade{fill:#dcecf9;}
.service-icon .venue-tower{fill:#c8e0f2;}
.service-tile strong{color:#355f81;}
/* Lighter framing, consistent curvature and centered campus artwork. */
.workbench,.calendar-shell{--shape-panel:var(--shape-control);}
.hero::before{inset:auto 0 0;width:100%;background-position:center 62%;background-size:cover;}
.service-tile{max-width:140px;background:#f5f9fd;}
@media(max-width:540px){.hero::before{background-position:center 62%;}}
/* Crop away the illustration's faded left margin and center the campus subject. */
.hero::before{background-size:130% auto;background-position:right 62%;opacity:.9;}
@media(max-width:540px){.hero::before{background-size:130% auto;background-position:right 62%;}}
/* Use the illustration's own sky across the whole header, fade only at the bottom. */
.hero::before{inset:0;width:100%;height:100%;background-size:130% auto;background-position:right 54%;opacity:.9;mask-image:linear-gradient(to bottom,#000 0%,#000 82%,transparent 100%);mix-blend-mode:normal;}
@media(max-width:540px){.hero::before{inset:0;height:100%;background-size:auto 100%;background-position:72% center;mask-image:linear-gradient(to bottom,#000 0%,#000 82%,transparent 100%);}}

.calendar-notice{position:fixed;z-index:30;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100vw - 32px);padding:14px 22px;border:1px solid var(--line);border-radius:var(--shape-control);background:#fff;color:var(--blue);box-shadow:0 4px 18px #244e7214;font:16px/1.6 var(--font-interface);text-align:center;overflow-wrap:anywhere}


.calendar-label{display:block;width:66px;height:63px;object-fit:contain;flex-shrink:0;letter-spacing:0}@media(max-width:540px){.calendar-label{width:58px;height:55px}.calendar-link{gap:13px}}@media(max-width:350px){.calendar-label{width:51px;height:49px}.calendar-link{gap:10px}}

/* Workbench-only font choice; shared calendar and other surfaces keep their own rules. */
@font-face{font-family:"Calendar Smiley";src:url('assets/fonts/SmileySans-v2.0.1.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
body.workbench-smiley{--font-interface:"Calendar Smiley",-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--font-display:var(--font-interface);font-family:var(--font-interface)}
.workbench-smiley :is(h2,strong,button,input,select,textarea){font-family:var(--font-interface);font-weight:400}
.workbench-smiley .calendar-label{display:grid;place-content:center;font-family:var(--font-interface);font-weight:400;font-size:25px;line-height:1.15;text-align:center}
.workbench-smiley .calendar-label{width:94px;font-size:24px;line-height:1.25}
@media(max-width:540px){.workbench-smiley .calendar-label{width:82px;font-size:22px}}
@media(max-width:350px){.workbench-smiley .calendar-label{width:76px;font-size:20px}}
