.login-page{background:#fff;place-items:center;min-height:100vh;padding:2rem;display:grid}.login-card{border:1px solid var(--line);border-radius:var(--radius-lg);width:min(100%,420px);box-shadow:var(--shadow-md);background:#fff;padding:2.4rem 2.2rem}.login-logo{border-radius:var(--radius-sm);background:#111;align-items:center;gap:.5rem;padding:.4rem .9rem;display:inline-flex}.login-logo-mark{color:#fff;letter-spacing:.02em;font-weight:900}.login-logo-sub{border-radius:var(--radius-sm);background:var(--student-council);color:#fff;padding:.1rem .5rem;font-size:.8rem;font-weight:800}.login-card h1{letter-spacing:-.04em;margin:1.2rem 0 .5rem;font-size:1.8rem}.login-subtitle{color:#667085;margin:0;line-height:1.6}.login-form{gap:1rem;margin-top:1.4rem;display:grid}.login-form label{color:#344054;gap:.45rem;font-weight:700;display:grid}.login-form input{border-radius:var(--radius-md);height:3.2rem;transition:border-color .2s var(--ease), box-shadow .2s var(--ease);background:#fff;border:1px solid #d0d5dd;padding:0 1rem}.login-form input:focus{border-color:var(--student-council);outline:none;box-shadow:0 0 0 3px #eff4ff}.form-error{color:#c0392b;margin:0;font-weight:700}.login-button{border-radius:var(--radius-md);color:#fff;background:#111;border:0;height:3.3rem;font-weight:800;transition:transform .18s,filter .18s}.login-button:hover{filter:brightness(1.15);transform:translateY(-2px)}.login-back{border-radius:var(--radius-md);color:#475467;background:#fff;border:1px solid #d0d5dd;width:100%;height:3rem;margin-top:1rem;font-weight:700;transition:background .2s}.login-back:hover{background:#f6f7f9}:root{--student-council:#1e3a8a;--committee:#7f1d1d;--press:#d8d2c4;--press-dark:#6b7280;--ambassador:#fbcfe8;--gmb:#111;--court:#166534;--ink:#14151a;--ink-soft:#6b7280;--line:#e8e8ec;--surface:#fff;--bg:#fff;--dept-color:var(--student-council);--dept-ink:#172554;--dept-soft:#eff4ff;--dept-text:#fff;--radius-lg:.75rem;--radius-md:.5rem;--radius-sm:.35rem;--shadow-sm:0 1px 2px #1118270d;--shadow-md:0 10px 28px #11182714;--ease:cubic-bezier(.22, 1, .36, 1);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}code{color:#3f3f46;background:#f4f4f5;border-radius:.4rem;padding:.15rem .4rem;font-size:.92em}::selection{background:var(--dept-color);color:#fff}.app-shell{background:var(--bg);min-height:100vh;padding:1.5rem}.top-bar{z-index:20;border:1px solid var(--line);border-radius:var(--radius-lg);max-width:1320px;box-shadow:var(--shadow-sm);background:#fff;grid-template-columns:minmax(18rem,22rem) minmax(0,1fr) auto;align-items:center;gap:1rem;margin:0 auto 2rem;padding:.6rem .8rem;display:grid;position:sticky;top:1rem}.brand-pill{border-radius:var(--radius-sm);color:#111;letter-spacing:-.03em;background:0 0;border:0;min-height:3rem;padding:0 1.3rem;font-size:1.2rem;font-weight:800}.brand-pill:hover{opacity:.7}.top-menu-pill{justify-content:flex-start;min-width:0;display:flex}.dept-switcher{flex-wrap:wrap;justify-content:flex-start;gap:.65rem;display:flex}.dept-chip{border-radius:var(--radius-sm);color:#6b7280;transition:background .2s var(--ease), color .2s var(--ease);background:0 0;border:0;padding:.5rem .95rem;font-size:.9rem;font-weight:700}.dept-chip:hover{color:#111}.dept-chip.active{background:var(--chip-bg);color:var(--chip-text)}.user-pill{color:#111;justify-self:end;align-items:center;gap:.6rem;padding-right:.4rem;display:flex}.account-chip{font-size:.95rem;font-weight:800}.user-pill button{border-radius:var(--radius-sm);color:#111;transition:background .2s var(--ease);background:#f1f1f3;border:0;padding:.55rem 1rem;font-size:.88rem;font-weight:700}.user-pill button:hover{background:#e4e4e8}.login-trigger{color:#fff!important;background:#111!important}.main-grid{grid-template-columns:15rem minmax(0,1fr);gap:1.5rem;max-width:1320px;margin:0 auto;display:grid}.sidebar{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);align-self:start;padding:1rem;position:sticky;top:6.5rem}.sidebar-title{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;padding:.4rem .6rem;font-size:.78rem;font-weight:800}.side-nav{gap:.15rem;max-height:calc(100vh - 11rem);display:grid;overflow-y:auto}.side-section-title{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;margin:1rem 0 .3rem;padding:0 .6rem;font-size:.72rem;font-weight:800}.side-item{border-radius:var(--radius-sm);color:#52525b;text-align:left;width:100%;min-height:2.6rem;transition:background .2s var(--ease), color .2s var(--ease);background:0 0;border:0;align-items:center;gap:.6rem;padding:.55rem .7rem;font-size:.94rem;font-weight:600;display:flex}.side-item:hover{color:var(--ink);background:#f1f1f3}.side-item.active{background:var(--dept-soft);color:var(--dept-ink);box-shadow:inset 3px 0 0 var(--dept-color);font-weight:800}.side-icon{text-align:center;width:1.4rem;font-size:1.05rem}.content-panel{min-width:0}.menu-toggle{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);box-shadow:var(--shadow-sm);background:#fff;align-items:center;gap:.4rem;margin-bottom:1rem;padding:.65rem 1.1rem;font-weight:700;display:none}.page-hero{border:1px solid var(--line);border-top:3px solid var(--dept-color);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:1.5rem;padding:1.75rem 2rem;display:flex}.page-hero h1{letter-spacing:-.04em;color:var(--ink);margin:.3rem 0;font-size:clamp(1.6rem,3vw,2.3rem)}.page-hero p{color:var(--ink-soft);margin:0;line-height:1.55}.eyebrow{color:var(--dept-ink);margin:0;font-size:.9rem;font-weight:800}@media (width<=1080px){.main-grid{grid-template-columns:1fr}.menu-toggle{display:inline-flex}.sidebar{margin-bottom:1.25rem;display:none;position:static}.sidebar.open{display:block}.side-nav{max-height:none}}@media (width<=960px){.top-bar{border-radius:var(--radius-lg);grid-template-columns:auto 1fr;gap:.6rem}.top-menu-pill{order:3;grid-column:1/-1;justify-content:flex-start;overflow-x:auto}.dept-switcher{flex-wrap:nowrap}.user-pill{justify-content:flex-end}}@media (width<=720px){.app-shell{padding:.85rem}.page-hero{flex-direction:column;align-items:flex-start;padding:1.25rem}}.card-surface,.page-card,.stat-card,.simple-card,.progress-card,.countdown-card,.notice-item,.meal-row,.timeline-item{border:1px solid var(--line);border-top:3px solid var(--dept-color);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.btn-primary,.link-button,.inline-form button,.stack-form button,.page-card button,.button-row button{border-radius:var(--radius-sm);background:var(--dept-color);color:var(--dept-text);transition:transform .2s var(--ease), filter .2s var(--ease);border:0;padding:.7rem 1.2rem;font-weight:800}.btn-primary:hover,.link-button:hover,.inline-form button:hover,.stack-form button:hover,.page-card button:hover,.button-row button:hover{filter:brightness(.95);transform:translateY(-2px)}.ghost-button{color:#3f3f46!important;background:#f4f4f5!important}.text-link{color:var(--dept-ink);background:0 0;border:0;font-size:.9rem;font-weight:700}.text-link:hover{text-decoration:underline}.badge{border-radius:var(--radius-sm);background:var(--dept-soft);min-height:1.7rem;color:var(--dept-ink);white-space:nowrap;align-items:center;padding:0 .7rem;font-size:.8rem;font-weight:800;display:inline-flex}.badge-alert{color:#b91c1c;background:#fee2e2}.between,.toolbar{justify-content:space-between;align-items:center;gap:1rem;display:flex}.button-row{flex-wrap:wrap;gap:.55rem;display:flex}.top-gap{margin-top:1.1rem}.dashboard{gap:2rem;display:grid}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:.9rem;display:flex}.section-head h2{letter-spacing:-.03em;color:var(--ink);margin:0;font-size:1.25rem}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.stat-card{text-align:left;min-height:8rem;color:var(--ink);transition:transform .25s var(--ease), box-shadow .25s var(--ease);gap:.35rem;padding:1.3rem;display:grid}button.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.stat-card span,.stat-card small{color:var(--ink-soft)}.stat-card span{font-size:.9rem;font-weight:700}.stat-card strong{letter-spacing:-.03em;font-size:1.35rem;line-height:1.3}.bookmark-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.bookmark-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);text-align:left;box-shadow:var(--shadow-sm);transition:transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);align-items:center;gap:.9rem;padding:1.1rem 1.25rem;display:flex}.bookmark-card:hover{box-shadow:var(--shadow-md);border-color:var(--dept-color);transform:translateY(-4px)}.bookmark-icon{border-radius:var(--radius-sm);border:1px solid var(--line);background:#fff;place-items:center;width:2.8rem;height:2.8rem;font-size:1.5rem;display:grid}.bookmark-text{gap:.15rem;display:grid}.bookmark-text strong{color:#111;font-size:1rem}.bookmark-text small{color:#4b5563}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.photo-card{gap:.6rem;display:grid}.photo-thumb{border-radius:var(--radius-md);background:linear-gradient(140deg, var(--photo) 0%, #1a1a1a 100%);height:9.5rem;box-shadow:var(--shadow-sm);transition:transform .25s var(--ease);position:relative}.photo-card:hover .photo-thumb{transform:translateY(-4px)}.photo-tag{border-radius:var(--radius-sm);color:#1a1a1a;background:#ffffffe6;padding:.25rem .7rem;font-size:.78rem;font-weight:800;position:absolute;top:.8rem;left:.8rem}.photo-title{color:var(--ink);margin:0;font-size:1rem}.notice-list{gap:.7rem;display:grid}.notice-item{transition:border-color .2s var(--ease), transform .2s var(--ease);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.notice-item:hover{border-color:var(--dept-color);transform:translate(2px)}.notice-main{align-items:center;gap:.7rem;min-width:0;display:flex}.notice-main h3{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1rem;font-weight:700;overflow:hidden}.notice-meta{color:var(--ink-soft);flex-shrink:0;align-items:center;gap:.8rem;font-size:.85rem;display:flex}.notice-meta span{color:var(--dept-ink);font-weight:700}.page-card{padding:1.6rem}.page-card-head{margin-bottom:1.25rem}.page-card h2{letter-spacing:-.03em;color:var(--ink);margin:0;font-size:1.5rem}.page-card-head p{color:var(--ink-soft);margin:.5rem 0 0;line-height:1.6}.department-page .page-card-head h2,.department-page .page-card-head p,.department-page .media-card h3,.department-page .media-card p{color:var(--dept-ink)}.department-page .page-card-head p,.department-page .media-card p{font-weight:700}.list-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem;display:grid}.media-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem;display:grid}.simple-card,.progress-card{transition:transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);gap:.7rem;padding:1.25rem;display:grid}.simple-card:hover,.progress-card:hover{box-shadow:var(--shadow-md);border-color:var(--dept-color);transform:translateY(-3px)}.simple-card h3,.simple-card p,.progress-card h3,.progress-card p{margin:0}.simple-card small{color:var(--ink-soft)}.progress-track{border-radius:var(--radius-sm);background:#f0f0f2;height:.55rem;overflow:hidden}.progress-fill{border-radius:inherit;background:var(--dept-color);height:100%;transition:width .4s var(--ease)}.calendar-title{letter-spacing:-.02em;color:var(--ink);margin-bottom:.8rem;font-size:1.15rem;font-weight:800}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.calendar-weekday{text-align:center;color:var(--ink-soft);padding:.4rem 0;font-size:.85rem;font-weight:800}.calendar-weekday.sun{color:#dc2626}.calendar-weekday.sat{color:#2563eb}.calendar-day{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;flex-direction:column;gap:.2rem;min-height:5.5rem;padding:.4rem;display:flex}.calendar-day.empty{background:0 0;border:0}.calendar-day .day-num{color:var(--ink);font-size:.85rem;font-weight:700}.calendar-day.sun .day-num{color:#dc2626}.calendar-day.sat .day-num{color:#2563eb}.calendar-day.today{background:var(--dept-soft);border-color:var(--dept-color);box-shadow:inset 0 0 0 1px var(--dept-color)}.cal-event{background:var(--dept-soft);color:var(--dept-ink);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:.15rem .35rem;font-size:.72rem;font-weight:700;line-height:1.25;overflow:hidden}.subhead{color:var(--ink);margin:1.6rem 0 .8rem;font-size:1.05rem}.timeline{gap:.8rem;display:grid}.timeline.compact{max-width:720px}.timeline-item{transition:border-color .2s var(--ease);grid-template-columns:11rem minmax(0,1fr);align-items:center;gap:1rem;padding:1.1rem;display:grid}.timeline-item:hover{border-color:var(--dept-color)}.timeline-item h3,.timeline-item p{margin:0}.date-box{border-radius:var(--radius-sm);background:var(--dept-soft);color:var(--dept-ink);gap:.2rem;padding:.8rem;display:grid}.date-box small{color:var(--ink-soft)}.inline-form,.stack-form{border-radius:var(--radius-md);border:1px solid var(--line);background:#fafafa;gap:.75rem;padding:1.15rem;display:grid}.inline-form{grid-template-columns:repeat(5,minmax(0,1fr)) auto}.stack-form{max-width:760px}.inline-form input,.inline-form select,.stack-form input,.stack-form select,.stack-form textarea{border-radius:var(--radius-sm);min-height:2.8rem;transition:border-color .2s var(--ease), box-shadow .2s var(--ease);background:#fff;border:1px solid #dcdce0;padding:0 .9rem}.inline-form input:focus,.inline-form select:focus,.stack-form input:focus,.stack-form select:focus,.stack-form textarea:focus{border-color:var(--dept-color);box-shadow:0 0 0 3px var(--dept-soft);outline:none}.stack-form textarea{resize:vertical;min-height:7rem;padding-top:.85rem}.meal-table{gap:.7rem;display:grid}.meal-row{grid-template-columns:4rem repeat(3,1fr);align-items:center;gap:.75rem;padding:1.1rem;display:grid}.meal-row strong{color:var(--dept-ink)}.survey-card .link-button{justify-self:start}.countdown-card{background:var(--dept-soft);gap:.5rem;padding:1.25rem;display:grid}.countdown-card span,.countdown-card strong,.countdown-card small{margin:0}.countdown-card strong{color:var(--dept-ink);letter-spacing:-.04em;font-size:2rem}.clean-list{color:#52525b;margin:0;padding-left:1.1rem;line-height:1.9}.birthday-card strong{color:var(--dept-ink);font-size:1.5rem}.verse-card{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--dept-ink), #111);color:#fff;padding:1.9rem}.verse-card span{opacity:.85;font-weight:800}.verse-card h2{letter-spacing:-.04em;margin:1rem 0;font-size:clamp(1.5rem,3.5vw,2.3rem);line-height:1.35}.verse-card p{margin:0}.media-card{border:1px solid var(--line);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-sm);text-align:left;color:var(--ink);transition:transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease);background:#fff;padding:1.1rem;display:block}.media-card:hover{box-shadow:var(--shadow-md);border-color:var(--dept-color);transform:translateY(-4px)}.page-card .media-card{color:var(--ink);background:#fff}.page-card .media-card:hover{filter:none}.media-icon{margin-bottom:.5rem;font-size:2rem;line-height:1;display:block}.media-card h3,.media-card p{margin:.3rem 0}.media-card h3{color:#111}.media-card p{color:#4b5563}.empty-state{border:1px dashed var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink-soft);padding:1.25rem}@media (width<=1180px){.summary-grid,.bookmark-grid,.gallery-grid,.media-grid,.inline-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.summary-grid,.bookmark-grid,.gallery-grid,.list-grid,.media-grid,.timeline-item,.meal-row,.inline-form{grid-template-columns:1fr}.notice-item{flex-direction:column;align-items:flex-start;gap:.5rem}.between,.toolbar{flex-direction:column;align-items:flex-start}.calendar-grid{gap:3px}.calendar-day{min-height:3.4rem;padding:.25rem}.calendar-weekday{font-size:.72rem}.cal-event{padding:.1rem .2rem;font-size:.58rem}}
