:root{--blue:#17458f;--blue2:#0c2e65;--gold:#f7a81b;--ink:#14233b;--paper:#f5f7fb;--line:#dce3ee;--muted:#637087}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,PingFang TC,sans-serif}.hero{padding:28px max(5vw,24px) 84px;color:#fff;background:radial-gradient(circle at 82% 22%,rgba(247,168,27,.24),transparent 25%),linear-gradient(135deg,var(--blue2),var(--blue))}.hero nav{display:flex;align-items:center;gap:12px;max-width:1320px;margin:auto;padding-bottom:22px;border-bottom:1px solid rgba(255,255,255,.22);font-weight:700}.brandMark{display:grid;place-items:center;width:40px;height:40px;border:2px solid var(--gold);border-radius:50%;color:var(--gold);font-family:Georgia,serif}.term{margin-left:auto;font-size:.86rem;opacity:.82}.heroGrid{display:grid;grid-template-columns:1.4fr .6fr;grid-gap:8vw;gap:8vw;align-items:end;max-width:1320px;margin:86px auto 0}.eyebrow{margin:0 0 14px;color:var(--gold);font-size:.72rem;font-weight:900;letter-spacing:.16em}h1,h2{font-family:Georgia,"Noto Serif TC",serif;font-weight:400}h1{margin:0;max-width:920px;font-size:clamp(3rem,6vw,6.2rem);line-height:.98;letter-spacing:-.04em}h1 em{display:block;margin-top:15px;color:var(--gold);font-size:.38em;letter-spacing:.01em}.intro{max-width:680px;margin:30px 0 0;color:rgba(255,255,255,.78);font-size:1.08rem;line-height:1.8}.briefCard{padding:28px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.briefCard strong{display:block;margin:12px 0;color:var(--gold);font-family:Georgia,serif;font-size:5rem;font-weight:400}.briefCard p{color:rgba(255,255,255,.72);line-height:1.6}.sourcePill{margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.2);font-size:.78rem;font-weight:800;color:#dce9ff}.summaryBar{display:grid;grid-template-columns:repeat(4,1fr);max-width:1120px;margin:-36px auto 0;background:#fff;border:1px solid var(--line);box-shadow:0 18px 50px rgba(20,35,59,.1)}.summaryBar div{display:flex;flex-direction:column;align-items:center;padding:24px;border-right:1px solid var(--line)}.summaryBar div:last-child{border:0}.summaryBar b{color:var(--blue);font-family:Georgia,serif;font-size:2rem}.summaryBar span{margin-top:4px;color:var(--muted);font-size:.78rem}.section{padding:100px max(5vw,24px)}.sectionHeading{display:flex;justify-content:space-between;align-items:end;gap:30px;max-width:1320px;margin:0 auto 42px;padding-bottom:26px;border-bottom:1px solid var(--line)}.rulesSection h2,.sectionHeading h2{margin:0;font-size:clamp(2.2rem,4vw,4rem)}.sectionHeading>p{max-width:470px;margin:0;color:var(--muted);line-height:1.75}.timeline{display:grid;grid-gap:24px;gap:24px;max-width:1320px;margin:auto}.month{display:grid;grid-template-columns:230px 1fr;background:#fff;border:1px solid var(--line);box-shadow:0 8px 30px rgba(20,35,59,.04)}.monthTitle{padding:30px;background:linear-gradient(145deg,#fff8ea,#fff)}.monthTitle h3{margin:0 0 12px;color:var(--blue);font-family:Georgia,"Noto Serif TC",serif;font-size:1.65rem;font-weight:400}.monthTitle span{color:#8a681e;font-size:.78rem;font-weight:800;line-height:1.5}.monthEvents{padding:10px 28px}.event{display:grid;grid-template-columns:110px 1fr;grid-gap:20px;gap:20px;padding:24px 0;border-bottom:1px solid var(--line)}.event:last-child{border:0}.event>time{color:var(--blue);font-family:Georgia,serif;font-size:1.1rem;font-weight:700}.tagRow{display:flex;gap:8px;align-items:center}.tag{display:inline-block;padding:4px 8px;border-radius:4px;background:#e8eef9;color:var(--blue);font-size:.68rem;font-weight:900}.tag.board{background:#fff0d4;color:#825200}.tag.outdoor{background:#e5f4ea;color:#22663b}.tag.special{background:#f9e6ed;color:#9f2855}.pending{color:#a36b00;font-size:.68rem;font-weight:900}.event h4{margin:9px 0 8px;font-size:1.05rem}.event p{margin:5px 0;color:var(--muted);font-size:.78rem;line-height:1.55}.event .eventMeta{color:#36465f;font-weight:650}.event .note{color:#89691c}.event.tentative{opacity:.88}.rulesSection{padding:90px max(5vw,24px);color:#fff;background:var(--blue2)}.rulesSection>div:first-child{max-width:1320px;margin:0 auto 38px}.rulesGrid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1px;gap:1px;max-width:1320px;margin:auto;background:rgba(255,255,255,.2)}.rulesGrid article{min-height:190px;padding:28px;background:#123c79}.rulesGrid b{color:var(--gold);font-size:1rem}.rulesGrid p{color:rgba(255,255,255,.7);font-size:.85rem;line-height:1.75}footer{display:flex;align-items:center;justify-content:center;gap:15px;padding:34px;color:rgba(255,255,255,.62);background:#071d42;font-size:.78rem}footer .brandMark{width:30px;height:30px;font-size:.75rem}@media(max-width:900px){.heroGrid{grid-template-columns:1fr}.summaryBar{margin:-22px 20px 0}.month{grid-template-columns:1fr}.monthTitle{padding:22px 26px}.rulesGrid{grid-template-columns:repeat(2,1fr)}.sectionHeading{align-items:start;flex-direction:column}}@media(max-width:600px){.hero{padding-bottom:56px}.heroGrid{margin-top:52px}.summaryBar{grid-template-columns:repeat(2,1fr)}.summaryBar div:nth-child(2){border-right:0}.summaryBar div:nth-child(-n+2){border-bottom:1px solid var(--line)}.event{grid-template-columns:1fr;gap:8px}.monthEvents{padding:6px 20px}.rulesGrid{grid-template-columns:1fr}.section{padding-top:72px;padding-bottom:72px}.term{font-size:.72rem}}.loginShell{min-height:100vh;background:linear-gradient(135deg,#102f67,#17458f);display:grid;place-items:center;padding:1rem}.loginCard{width:min(430px,100%);background:#fff;border-radius:20px;padding:2rem;box-shadow:0 24px 70px #071b3d55;color:#172033}.loginCard .adminBrandLogo{width:230px;height:110px;margin:auto}.loginCard>p{text-align:center;color:#17458f;font-size:.72rem;font-weight:900;letter-spacing:.12em}.loginCard h1{text-align:center;margin:.5rem 0 1.5rem;font-size:2.2rem;line-height:1.2}.loginCard label{display:block;font-size:.82rem;font-weight:800}.loginCard input{display:block;width:100%;margin-top:.4rem;border:1px solid #ccd5e3;border-radius:10px;padding:.85rem}.loginCard button{width:100%;border:0;border-radius:10px;background:#17458f;color:#fff;padding:.85rem;font-weight:800;margin:1rem 0;cursor:pointer}.loginCard button:disabled{opacity:.65}.loginCard a{display:block;text-align:center;color:#17458f;text-decoration:none;font-size:.82rem}.loginError{background:#fff0f0;color:#b42318;border-radius:8px;padding:.7rem;margin-top:.8rem}.adminLink{margin-left:auto;color:#fff;text-decoration:none;border:1px solid #ffffff55;border-radius:999px;padding:.55rem .85rem;font-size:.82rem}.officeShell{min-height:100vh;background:#f3f6fb;color:#172033;display:grid;grid-template-columns:250px 1fr}.sideNav{background:#102f67;color:#fff;padding:1.4rem;display:flex;flex-direction:column;gap:.45rem;position:-webkit-sticky;position:sticky;top:0;height:100vh}.officeBrand{display:flex;align-items:center;gap:.75rem;padding:.4rem 0 1.5rem}.officeBrand>b{background:#f7a81b;color:#102f67;border-radius:12px;padding:.65rem;font-size:1.25rem}.officeBrand span{font-weight:800}.officeBrand small{display:block;font-size:.68rem;font-weight:500;opacity:.7;margin-top:.2rem}.sideNav button{background:transparent;border:0;color:#dce7fa;text-align:left;padding:.85rem 1rem;border-radius:10px;font-weight:700;cursor:pointer}.sideNav button.active,.sideNav button:hover{background:#ffffff18;color:#fff}.sideNav>a{color:#f7c75e;margin-top:auto;text-decoration:none;font-size:.82rem;padding:1rem}.workspace{padding:2rem 2.4rem;max-width:1500px;width:100%;margin:auto}.workspaceHead{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1.5rem}.workspaceHead p{color:#17458f;font-size:.72rem;font-weight:900;letter-spacing:.14em;margin:0}.workspaceHead h1{margin:.2rem 0;font-size:2rem}.roleBadge{display:inline-block;border-radius:999px;padding:.28rem .6rem;font-size:.72rem;font-weight:900;background:#e7edf8;color:#17458f}.roleBadge.president{background:#fff0c9;color:#7a5200}.authBox{display:flex;gap:.5rem}.authBox input,.metricCard input,.modal input,.modal select,.modal textarea,.taskComposer input,.taskComposer select,.toolbar input,.toolbar select,.twoCol select,.twoCol textarea{border:1px solid #d7deea;background:white;border-radius:9px;padding:.72rem}.button,.workspace button{border:0;border-radius:9px;background:#17458f;color:#fff;padding:.7rem .95rem;font-weight:800;cursor:pointer;text-decoration:none;font-size:.82rem}.notice{background:#fff4d8;border:1px solid #f7a81b;color:#72500a;padding:.8rem 1rem;border-radius:10px;cursor:pointer}.notice,.statGrid{margin-bottom:1rem}.statGrid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem}.statGrid.three{grid-template-columns:repeat(3,1fr)}.metricCard,.panel,.statGrid article{background:#fff;border:1px solid #e1e6ef;border-radius:16px;box-shadow:0 8px 30px #163c7710}.statGrid article{padding:1.2rem}.statGrid span{display:block;color:#68748a;font-size:.8rem}.statGrid b{font-size:2rem;color:#17458f}.panel{padding:1.25rem;margin-bottom:1rem}.panelTitle,.taskComposer,.toolbar{display:flex;justify-content:space-between;gap:.7rem;align-items:center}.compactRow{display:grid;grid-template-columns:115px 1fr 140px;grid-gap:1rem;gap:1rem;padding:.9rem 0;border-top:1px solid #edf0f5}.calendarRow span,.compactRow span{color:#68748a}.toolbar{justify-content:flex-start;margin-bottom:1rem;flex-wrap:wrap}.toolbar input{min-width:280px}.dataTable{display:flex;flex-direction:column}.calendarRow{display:grid;grid-template-columns:100px 1fr 75px 60px 60px;grid-gap:.8rem;gap:.8rem;align-items:center;padding:.85rem;border-top:1px solid #edf0f5}.calendarRow time{font-weight:900;color:#17458f}.calendarRow div span,.calendarRow time small{display:block;font-size:.76rem;margin-top:.25rem}.status{font-size:.72rem;border-radius:999px;padding:.35rem;text-align:center}.status.confirmed{background:#e5f6ee;color:#16734a}.status.tentative{background:#fff3d7;color:#855c08}.workspace button.danger{background:#fff0f0;color:#b42318}.taskComposer{justify-content:flex-start;flex-wrap:wrap;margin-bottom:1.2rem}.kanban{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1rem;gap:1rem}.kanban>div{background:#f5f7fb;border-radius:12px;padding:1rem;min-height:260px}.taskCard{background:white;border-left:4px solid #8aa1c4;border-radius:9px;padding:.85rem;margin:.7rem 0;box-shadow:0 4px 14px #163c770d}.taskCard.high{border-left-color:#d92d20}.taskCard.medium{border-left-color:#f7a81b}.taskCard b,.taskCard span{display:block}.taskCard span{font-size:.75rem;color:#68748a;margin:.35rem 0}.taskCard select{border:0;background:#edf2fa;padding:.4rem;border-radius:6px}.metricGrid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem}.metricCard{padding:1.2rem}.metricCard>span{color:#17458f;font-weight:900}.metricCard>b{font-size:1.8rem}.metricCard label{display:flex;justify-content:space-between;align-items:center;margin:.6rem 0;font-size:.8rem}.metricCard input{width:90px}.progress{height:8px;background:#edf0f5;border-radius:99px;overflow:hidden;margin:1rem 0}.progress i{display:block;height:100%;background:linear-gradient(90deg,#17458f,#f7a81b)}.twoCol{display:grid;grid-template-columns:1fr 1.5fr;grid-gap:1.2rem;gap:1.2rem}.twoCol textarea{width:100%;min-height:230px;resize:vertical}.aiAnswer{background:#f5f7fb;border-radius:12px;padding:1.2rem;white-space:pre-wrap;line-height:1.7}.modalBackdrop{position:fixed;inset:0;background:#0c1c38aa;display:grid;place-items:center;z-index:20;padding:1rem}.modal{background:white;border-radius:18px;padding:1.25rem;width:min(720px,100%);max-height:94vh;overflow:auto}.modal label{display:block;font-size:.78rem;font-weight:800;margin:.7rem 0}.modal input,.modal select,.modal textarea{width:100%;display:block;margin-top:.3rem}.modal textarea{min-height:90px}.formGrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.8rem;gap:.8rem}.attachmentBox{border:1px solid #dce3ef;background:#f8faff;border-radius:12px;padding:1rem;margin:1rem 0}.attachmentBox h3,.attachmentBox p{margin:0}.attachmentBox .panelTitle p{font-size:.72rem;color:#68748a;margin-top:.2rem}.uploadButton{background:#17458f;color:#fff;border-radius:9px;padding:.65rem .85rem;cursor:pointer;margin:0!important}.uploadButton input{display:none}.attachmentRow{display:grid;grid-template-columns:1fr auto auto;align-items:center;grid-gap:.6rem;gap:.6rem;border-top:1px solid #e1e6ef;padding:.75rem 0}.attachmentRow b,.attachmentRow span{display:block}.attachmentRow span{font-size:.72rem;color:#68748a;margin-top:.2rem}.attachmentRow a{color:#17458f;font-weight:800;text-decoration:none;font-size:.82rem}.attachmentNotice{color:#17458f!important;margin:.65rem 0!important}.emptyAttachments,.saveFirstHint{color:#68748a;font-size:.82rem}@media(max-width:900px){.officeShell{display:block}.sideNav{height:auto;position:static;display:flex;flex-direction:row;overflow:auto;padding:.8rem}.officeBrand,.sideNav>a{display:none}.sideNav button{white-space:nowrap}.workspace{padding:1rem}.workspaceHead{align-items:flex-start;flex-direction:column}.authBox{width:100%}.authBox input{min-width:0;flex:1 1}.metricGrid,.statGrid{grid-template-columns:1fr 1fr}.kanban{grid-template-columns:1fr}.calendarRow{grid-template-columns:80px 1fr 70px}.calendarRow button{grid-row:2}.twoCol{grid-template-columns:1fr}}@media(max-width:560px){.calendarRow,.metricGrid,.statGrid,.statGrid.three{grid-template-columns:1fr}.toolbar input{min-width:100%}.formGrid{grid-template-columns:1fr}.adminLink{display:none}}.adminBrandLogo,.brandLogo,.footerLogo{display:block;flex:0 0 auto;background-image:url(/taipei-jixian-logo.png);background-repeat:no-repeat;background-position:50%;background-size:contain}.brandLogo{width:210px;height:100px}.siteName{max-width:220px;font-size:.78rem;line-height:1.35;letter-spacing:.08em}.officeBrand small,.siteName small{display:block;margin-top:.35rem;font-size:.72em;line-height:1.35;letter-spacing:.12em}.footerLogo{width:140px;height:68px}.officeBrand{flex-direction:column;align-items:flex-start;gap:.7rem;padding:.2rem 0 1.3rem}.adminBrandLogo{width:202px;height:96px}.officeBrand strong{color:#f7c75e;font-size:.66rem;line-height:1.4;letter-spacing:.08em}@media (max-width:600px){.hero nav{align-items:center;flex-wrap:wrap}.brandLogo{width:150px;height:72px}.siteName{max-width:145px;font-size:.62rem}.term{display:none}}