:root{--paper:#ece7d7;--white:#fff;--ink:#07101f;--muted:#826f55;--gold:#bd8c32;--red:#ad1f23;--line:#d8cfbc;--navy:#080e1a;--blue:#386ecb}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans KR","Malgun Gothic",sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.portal-nav{position:sticky;top:0;z-index:20;background:rgba(236,231,215,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.portal-nav-inner{width:min(1100px,calc(100% - 36px));height:72px;margin:auto;display:flex;align-items:center;justify-content:space-between}.portal-brand{font-weight:950;letter-spacing:.13em}.portal-brand i{display:inline-block;width:11px;height:11px;background:var(--red);transform:rotate(45deg);margin-right:11px}.portal-links{display:flex;gap:22px;font-size:.82rem;font-weight:800}.portal-links a:hover{color:var(--red)}.page{width:min(1100px,calc(100% - 40px));margin:auto;padding:72px 0 100px}.eyebrow{color:var(--gold);font-size:.72rem;font-weight:900;letter-spacing:.28em;text-transform:uppercase}.page h1{font-family:Georgia,"Noto Serif KR",serif;font-size:clamp(2.2rem,5vw,4rem);margin:15px 0 16px;letter-spacing:-.045em}.lead{color:var(--muted);max-width:720px;line-height:1.8;margin:0 0 42px}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:#fff}.service{min-height:180px;padding:30px;display:grid;place-items:center;text-align:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:.28s}.service:nth-child(3n){border-right:0}.service:nth-child(n+4){border-bottom:0}.service:hover{background:var(--navy);color:#fff;transform:scale(1.025);box-shadow:0 20px 44px rgba(7,16,31,.16);z-index:2}.service-icon{font-size:2rem}.service strong{display:block;margin-top:15px;font-size:.95rem}.back-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:34px}.tab,.action{display:inline-flex;min-height:44px;align-items:center;justify-content:center;padding:0 20px;border:1px solid var(--ink);background:transparent;color:var(--ink);font-weight:800;cursor:pointer;transition:.25s}.tab.active,.action{background:var(--navy);color:#fff}.tab:hover,.action:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(7,16,31,.15)}.panel{background:#fff;border:1px solid var(--line);padding:30px}.months{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0}.month-btn{width:56px;height:42px;border:1px solid var(--ink);background:#fff;font-weight:900;cursor:pointer}.month-btn.active{background:var(--navy);color:#fff}.calendar-head{display:flex;align-items:center;gap:12px;margin:24px 0 12px}.calendar-head h2{margin:0;font-family:Georgia,serif}.badge{background:#e9e1cf;color:var(--gold);padding:7px 10px;font-size:.72rem;font-weight:900}.calendar{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--line);border-top:1px solid var(--line)}.day-name,.day{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.day-name{background:var(--navy);color:#fff;text-align:center;padding:12px;font-weight:800}.day{min-height:96px;padding:10px;font-size:.82rem;background:#fff}.day.empty{background:#e8e2d2}.event{display:block;margin-top:8px;background:var(--red);color:#fff;padding:5px 7px;font-size:.68rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.form-card{background:#fff;border:1px solid var(--line);padding:28px}.field{margin-bottom:20px}.field label{display:block;font-size:.78rem;margin-bottom:9px;color:#3b4c69}.field input,.field select{width:100%;min-height:46px;border:1px solid #bdb5a6;background:#f7f4ec;padding:0 13px}.notice{min-height:48px;margin-top:18px;color:var(--red);font-weight:800}.id-layout{display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:center}.id-form{background:var(--navy);color:#fff;padding:28px}.id-form input,.id-form select{background:#101827;color:#fff;border-color:#3d4659}.id-card{max-width:380px;aspect-ratio:1.42/1;background:#20283b;color:#fff;border-radius:16px;padding:28px;box-shadow:0 24px 45px rgba(7,16,31,.22);position:relative}.id-card:before{content:"";position:absolute;top:14px;left:50%;width:30px;height:13px;border:2px solid #838da2;border-bottom:0;border-radius:18px 18px 0 0}.id-card small{color:#aab4c8;letter-spacing:.2em}.id-card h2{font-family:Georgia,serif;margin:30px 0 8px}.id-meta{color:#5e93e8}.id-row{border-top:1px dashed #596175;margin-top:24px;padding-top:16px;display:flex;justify-content:space-between}.rank{width:52px;height:52px;border-radius:50%;background:#d8aa4b;color:#111;display:grid;place-items:center;font-size:1.35rem;font-weight:950}.barcode{height:22px;margin-top:16px;background:repeating-linear-gradient(90deg,#8790a2 0 2px,transparent 2px 6px)}.map-frame{border:1px solid var(--line);background:#fff;padding:12px;overflow:hidden}.map-crop{aspect-ratio:3/2;overflow:hidden;background:#111}.map-crop img{width:110%;max-width:none;margin-left:-5%;display:block}.map-crop.campus img{margin-top:-15.2%}.map-crop.city img{margin-top:-15.8%}.map-caption{text-align:center;color:var(--muted);margin:16px 0 0}.place-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 50px;border-top:1px solid var(--line);padding-top:22px;margin-top:22px;font-size:.84rem}.place-grid strong{margin-right:6px}.archive-list{border-top:1px solid var(--line)}details{border-bottom:1px solid var(--line)}summary{list-style:none;cursor:pointer}.archive-group>summary{font-family:Georgia,"Noto Serif KR",serif;font-size:1.8rem;font-weight:900;padding:24px 8px;display:flex;gap:12px;align-items:center}.archive-group>summary:before,.division>summary:before{content:"▸";color:var(--red);font-size:.65em;transition:.2s}.archive-group[open]>summary:before,.division[open]>summary:before{transform:rotate(90deg)}.archive-count{margin-left:auto;color:var(--muted);font:700 .68rem/1 sans-serif;letter-spacing:.12em}.archive-body{padding:0 8px 32px 30px}.division{border-left:1px solid var(--line)}.division>summary{display:flex;gap:12px;align-items:center;padding:17px;font-weight:900}.character-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:4px 18px 28px}.character-card{border:0;padding:0;aspect-ratio:3/2;overflow:hidden;background:#111;cursor:pointer;position:relative;transition:.25s}.character-card:hover{transform:scale(1.025);box-shadow:0 16px 34px rgba(0,0,0,.2)}.character-card img{width:100%;height:100%;object-fit:cover}.character-card.spoiler{display:grid;place-items:center;color:#fff;font-size:2.4rem;background:repeating-linear-gradient(135deg,#151927,#151927 12px,#0d1220 12px,#0d1220 24px)}.preparing{min-height:150px;margin:8px 18px 28px;border:1px dashed #a99f8d;display:grid;place-items:center;text-align:center;color:var(--muted);letter-spacing:.18em}.loader{width:34px;height:34px;border:2px solid #cfc5b2;border-top-color:var(--gold);border-radius:50%;margin:0 auto 14px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{width:min(980px,calc(100% - 30px));padding:0;border:1px solid var(--line);background:#fff}dialog::backdrop{background:rgba(7,16,31,.78)}.modal-grid{display:grid;grid-template-columns:1.1fr .9fr}.modal-grid img{width:100%;height:100%;max-height:78vh;object-fit:contain;background:#0b101b}.modal-copy{padding:38px}.modal-copy h2{font-family:Georgia,serif;font-size:2.2rem;margin:8px 0}.modal-copy ul{padding-left:18px;line-height:1.7}.modal-close{position:absolute;right:12px;top:12px;width:38px;height:38px;background:var(--navy);color:#fff;border:0;cursor:pointer}
@media(max-width:800px){.portal-links{display:none}.service-grid,.form-grid,.id-layout{grid-template-columns:1fr}.service{border-right:0!important;border-bottom:1px solid var(--line)!important}.character-grid{grid-template-columns:1fr 1fr}.place-grid{grid-template-columns:1fr}.map-crop{aspect-ratio:1/1}.map-crop img{height:100%;width:auto;margin:0;transform:translateX(-15%)}}@media(max-width:520px){.page{width:min(100% - 28px,1100px);padding-top:52px}.character-grid{grid-template-columns:1fr}.calendar{font-size:.7rem}.day{min-height:66px;padding:6px}.day-name{padding:8px 2px}.archive-count{display:none}.modal-grid{grid-template-columns:1fr}.modal-copy{padding:24px}}
