:root{--bg:#f2f4f6;--card:#fff;--card-hover:#fbfcfe;--text:#191f28;--text-sub:#4e5968;--text-mute:#626b78;--border:#e5e8eb;--accent:#1d4ed8;--tag-bg:#f2f4f6;--tag-text:#4e5968;--chip-bg:#f2f4f6;--shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-hover:0 6px 20px #00000017}@media (prefers-color-scheme:dark){:root{--bg:#16181d;--card:#212429;--card-hover:#272b31;--text:#f2f4f6;--text-sub:#b0b8c1;--text-mute:#8b95a1;--border:#33373d;--accent:#4d7cff;--tag-bg:#2b3038;--tag-text:#b0b8c1;--chip-bg:#2b3038;--shadow:0 1px 3px #0000004d;--shadow-hover:0 6px 20px #00000073}}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Pretendard,Malgun Gothic,system-ui,sans-serif}a{color:inherit;text-decoration:none}.login{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.login-emoji{font-size:46px}.login h1{letter-spacing:-.5px;margin-top:12px;font-size:20px;font-weight:800}.login p.sub{color:var(--text-sub);margin-top:12px;font-size:16px;line-height:1.6}.login .err{color:#b91c1c;background:#fdecec;border-radius:10px;width:100%;max-width:360px;margin-top:20px;padding:10px 14px;font-size:15px;font-weight:600}@media (prefers-color-scheme:dark){.login .err{color:#ffb4b4;background:#3a1e1e}}.login-form{flex-direction:column;gap:12px;width:100%;max-width:360px;margin-top:26px;display:flex}.login-form input{border:1px solid var(--border);background:var(--card);height:54px;color:var(--text);text-align:center;border-radius:14px;padding:0 16px;font-size:15px}.login-form input::placeholder{color:var(--text-mute)}.login-form input:focus{border-color:var(--accent);outline:none}.login .btn{cursor:pointer;background:var(--accent);color:#fff;border:none;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;height:56px;font-size:14px;font-weight:700;transition:filter .15s;display:flex}.login .btn:hover{filter:brightness(1.07)}.login .btn.google{max-width:360px;margin-top:26px}.login .hint{color:var(--text-mute);margin-top:14px;font-size:13px}.wrap{max-width:760px;margin:0 auto;padding:40px 20px 80px}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:8px;display:flex}.top h1{letter-spacing:-.5px;font-size:20px;font-weight:800}.top .who{color:var(--text-mute);text-align:right;font-size:13px;line-height:1.7}.top .who a{color:var(--accent);font-weight:600}.lead{color:var(--text-sub);margin-bottom:28px;font-size:15px}.group{margin-top:28px}.group-title{letter-spacing:.02em;color:var(--text-sub);font-size:13px;font-weight:700}.group-hint{color:var(--text-mute);margin-top:2px;font-size:13px;font-weight:400}.list{border-top:1px solid var(--border);margin-top:10px}.row{border-bottom:1px solid var(--border);padding:14px 4px;transition:background .12s;display:block}.row:hover{background:var(--card-hover)}.row .name{letter-spacing:-.2px;color:var(--text);font-size:16px;font-weight:700;display:block}.row .desc{color:var(--text-sub);margin-top:2px;font-size:13px;line-height:1.5;display:block}.row .tag{vertical-align:1px;background:var(--tag-bg);color:var(--tag-text);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-block}.empty{color:var(--text-mute);margin-top:10px;font-size:13px}.foot{color:var(--text-mute);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:28px;font-size:13px;line-height:1.6;display:flex}.foot .me{align-items:center;gap:10px;display:flex}.notice{background:var(--card);border:1px solid var(--border);max-width:560px;color:var(--text-sub);border-radius:14px;margin-top:24px;padding:18px 20px;font-size:15px;line-height:1.8}.linkbtn{cursor:pointer;color:var(--accent);background:0 0;border:none;margin:-12px 0;padding:12px 4px;font-family:inherit;font-size:13px;font-weight:600}.linkbtn:hover{text-decoration:underline}.hub-in{max-width:1200px;margin:0 auto;padding:0 24px}.hero{background:var(--card);border-bottom:1px solid var(--border)}.hero-in{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding-top:64px;padding-bottom:56px;display:flex}.hero-title{letter-spacing:-.02em;font-size:40px;font-weight:800;line-height:1.15}.hero-sub{color:var(--text-sub);margin-top:10px;font-size:15px}.hero-right{color:var(--text-mute);flex-direction:column;align-items:flex-end;gap:4px;padding-bottom:4px;font-size:13px;display:flex}.hero-date{color:var(--text-sub);font-weight:600}.hub-sec{background:var(--bg);padding:44px 0 48px}.hub-sec-shelf{background:var(--card);border-top:1px solid var(--border)}.hub-sec-title{letter-spacing:.02em;color:var(--text-sub);font-size:13px;font-weight:700}.hub-sec-hint{color:var(--text-mute);margin-top:4px;font-size:13px}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:122px;grid-auto-flow:dense;gap:14px;margin-top:16px;display:grid}.tile{background:var(--card);box-shadow:inset 0 0 0 1px var(--border);border-radius:14px;flex-direction:column;justify-content:center;gap:10px;padding:18px;transition:box-shadow .14s,background .14s;display:flex}.tile:hover{background:var(--card-hover);box-shadow:inset 0 0 0 1px var(--accent)}.tile-wide{flex-direction:row;grid-column:span 2;align-items:center;gap:14px}.tile-xl{grid-area:span 2/span 2;justify-content:center;gap:18px}.tile-icon{background:var(--chip-bg);width:44px;height:44px;color:var(--text-sub);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.tile-icon svg{width:24px;height:24px}.tile:hover .tile-icon{color:var(--accent)}.tile-xl .tile-icon{background:var(--tag-bg);width:72px;height:72px;color:var(--accent);border-radius:18px}.tile-xl .tile-icon svg{width:38px;height:38px}.tile-body{flex:0 auto;min-width:0}.tile-wide .tile-body{flex:auto}.tile-name{letter-spacing:-.3px;color:var(--text);font-size:16px;font-weight:700;display:block}.tile-xl .tile-name{letter-spacing:-.5px;font-size:20px}.tile-desc{color:var(--text-sub);margin-top:4px;font-size:13px;line-height:1.5;display:block}.tile-xl .tile-desc{font-size:15px}.tile-tag{vertical-align:2px;background:var(--tag-bg);color:var(--tag-text);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-block}.tile{position:relative}.tile-go{color:var(--text-mute);transition:color .14s;display:flex;position:absolute;top:16px;right:16px}.tile-go svg{width:20px;height:20px}.tile:hover .tile-go{color:var(--accent)}.shelf{border-top:1px solid var(--border);margin-top:14px}.shelf-row{border-bottom:1px solid var(--border);align-items:center;gap:18px;padding:20px 4px;transition:background .14s;display:flex}.shelf-row:hover{background:var(--bg)}.shelf-no{width:26px;color:var(--text-mute);font-variant-numeric:tabular-nums;flex:none;font-size:13px;font-weight:700}.shelf-body{flex:auto;min-width:0}.shelf-name{letter-spacing:-.3px;font-size:16px;font-weight:700;display:block}.shelf-desc{color:var(--text-sub);margin-top:2px;font-size:13px;line-height:1.5;display:block}.shelf-row{position:relative}.shelf-row .tile-go{color:var(--border);transition:color .14s;position:static}.shelf-row:hover .tile-go{color:var(--accent)}.hub-home .foot{background:var(--card);border-top:1px solid var(--border);margin-top:0;display:block}.foot-in{color:var(--text-mute);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:22px;padding-bottom:26px;font-size:13px;line-height:1.6;display:flex}.foot-in .me{align-items:center;gap:10px;display:flex}.hub-home .foot a{margin:-11px 0;padding:11px 4px;display:inline-block}@media (min-width:900px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:640px){.hub-in{padding:0 18px}.hero-in{align-items:flex-start;padding-top:40px;padding-bottom:32px}.hero-title{font-size:30px}.hero-right{align-items:flex-start}.hub-sec{padding:32px 0 36px}.tiles{grid-template-columns:1fr;grid-auto-rows:auto}.tile,.tile-wide,.tile-xl{flex-direction:row;grid-area:auto;align-items:center;gap:14px;min-height:84px}.tile .tile-body{flex:auto}.tile-xl{min-height:108px}.tile-xl .tile-name{font-size:16px}.tile-xl .tile-desc{font-size:14px}.shelf-row{gap:14px;padding:18px 2px}}
