.topbar{height:var(--nav-h);background:var(--surface);border-bottom:1px solid var(--border-2);z-index:100;box-shadow:var(--sh-sm);justify-content:space-between;align-items:center;padding:0 1.25rem;display:flex;position:fixed;top:0;left:0;right:0}.topbar-left{align-items:center;gap:1.5rem;display:flex}.topbar-logo{color:inherit;flex-shrink:0;align-items:center;gap:.5rem;text-decoration:none;display:flex}.topbar-logo-icon{flex-shrink:0;display:block}.topbar-logo-mark{color:var(--text);letter-spacing:-.02em;white-space:nowrap;font-size:1rem;font-weight:800;line-height:1}.topbar-hamburger{border-radius:var(--r-sm);width:36px;height:36px;color:var(--text-2);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;transition:background .12s;display:none}.topbar-hamburger:hover{background:var(--bg)}.topbar-nav{align-items:center;gap:.25rem;display:flex}.topbar-nav-item{border-radius:var(--r);min-height:44px;color:var(--text-3);white-space:nowrap;align-items:center;gap:.4rem;padding:.5rem .75rem;font-size:.82rem;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.topbar-nav-item:hover{background:var(--bg);color:var(--text)}.topbar-nav-item--active{background:var(--blue-light);color:var(--blue-dark);font-weight:600}.topbar-nav-item--active:hover{background:var(--blue-mid);color:var(--blue-dark)}.topbar-right{align-items:center;gap:.5rem;display:flex}.topbar-icon-wrap{position:relative}.topbar-icon-btn{width:36px;height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:flex;position:relative}.topbar-icon-btn:hover{background:var(--bg)}.topbar-icon-btn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.topbar-tooltip{color:#f5f5f5;border-radius:var(--r);white-space:nowrap;z-index:200;pointer-events:none;background:#1a1a1a;padding:.35rem .6rem;font-size:.72rem;font-weight:500;display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}[data-theme=dark] .topbar-tooltip{color:#1a1a1a;background:#f5f5f5}.topbar-tooltip:before{content:"";border:5px solid #0000;border-bottom-color:#1a1a1a;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}[data-theme=dark] .topbar-tooltip:before{border-bottom-color:#f5f5f5}.topbar-icon-btn--tooltip:hover .topbar-tooltip{display:block}.topbar-badge{background:var(--red);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.65rem;font-weight:700;line-height:1;display:flex;position:absolute;top:4px;right:4px}.topbar-avatar-btn{border:2px solid var(--border);background:var(--blue-light);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding:0;transition:border-color .15s;display:flex;overflow:hidden}.topbar-avatar-btn:hover{border-color:var(--blue)}.topbar-avatar-btn--pro{background:linear-gradient(var(--surface), var(--surface)) padding-box, conic-gradient(from 0deg, #4285f4, #34a853, #4285f4, #1a73e8, #4285f4) border-box;border:2.5px solid #0000}.topbar-avatar-btn--pro:hover{border-color:#0000}.topbar-avatar-btn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.topbar-avatar-img{object-fit:cover;border-radius:50%;display:block}.topbar-avatar-initial{color:var(--blue);font-size:.85rem;font-weight:700;line-height:1}.topbar-dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);z-index:200;animation:.12s dropdown-in;position:absolute;top:calc(100% + 8px);right:0}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.topbar-dropdown-header{color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-2);padding:.75rem 1rem .5rem;font-size:.8rem;font-weight:600}.notif-dropdown{width:320px}.notif-empty{color:var(--text-4);flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;display:flex}.notif-empty p{font-size:.875rem}.notif-list{max-height:300px;overflow-y:auto}.notif-item{border-bottom:1px solid var(--border-2);cursor:pointer;padding:.6rem .75rem;transition:background .12s}.notif-item:last-child{border-bottom:none}.notif-item:hover{background:var(--bg)}.notif-item--unread{background:var(--blue-light)}.notif-item--unread:hover{background:var(--blue-light);opacity:.85}.notif-item-content{color:var(--text-3);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.78rem;line-height:1.4;display:-webkit-box;overflow:hidden}.notif-item-time{color:var(--text-4);margin-top:.25rem;font-size:.68rem}.notif-view-all{text-align:center;color:var(--blue);border-top:1px solid var(--border-2);padding:.5rem;font-size:.78rem;font-weight:600;text-decoration:none;display:block}.notif-view-all:hover{background:var(--bg)}.profile-dropdown{width:180px}.profile-dropdown-header{border-bottom:1px solid var(--border-2);align-items:center;gap:.625rem;padding:.625rem .75rem;display:flex}.profile-dropdown-avatar{background:var(--blue-light);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex;overflow:hidden}.profile-dropdown-initial{color:var(--blue);font-size:.875rem;font-weight:700}.profile-dropdown-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;max-width:130px;font-size:.875rem;font-weight:600;overflow:hidden}.profile-dropdown-email{color:var(--text-4);white-space:nowrap;text-overflow:ellipsis;max-width:130px;margin-top:1px;font-size:.75rem;overflow:hidden}.profile-dropdown-item{width:100%;color:var(--text-2);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.825rem;text-decoration:none;transition:background .12s;display:flex}.profile-dropdown-item:hover{background:var(--bg)}.profile-dropdown-item:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.profile-dropdown-logout{color:var(--red);border-radius:0 0 var(--r-lg) var(--r-lg)}.profile-dropdown-logout:hover{background:var(--red-bg)}.topbar-streak{background:var(--orange-bg);color:var(--orange);cursor:default;border-radius:999px;align-items:center;gap:.25rem;margin-right:.25rem;padding:.25rem .6rem;font-size:.8rem;font-weight:700;display:flex;position:relative}.streak-tooltip{color:#f5f5f5;border-radius:var(--r);white-space:nowrap;z-index:200;pointer-events:none;background:#1a1a1a;padding:.4rem .65rem;font-size:.72rem;font-weight:500;display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}[data-theme=dark] .streak-tooltip{color:#1a1a1a;background:#f5f5f5}.streak-tooltip:before{content:"";border:5px solid #0000;border-bottom-color:#1a1a1a;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}[data-theme=dark] .streak-tooltip:before{border-bottom-color:#f5f5f5}.topbar-streak:hover .streak-tooltip{display:block}.profile-dropdown-section{padding:.25rem 0}.topbar-signin{padding:.35rem .875rem;font-size:.8rem}.topbar-avatar-skeleton{background:var(--border-2);border-radius:50%;width:34px;height:34px;animation:1.2s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.topbar-theme-btn{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text-3);cursor:pointer;align-items:center;gap:.35rem;padding:.35rem .65rem;font-family:inherit;font-size:.75rem;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:flex}.topbar-theme-btn:hover{background:var(--bg);border-color:var(--blue-mid);color:var(--text)}@media (max-width:900px){.topbar-nav-item span{display:none}.topbar-nav-item{padding:.4rem .5rem}.topbar-logo-mark{display:none}}@media (max-width:640px){.topbar-nav{display:none}.topbar{padding:0 .75rem}.topbar-logo-mark{display:none}.topbar-hamburger{display:flex}.topbar-theme-label{display:none}.topbar-theme-btn{border:none;padding:.35rem}}@media (max-width:480px){.notif-dropdown{top:var(--nav-h);width:260px;position:fixed;left:auto;right:1rem}.profile-dropdown{top:var(--nav-h);width:200px;position:fixed;left:auto;right:1rem}}
.drawer-backdrop,.drawer{display:none}@media (max-width:640px){.drawer-backdrop{z-index:199;opacity:0;pointer-events:none;background:#0006;transition:opacity .2s;display:block;position:fixed;inset:0}.drawer-backdrop--open{opacity:1;pointer-events:auto}.drawer{background:var(--surface);border-right:1px solid var(--border);z-index:200;-webkit-overflow-scrolling:touch;flex-direction:column;width:280px;max-width:85vw;transition:transform .25s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.drawer--open{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--border-2);flex-shrink:0;justify-content:space-between;align-items:center;padding:.875rem 1rem;display:flex}.drawer-logo{color:var(--text);letter-spacing:-.02em;white-space:nowrap;align-items:center;gap:.5rem;font-size:1rem;font-weight:800;display:inline-flex}.drawer-logo-icon{flex-shrink:0;display:block}.drawer-close{border-radius:var(--r-sm);width:32px;height:32px;color:var(--text-3);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .12s,color .12s;display:flex}.drawer-close:hover{background:var(--bg);color:var(--text)}.drawer-user{border-bottom:1px solid var(--border-2);align-items:center;gap:.75rem;padding:.875rem 1rem;text-decoration:none;transition:background .12s;display:flex}.drawer-user:hover{background:var(--bg)}.drawer-avatar{background:var(--blue-light);border:2px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex;overflow:hidden}.drawer-avatar--pro{background:linear-gradient(var(--surface), var(--surface)) padding-box, conic-gradient(from 0deg, #4285f4, #34a853, #4285f4, #1a73e8, #4285f4) border-box;border:2.5px solid #0000}.drawer-avatar-initial{color:var(--blue);font-size:1rem;font-weight:700}.drawer-user-meta{align-items:center;gap:.5rem;min-width:0;display:flex}.drawer-user-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.drawer-pro-badge{background:var(--orange-bg);color:var(--orange);letter-spacing:.04em;border-radius:99px;flex-shrink:0;padding:.15rem .4rem;font-size:.6rem;font-weight:700}.drawer-section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-4);padding:.875rem 1rem .375rem;font-size:.68rem;font-weight:700}.drawer-nav{border-bottom:1px solid var(--border-2);padding-bottom:.375rem}.drawer-item{width:100%;color:var(--text-2);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:.75rem;padding:.625rem 1rem;font-family:inherit;font-size:.875rem;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.drawer-item:hover,.drawer-item:active{background:var(--bg)}.drawer-item--active{color:var(--blue);background:var(--blue-light);font-weight:600}.drawer-item--danger{color:var(--red)}.drawer-item--danger:hover{background:var(--red-bg)}.drawer-item--signin{color:var(--blue);font-weight:600}.drawer-footer{border-top:1px solid var(--border-2);padding:.375rem 0 calc(.375rem + var(--safe-bottom));margin-top:auto}}
.bottom-nav{display:none}@media (max-width:640px){.bottom-nav{z-index:90;background:var(--surface);border-top:1px solid var(--border);padding-bottom:var(--safe-bottom);display:block;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -1px 3px #0f172a0f}.bottom-nav-list{height:var(--bottom-nav-h);grid-template-columns:repeat(5,minmax(0,1fr));list-style:none;display:grid}.bottom-nav-cell{min-width:0;display:flex}.bottom-nav-item{min-width:0;min-height:44px;color:var(--text-3);-webkit-tap-highlight-color:transparent;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.2rem;padding:.25rem .125rem;font-size:.7rem;font-weight:500;line-height:1.2;text-decoration:none;transition:color .12s;display:flex;position:relative}.bottom-nav-item:active{background:var(--bg)}.bottom-nav-item:focus-visible{outline:2px solid var(--blue);outline-offset:-4px;border-radius:var(--r)}.bottom-nav-item--active{color:var(--blue);font-weight:700}.bottom-nav-item--active:before{content:"";background:var(--blue);border-radius:0 0 3px 3px;width:24px;height:3px;margin-left:-12px;position:absolute;top:0;left:50%}.bottom-nav-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}}
.footer{background:var(--bg);border-top:1px solid var(--border);padding:.625rem 0}.footer-container{max-width:var(--max-w);flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;margin:0 auto;padding:0 1.25rem;display:flex}.footer-copyright,.footer-sep{color:var(--text-4);font-size:.75rem}.footer-link{color:var(--text-3);font-size:.75rem;text-decoration:none;transition:color .15s}.footer-link:hover{color:var(--blue)}@media (max-width:768px){.footer{padding-bottom:calc(.625rem + var(--safe-bottom))}}
.app-shell{min-height:100vh}.shell-main{padding-top:var(--nav-h);flex-direction:column;min-height:100vh;display:flex}.shell-content{flex:1}@media (max-width:640px){.app-shell--bottom-nav{--bottom-nav-space:calc(var(--bottom-nav-h) + var(--safe-bottom))}.app-shell--bottom-nav .shell-main{padding-bottom:var(--bottom-nav-space)}}
:root{--blue:#2563eb;--blue-dark:#1e40af;--blue-hover:#1d4ed8;--blue-light:#eff6ff;--blue-mid:#dbeafe;--text:#0f172a;--text-2:#334155;--text-3:#64748b;--text-4:#94a3b8;--border:#e2e8f0;--border-2:#f1f5f9;--bg:#f8fafc;--surface:#fff;--green:#059669;--green-bg:#ecfdf5;--green-text:#047857;--red:#dc2626;--red-bg:#fef2f2;--red-text:#b91c1c;--orange:#d97706;--orange-bg:#fffbeb;--nav-h:56px;--r:8px;--r-sm:4px;--r-lg:12px;--max-w:1280px;--content-max-w:680px;--max-w-content:900px;--max-w-narrow:640px;--reading-font:16px;--reading-lh:1.8;--streak:var(--orange);--streak-bg:var(--orange-bg);--section-border:var(--border-2);--section-bg:var(--bg);--sp-xs:.25rem;--sp-sm:.5rem;--sp-md:.75rem;--sp-lg:1rem;--sp-xl:1.5rem;--sp-2xl:2rem;--sp-3xl:3rem;--fs-xs:.72rem;--fs-sm:.8rem;--fs-base:.875rem;--fs-md:.95rem;--fs-lg:1.15rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;--fs-3xl:1.875rem;--safe-bottom:env(safe-area-inset-bottom,0px);--bottom-nav-h:60px;--sh-sm:0 1px 2px #0f172a0f, 0 1px 3px #0f172a0a;--sh:0 1px 3px #0f172a14, 0 2px 8px #0f172a0f;--sh-lg:0 4px 6px #0f172a12, 0 10px 15px #0f172a1a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.6}code{font-family:SF Mono,Fira Code,Menlo,Monaco,Consolas,Courier New,monospace}.App{flex-direction:column;min-height:100vh;display:flex}.App-content{padding-top:var(--nav-h);flex:1}@media (max-width:768px){.App-content{padding-bottom:var(--safe-bottom)}}.btn{border-radius:var(--r);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1.5rem;font-size:.875rem;font-weight:600;line-height:1.4;text-decoration:none;transition:background .15s,box-shadow .15s,transform .1s;display:inline-flex}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-hover);transform:translateY(-1px);box-shadow:0 2px 8px #1a73e859}.btn-outline{background:var(--surface);color:var(--blue);border:1.5px solid var(--blue)}.btn-outline:hover{background:var(--blue-light)}.spinner{border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;width:32px;height:32px;margin:0 auto;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.badge{letter-spacing:.03em;text-transform:uppercase;border-radius:999px;padding:.2rem .6rem;font-size:.72rem;font-weight:600;display:inline-block}.badge-blue{background:var(--blue-light);color:var(--blue-dark)}.badge-green{background:var(--green-bg);color:var(--green-text)}@keyframes skel-shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skel{border-radius:var(--r-sm);background:linear-gradient(90deg, var(--border-2) 25%, var(--shimmer-mid,#f0f1f2) 37%, var(--border-2) 63%);background-size:800px 100%;animation:1.4s infinite skel-shimmer;display:block}.skel-text{vertical-align:middle;max-width:100%;height:.8em;display:inline-block}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.date-picker-bar{align-items:center;gap:.375rem;display:flex;position:relative}.date-nav-btn{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);width:32px;height:32px;color:var(--text-3);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s,border-color .12s,color .12s;display:flex}.date-nav-btn:hover:not(:disabled){background:var(--bg);border-color:var(--blue-mid);color:var(--blue)}.date-nav-btn:disabled{opacity:.35;cursor:not-allowed}.date-picker-btn{color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--r);cursor:pointer;align-items:center;gap:.5rem;padding:.45rem .875rem;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.date-picker-btn:hover{background:var(--bg);border-color:var(--blue-mid)}.date-picker-btn svg{color:var(--blue)}.date-picker-dropdown{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);animation:.12s date-dropdown-in;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden}@keyframes date-dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.date-picker-btn{padding:.4rem .75rem;font-size:.8rem}}[data-theme=dark]{--blue:#60a5fa;--blue-dark:#93c5fd;--blue-hover:#3b82f6;--blue-light:#60a5fa1a;--blue-mid:#60a5fa2e;--text:#f1f5f9;--text-2:#cbd5e1;--text-3:#94a3b8;--text-4:#64748b;--border:#334155;--border-2:#1e293b;--bg:#0f172a;--surface:#1e293b;--green:#34d399;--green-bg:#34d3991a;--green-text:#6ee7b7;--red:#f87171;--red-bg:#f871711a;--red-text:#fca5a5;--orange:#fbbf24;--orange-bg:#fbbf241a;--streak:var(--orange);--streak-bg:var(--orange-bg);--section-border:var(--border-2);--section-bg:var(--bg);--sh-sm:0 1px 2px #0000004d, 0 1px 3px #0003;--sh:0 1px 3px #0006, 0 2px 8px #0000004d;--sh-lg:0 2px 6px #00000080, 0 4px 16px #0006;--pre-bg:#1e1e2e;--pre-text:#cdd6f4;--shimmer-mid:#2a2a40;--orange-dark:#c2410c;--overlay-bg:#121220d9;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{transition:background-color .2s,color .2s}
