@font-face{font-family:Ebony;src:url(/fonts/Ebony-UltraBoldItalic.ttf) format("truetype");font-weight:800;font-style:italic;font-display:swap}@font-face{font-family:Ebony;src:url(/fonts/Ebony-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic;font-display:swap}:root{--surface-050:#f9f9f7;--surface-100:#fff;--surface-200:#efeee9;--ink:#031e44;--ink-muted:#5c6b82;--brand-900:#031e44;--brand-950:#021226;--on-brand:#f9f9f7;--on-brand-muted:#8ca0be;--border:#e3e1db;--border-on-brand:#223a5e;--red-500:#f7263a;--red-700:#a01a2d;--red-tint:#fdecee;--blue-600:#084896;--radius-sm:8px;--radius-md:14px;--radius-lg:24px;--shadow-sm:0 1px 2px rgba(3,30,68,.08);--shadow-lg:0 20px 48px rgba(2,18,38,.24);--display:"Ebony","Arial Narrow",sans-serif;--sans:"Inter",-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}body,html{margin:0;background:var(--surface-050);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:24px}a{color:var(--blue-600)}a:hover{color:var(--ink)}button,input,select,textarea{font-family:inherit}:focus-visible{outline:2px solid var(--blue-600);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.display{font-family:var(--display);font-style:italic;font-weight:800}.eyebrow{font-size:13px;line-height:16px;font-weight:700;letter-spacing:.08em;color:var(--red-700)}.muted{color:var(--ink-muted)}.topbar{background:var(--surface-100);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.topbar-in{max-width:1120px;margin:0 auto;padding:12px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.topbar img{height:30px;width:auto;display:block}.nav{display:flex;gap:4px;flex-grow:1;justify-content:center;flex-wrap:wrap}.nav a{padding:8px 16px;border-radius:999px;color:var(--ink);text-decoration:none;font-size:14px;font-weight:600}.nav a.on{background:var(--ink);color:var(--on-brand)}.me{gap:12px}.avatar,.me{display:flex;align-items:center}.avatar{width:44px;height:44px;flex-shrink:0;border-radius:999px;background:var(--surface-200);color:var(--ink);font-size:14px;font-weight:700;justify-content:center}.avatar.staff{background:var(--red-500);color:var(--on-brand)}.avatar.sm{width:36px;height:36px;font-size:13px}.page{max-width:1120px;margin:0 auto;padding:32px 16px 64px;display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start}.main-col{flex:999 1 560px;flex-direction:column}.main-col,.side-col{min-width:0;display:flex;gap:20px}.side-col{flex:1 1 300px;flex-direction:column}.hero h1{margin:4px 0;font-size:38px;line-height:42px}.hero p{margin:0;color:var(--ink-muted)}.card{background:var(--surface-100);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px;box-shadow:var(--shadow-sm)}.card h2{margin:0 0 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 20px;border-radius:999px;border:none;font-size:15px;font-weight:700;cursor:pointer;text-decoration:none}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--red-500);color:var(--on-brand)}.btn-primary:hover:not(:disabled){background:var(--red-700);color:var(--on-brand)}.btn-outline{background:var(--surface-100);color:var(--ink);border:1px solid var(--ink)}.btn-ghost{background:transparent;color:var(--ink-muted);min-height:40px;padding:0 12px;font-size:14px;font-weight:600}.btn-ghost:hover{background:var(--surface-200)}.btn-ghost.on{background:var(--red-tint);color:var(--red-700)}.chip{min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface-100);color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}.chip.on{background:var(--ink);color:var(--on-brand);border-color:var(--ink)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:14px;font-weight:600}.input,.select,.textarea{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-size:15px;line-height:22px;color:var(--ink);background:var(--surface-050);width:100%}.input{height:48px;padding:0 14px}.select{height:40px;padding:0 12px;border-radius:999px;background:var(--surface-100);font-weight:600;font-size:14px;width:auto}.textarea{resize:vertical;min-height:84px}.search{height:44px;border-radius:999px;padding:0 18px;background:var(--surface-100)}.alert{padding:12px 14px;border-radius:var(--radius-sm);font-size:14px;line-height:20px}.alert.err{background:var(--red-tint);color:var(--red-700)}.alert.info{background:var(--surface-200);color:var(--ink)}.alert.ok{background:#e6f2f3;color:var(--ink)}.post{display:flex;flex-direction:column;gap:14px}.post-head{display:flex;align-items:center;gap:12px}.post-who{display:flex;flex-direction:column;flex-grow:1;min-width:0}.post-who .name{font-weight:700;font-size:15px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.post-who .meta{font-size:13px;line-height:18px;color:var(--ink-muted)}.badge{font-size:12px;line-height:16px;font-weight:700;padding:3px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:4px}.badge.staff{background:var(--ink);color:var(--on-brand)}.badge.pin{background:var(--red-tint);color:var(--red-700)}.badge.win{background:var(--red-500);color:var(--on-brand)}.post-body{margin:0;font-size:15px;line-height:23px;white-space:pre-line;overflow-wrap:anywhere}.post-img{width:100%;max-height:520px;object-fit:contain;border-radius:var(--radius-sm);background:var(--surface-200)}.post-actions{display:flex;align-items:center;gap:4px;border-top:1px solid var(--surface-200);padding-top:10px;flex-wrap:wrap}.poll{border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--surface-050)}.poll-opt{position:relative;overflow:hidden;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;color:var(--ink);cursor:pointer;background:var(--surface-100);border:1px solid var(--border);text-align:left}.poll-opt.mine{border-color:var(--red-500)}.poll-bar{position:absolute;inset:0 auto 0 0;background:var(--surface-200);transition:width .3s}.poll-opt.mine .poll-bar{background:var(--red-tint)}.poll-opt span{position:relative}.comments{display:flex;flex-direction:column;gap:12px;padding-top:4px}.comment{display:flex;gap:10px}.comment-bubble{background:var(--surface-050);border-radius:var(--radius-md);padding:8px 12px;flex-grow:1;min-width:0;font-size:14px;line-height:20px}.comment-bubble b{font-size:13px}.rules ol{margin:0;padding-left:20px;gap:8px;font-size:14px;line-height:20px}.rules ol,.teachers{display:flex;flex-direction:column}.teachers{background:linear-gradient(135deg,var(--red-500) 0,var(--red-700) 30%,var(--brand-950) 100%);color:var(--on-brand);border-radius:var(--radius-lg);padding:24px;gap:16px;box-shadow:var(--shadow-lg)}.teachers h2{margin:0;font-size:26px;line-height:30px}.teacher{display:flex;align-items:center;gap:12px}.teacher .avatar{background:var(--on-brand)}.teacher span{display:block}.auth{min-height:100vh;display:flex;flex-wrap:wrap}.auth-brand{flex:1 1 420px;min-height:300px;padding:48px 32px;background:linear-gradient(135deg,#f7263a,#a01a2d 28%,#031e44 70%,#021226);color:var(--on-brand);display:flex;flex-direction:column;justify-content:space-between;gap:32px}.auth-brand img{height:34px;width:auto;align-self:flex-start}.auth-brand h1{margin:0;font-size:clamp(38px,6vw,60px);line-height:1.04}.auth-brand p{margin:12px 0 0;font-size:18px;line-height:28px;max-width:460px}.auth-form{flex:1 1 420px;padding:48px 20px;display:flex;align-items:center;justify-content:center}.auth-box{width:100%;max-width:420px;display:flex;flex-direction:column;gap:20px}.tabs2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:4px;gap:4px;padding:4px;border-radius:999px;background:var(--surface-200)}.tabs2 button{height:44px;border-radius:999px;border:none;background:transparent;color:var(--ink);font-size:15px;font-weight:700;cursor:pointer}.tabs2 button[aria-selected=true]{background:var(--ink)}.auth-box form{display:flex;flex-direction:column;gap:16px}.auth-box h2{margin:0;font-size:38px;line-height:42px}.mod-top{background:var(--brand-900);color:var(--on-brand)}.mod-top .topbar-in a{color:var(--on-brand);font-weight:600;font-size:14px}.pill-dark{font-size:13px;font-weight:700;letter-spacing:.08em;padding:4px 10px;border-radius:999px;border:1px solid var(--border-on-brand);color:var(--on-brand-muted)}.mod-page{max-width:1160px;margin:0 auto;padding:32px 16px 64px;display:flex;flex-direction:column;gap:20px}.mod-item{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.mod-item .txt{flex:999 1 420px;min-width:0;display:flex;flex-direction:column;gap:6px}.mod-item .acts{flex:1 1 260px;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.mod-item .acts .btn{min-height:40px;font-size:14px;padding:0 14px}.count{min-width:22px;height:22px;padding:0 6px;border-radius:999px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-200);color:var(--ink)}.chip.on .count{background:var(--red-500);color:var(--on-brand)}.rule-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--surface-200)}.rule-row label{flex:999 1 240px;display:flex;flex-direction:column}.empty{padding:32px;text-align:center;color:var(--ink-muted)}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}:root{--ease-out:cubic-bezier(.22,.8,.24,1);--ease-spring:cubic-bezier(.34,1.4,.64,1);--t-fast:160ms;--t-med:260ms;--t-slow:380ms}.btn,.chip,.poll-opt,.post-actions .btn,.select,.tabs2 button{transition:background-color var(--t-med) var(--ease-out),color var(--t-med) var(--ease-out),border-color var(--t-med) var(--ease-out),box-shadow var(--t-med) var(--ease-out),transform var(--t-fast) var(--ease-out),opacity var(--t-med) var(--ease-out)}.btn:active:not(:disabled),.chip:active,.poll-opt:active{transform:scale(.97)}.btn-primary:hover:not(:disabled){box-shadow:0 6px 18px rgba(247,38,58,.28);transform:translateY(-1px)}.btn-outline:hover:not(:disabled),.chip:hover:not(.on){background:var(--surface-200)}.input,.select,.textarea{transition:border-color var(--t-med) var(--ease-out),box-shadow var(--t-med) var(--ease-out),background-color var(--t-med) var(--ease-out)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--blue-600);box-shadow:0 0 0 3px rgba(8,72,150,.14);background:var(--surface-100)}a{transition:color var(--t-fast) var(--ease-out)}.card{transition:box-shadow var(--t-med) var(--ease-out),transform var(--t-med) var(--ease-out)}.post:hover{box-shadow:0 8px 24px rgba(3,30,68,.08)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.28)}to{transform:scale(1)}}.enter{animation:fadeUp var(--t-slow) var(--ease-out) both}.post.enter{animation-delay:calc(var(--i, 0) * 45ms)}.alert{animation:fadeUp var(--t-med) var(--ease-out) both}.fade{animation:fadeIn var(--t-med) var(--ease-out) both}.collapse{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;margin-top:-14px;transition:grid-template-rows var(--t-slow) var(--ease-out),opacity var(--t-med) var(--ease-out),margin var(--t-slow) var(--ease-out),visibility 0s linear var(--t-slow)}.collapse>.collapse-in{overflow:hidden;min-height:0}.collapse[data-open=true]{grid-template-rows:1fr;opacity:1;margin-top:0;visibility:visible;transition-delay:0s}.popover{position:absolute;top:48px;left:0;z-index:5;transform-origin:top left;opacity:0;transform:translateY(-4px) scale(.96);visibility:hidden;pointer-events:none;transition:opacity var(--t-fast) var(--ease-out),transform var(--t-med) var(--ease-spring),visibility 0s linear var(--t-med)}.popover[data-open=true]{opacity:1;transform:none;visibility:visible;pointer-events:auto;transition-delay:0s}.btn-ghost.pop svg{animation:pop .42s var(--ease-spring)}.tabs2{position:relative;isolation:isolate}.tabs2:before{content:"";position:absolute;z-index:-1;top:4px;bottom:4px;left:4px;width:calc(50% - 6px);border-radius:999px;background:var(--ink);box-shadow:var(--shadow-sm);transition:transform var(--t-slow) var(--ease-out)}.tabs2[data-active=first]:before{transform:translateX(calc(100% + 4px))}.tabs2 button[aria-selected=true]{background:transparent;color:var(--on-brand)}.poll-bar{transition:width .6s var(--ease-out),background-color var(--t-med) var(--ease-out)}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important;scroll-behavior:auto!important}}.emoji-btn{width:44px;height:44px;font-size:22px;border:none;background:transparent;cursor:pointer;border-radius:8px;transition:background-color var(--t-fast) var(--ease-out),transform var(--t-fast) var(--ease-spring)}.emoji-btn:hover{background:var(--surface-200);transform:scale(1.15)}.emoji-btn:active{transform:scale(.95)}html{-webkit-text-size-adjust:100%}.chip,.poll-opt,a,button,label{-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (hover:none){.btn-primary:hover:not(:disabled){box-shadow:none;transform:none}.post:hover{box-shadow:var(--shadow-sm)}.emoji-btn:hover{transform:none;background:transparent}.btn:active:not(:disabled),.chip:active,.emoji-btn:active,.poll-opt:active{transform:scale(.95);background-color:var(--surface-200)}.btn-primary:active:not(:disabled){background:var(--red-700)}}@media (max-width:720px){.input,.search,.select,.textarea{font-size:16px}.auth{min-height:100dvh;flex-direction:column;flex-wrap:nowrap}.auth-brand{flex:0 0 auto;min-height:0;padding:20px 20px 22px;gap:14px}.auth-brand img{height:26px}.auth-brand h1{font-size:30px;line-height:1.08}.auth-brand p{font-size:15px;line-height:22px;margin-top:6px}.auth-brand .auth-note{display:none}.auth-form{flex:1 0 auto;align-items:flex-start;padding:22px 16px 32px}.auth-box{gap:16px}.auth-box h2{font-size:30px;line-height:34px}.auth-box form{gap:14px}.auth-box .input{height:50px}.topbar-in{padding:10px 16px;gap:8px;flex-wrap:nowrap}.topbar img{height:24px}.nav{min-width:0;flex:1 1 auto;justify-content:flex-start;gap:2px;overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap}.nav::-webkit-scrollbar{display:none}.nav a{padding:8px 12px;white-space:nowrap}.me{gap:4px}.me .btn-ghost{padding:0 8px}.page{padding:20px 12px 48px;gap:20px}.main-col{gap:16px}.hero h1{font-size:28px;line-height:32px}.hero p{font-size:15px}.card{padding:16px}.post{gap:12px}.post-head{gap:10px;flex-wrap:wrap}.avatar{width:40px;height:40px}.post-body{font-size:15px;line-height:22px}.post-img{max-height:420px}.post-actions{gap:0}.post-actions .btn-ghost{padding:0 10px}.chip{min-height:40px;padding:0 14px}.chips-scroll{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px 2px;scroll-snap-type:x proximity}.chips-scroll::-webkit-scrollbar{display:none}.chips-scroll .chip{flex:0 0 auto;scroll-snap-align:start}.composer-tools{gap:6px!important}.composer-tools .chip{padding:0 12px}.composer-tools .count-chars{flex-basis:100%;order:10;text-align:left!important}.composer-tools .publish{order:11;flex:1 1 100%;min-height:48px}.popover{left:0;right:0;width:auto;max-width:320px}.comment-bubble{font-size:14px}.side-col{gap:16px}.teachers{padding:20px}.mod-page{padding:20px 12px 48px}.mod-item .acts{justify-content:flex-start}}.avatar-img{object-fit:cover;padding:0;background:var(--surface-200)}.avatar.staff.avatar-img{box-shadow:0 0 0 2px var(--red-500)}.avatar.lg{width:112px;height:112px;font-size:36px}a.avatar-link{border-radius:999px;display:inline-flex;transition:transform var(--t-fast) var(--ease-out),box-shadow var(--t-med) var(--ease-out)}a.avatar-link:hover{box-shadow:0 0 0 3px rgba(8,72,150,.18)}a.avatar-link:active{transform:scale(.94)}.badge.notice{background:var(--ink);color:var(--on-brand)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.pulse{animation:pulse 1.1s ease-in-out infinite}.auth-brand h1 .nowrap{display:block;white-space:nowrap}.auth-brand h1{font-size:clamp(30px,3.6vw,50px)}@media (max-width:720px){.auth-brand h1{font-size:clamp(20px,7.4vw,34px)}}.spinner{width:18px;height:18px;border-radius:999px;border:2.5px solid hsla(60,14%,97%,.35);border-top:2.5px solid var(--on-brand);animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(1turn)}}.loading-screen{position:fixed;inset:0;z-index:100;flex-direction:column;gap:22px;background:var(--surface-050);animation:fadeIn var(--t-med) var(--ease-out) both;padding:24px;text-align:center}.loading-mark,.loading-screen{display:flex;align-items:center;justify-content:center}.loading-mark{position:relative;width:112px;height:112px}.loading-symbol{width:64px;height:64px;animation:breathe 1.6s var(--ease-out) infinite}.loading-ring{position:absolute;inset:0;border-radius:999px;border-left:3px solid var(--surface-200);border-bottom:3px solid var(--surface-200);border-right-color:var(--surface-200);border-top-color:var(--surface-200);border-top:3px solid var(--red-500);border-right:3px solid var(--ink);animation:spin 1.1s cubic-bezier(.55,.15,.45,.85) infinite}.loading-text{margin:0;font-size:15px;font-weight:600;color:var(--ink);display:inline-flex;align-items:baseline;gap:2px}.loading-dots{display:inline-flex;gap:3px;margin-left:2px}.loading-dots i{width:4px;height:4px;border-radius:999px;background:var(--ink);animation:dot 1.2s ease-in-out infinite}.loading-dots i:nth-child(2){animation-delay:.15s}.loading-dots i:nth-child(3){animation-delay:.3s}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(.88)}}@keyframes dot{0%,80%,to{opacity:.2;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.loading-ring,.spinner{animation-duration:1.4s!important;animation-iteration-count:infinite!important}}.btn[aria-busy=true]{opacity:1;cursor:progress}