:root{--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-card-solid: #ffffff;--bg-hover: rgba(0, 0, 0, .03);--border-glass: rgba(0, 0, 0, .06);--border-hover: rgba(0, 0, 0, .12);--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-muted: #aeaeb2;--accent: #0071e3;--accent-bright: #0077ed;--accent-dim: rgba(0, 113, 227, .06);--accent2: #34c759;--accent2-dim: rgba(52, 199, 89, .08);--danger: #ff3b30;--danger-dim: rgba(255, 59, 48, .08);--warning: #ff9f0a;--shadow: 0 1px 3px rgba(0, 0, 0, .04);--shadow-card: 0 2px 12px rgba(0, 0, 0, .06);--shadow-elevated: 0 4px 24px rgba(0, 0, 0, .08);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 22px;--font-ui: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-code: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--header-h: 48px;--nav-h: 56px;--transition: all .2s cubic-bezier(.25, .1, .25, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);background:var(--bg-primary);color:var(--text-primary);min-height:100dvh;overflow-x:hidden;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{display:flex;flex-direction:column;min-height:100dvh}.header{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--header-h);background:#f5f5f7b8;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid rgba(0,0,0,.1);display:flex;align-items:center;padding:0 20px;gap:12px}.header__logo{font-size:.92rem;font-weight:600;letter-spacing:-.01em;color:var(--text-primary)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:100;height:var(--nav-h);background:#f5f5f7b8;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid rgba(0,0,0,.1);display:flex;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom,0)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:none;color:var(--text-muted);font-size:.6rem;font-family:var(--font-ui);cursor:pointer;padding:6px 16px;border-radius:var(--radius-sm);transition:var(--transition);font-weight:500}.nav-item svg{width:22px;height:22px;transition:var(--transition)}.nav-item.active,.nav-item:hover{color:var(--accent)}.main-content{flex:1;padding:calc(var(--header-h) + 20px) 20px calc(var(--nav-h) + 20px);max-width:680px;margin:0 auto;width:100%}.hero{text-align:center;padding:36px 0 20px}.hero__icon{font-size:2.8rem;margin-bottom:12px}.hero__title{font-size:1.75rem;font-weight:700;line-height:1.3;letter-spacing:-.025em;color:var(--text-primary)}.hero__sub{color:var(--text-secondary);font-size:.85rem;margin-top:6px;font-weight:400}.feature-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:20px}.feature-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:18px;cursor:pointer;transition:var(--transition);display:flex;align-items:center;gap:14px;box-shadow:var(--shadow)}.feature-card:hover{transform:scale(1.01);box-shadow:var(--shadow-card)}.feature-card__icon{font-size:1.8rem;flex-shrink:0}.feature-card__title{font-weight:600;font-size:.9rem;letter-spacing:-.01em}.feature-card__desc{font-size:.76rem;color:var(--text-secondary);margin-top:2px}.progress-section{margin-top:12px;padding:18px;background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.progress-section__title{font-size:.8rem;font-weight:600;margin-bottom:10px;color:var(--text-secondary)}.progress-bar-wrap{background:#0000000a;border-radius:99px;height:6px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:99px;background:var(--accent);transition:width .5s cubic-bezier(.25,.1,.25,1)}.progress-label{font-size:.72rem;color:var(--text-muted);margin-top:6px;text-align:right}.page-title{font-size:1.3rem;font-weight:700;margin-bottom:4px;color:var(--text-primary);letter-spacing:-.02em}.page-subtitle{font-size:.78rem;color:var(--text-muted);margin:0 0 16px;font-weight:400}.chapter-list{display:flex;flex-direction:column;gap:6px}.chapter-item{background:var(--bg-card);border-radius:var(--radius-md);padding:14px 16px;cursor:pointer;transition:var(--transition);display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}.chapter-item:hover{transform:scale(1.005);box-shadow:var(--shadow-card)}.chapter-item__num{width:30px;height:30px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.75rem;flex-shrink:0;color:#fff}.chapter-item__title{font-weight:600;font-size:.88rem;letter-spacing:-.01em}.chapter-item__sub{font-size:.72rem;color:var(--text-muted);margin-top:1px}.chapter-item__arrow{width:14px;height:14px;color:var(--text-muted);margin-left:auto;flex-shrink:0}.chapter-back{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--accent);font-family:var(--font-ui);font-size:.82rem;padding:8px 0;margin-bottom:14px;cursor:pointer;transition:var(--transition);font-weight:500}.chapter-back:hover{opacity:.7}.chapter-nav-btns{display:flex;gap:8px;margin-top:32px;flex-wrap:wrap;align-items:center}.chapter-nav-btn{flex:1;min-width:0;padding:10px 14px;background:var(--bg-card);border:none;border-radius:var(--radius-md);font-family:var(--font-ui);font-size:.78rem;color:var(--accent);cursor:pointer;transition:var(--transition);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:var(--shadow);font-weight:500}.chapter-nav-btn:hover{box-shadow:var(--shadow-card)}.chapter-nav-btn--prev{text-align:left}.chapter-nav-btn--next{text-align:right}.chapter-back--bottom{flex-shrink:0;font-size:.78rem;margin-bottom:0;padding:10px 14px;white-space:nowrap;background:var(--bg-card);box-shadow:var(--shadow);border-radius:var(--radius-md);border:none}.md-content{word-break:break-word}.md-content h1{font-size:1.5rem;font-weight:700;margin:0 0 20px;color:var(--text-primary);letter-spacing:-.025em;padding-bottom:12px;border-bottom:.5px solid rgba(0,0,0,.1)}.md-content h2{font-size:1.12rem;font-weight:700;margin:36px 0 12px;padding-bottom:6px;border-bottom:.5px solid rgba(0,0,0,.08);color:var(--text-primary);letter-spacing:-.015em}.md-content h3{font-size:.95rem;font-weight:600;margin:24px 0 8px;color:var(--text-primary)}.md-content h4{font-size:.88rem;font-weight:600;margin:18px 0 6px;color:var(--text-secondary)}.md-content p{margin:10px 0;font-size:.88rem;line-height:1.8;color:var(--text-primary)}.md-content ul,.md-content ol{margin:10px 0;padding-left:22px;font-size:.88rem}.md-content li{margin:5px 0;line-height:1.75}.md-content strong{color:var(--text-primary);font-weight:700}.md-content em{color:var(--text-secondary);font-style:italic}.md-content a{color:var(--accent);text-decoration:none}.md-content a:hover{text-decoration:underline}.md-content code{font-family:var(--font-code);background:#0000000a;padding:2px 6px;border-radius:4px;font-size:.82rem;color:#e8375a}.md-content pre{background:#1d1d1f!important;border-radius:var(--radius-md);padding:16px 18px;margin:14px 0;overflow-x:auto;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-card);position:relative}.md-content pre code{background:none;padding:0;font-size:.78rem;line-height:1.7;color:#f5f5f7;border:none}.copy-btn{position:absolute;top:8px;right:8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#f5f5f7;padding:4px 8px;border-radius:6px;font-size:.7rem;font-family:var(--font-ui);cursor:pointer;transition:var(--transition);opacity:0}.md-content pre:hover .copy-btn{opacity:1}.copy-btn:hover{background:#fff3}.copy-btn.copied{background:var(--accent2);border-color:var(--accent2);color:#fff}.md-content table{width:100%;border-collapse:collapse;margin:14px 0;font-size:.84rem}.md-content th,.md-content td{border-bottom:.5px solid rgba(0,0,0,.08);padding:10px 12px;text-align:left;line-height:1.6}.md-content th{font-weight:600;color:var(--text-primary);background:transparent}.md-content tr:last-child td{border-bottom:none}.md-content blockquote{border-left:3px solid var(--accent);margin:14px 0;padding:10px 16px;background:var(--accent-dim);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.86rem;color:var(--text-secondary)}.md-content hr{border:none;border-top:.5px solid rgba(0,0,0,.08);margin:32px 0}.hljs{background:transparent!important;color:#f5f5f7!important}.hljs-keyword{color:#ff7ab2!important}.hljs-string{color:#ff8170!important}.hljs-number{color:#d0bf69!important}.hljs-comment{color:#7f8c98!important;font-style:italic}.hljs-type,.hljs-built_in{color:#acf2e4!important}.hljs-title{color:#67b7a4!important}.hljs-params{color:#f5f5f7!important}.hljs-attr{color:#6bdfff!important}.katex{font-size:1em!important}.katex-display{overflow-x:auto;overflow-y:hidden}.cs-category-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.cs-category-tabs::-webkit-scrollbar{display:none}.cs-tab{background:transparent;border:none;border-radius:99px;padding:6px 14px;white-space:nowrap;color:var(--text-secondary);font-size:.78rem;font-family:var(--font-ui);cursor:pointer;transition:var(--transition);font-weight:500}.cs-tab:hover{color:var(--text-primary);background:#0000000a}.cs-tab.active{background:var(--text-primary);color:#fff}.cs-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}.problem-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow);margin-bottom:12px}.problem-card__q{font-weight:700;font-size:.95rem;color:var(--accent-bright);margin-bottom:8px;letter-spacing:-.01em}.problem-card__desc{font-size:.8rem;color:var(--text-secondary);margin-bottom:12px;line-height:1.6}.problem-card pre{background:#1d1d1f;border-radius:var(--radius-md);padding:16px;overflow-x:auto;margin:0;position:relative}.problem-card code{font-family:var(--font-code);font-size:.78rem;color:#f5f5f7;line-height:1.6}.problem-card pre:hover .copy-btn{opacity:1}.quiz-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.quiz-progress{font-size:.78rem;color:var(--text-secondary)}.quiz-score{font-size:.78rem;font-weight:600;padding:4px 12px;background:var(--accent-dim);border-radius:99px;color:var(--accent)}.quiz-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:20px;margin-bottom:14px;box-shadow:var(--shadow)}.quiz-card__chapter{font-size:.7rem;color:var(--accent);font-weight:600;margin-bottom:6px;letter-spacing:.02em}.quiz-card__question{font-size:.92rem;font-weight:600;margin-bottom:16px;line-height:1.65;letter-spacing:-.01em}.quiz-card__question code{font-family:var(--font-code);background:#0000000a;padding:2px 5px;border-radius:4px;font-size:.84rem;color:#e8375a}.quiz-options{display:flex;flex-direction:column;gap:6px}.quiz-option{width:100%;text-align:left;padding:12px 14px;background:var(--bg-primary);border:none;border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-ui);font-size:.85rem;cursor:pointer;transition:var(--transition);line-height:1.5}.quiz-option:hover:not(:disabled){background:#0000000f}.quiz-option.correct{background:var(--accent2-dim);color:#1a7f37;font-weight:600}.quiz-option.wrong{background:var(--danger-dim);color:var(--danger);font-weight:600}.quiz-option:disabled{cursor:default}.quiz-option code{font-family:var(--font-code);font-size:.82rem}.quiz-explanation{margin-top:10px;padding:12px 14px;border-radius:var(--radius-md);background:var(--accent-dim);font-size:.82rem;color:var(--text-secondary);line-height:1.7;animation:slideUp .25s ease}.quiz-next{margin-top:14px;width:100%;padding:13px;background:var(--accent);border:none;border-radius:var(--radius-md);color:#fff;font-weight:600;font-size:.88rem;font-family:var(--font-ui);cursor:pointer;transition:var(--transition)}.quiz-next:hover{background:var(--accent-bright)}.quiz-result{text-align:center;padding:36px 20px;background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.quiz-result__icon{font-size:2.8rem;margin-bottom:12px}.quiz-result__score{font-size:2.2rem;font-weight:700;color:var(--text-primary);letter-spacing:-.03em}.quiz-result__label{font-size:.82rem;color:var(--text-secondary);margin-top:4px}.quiz-result__btn{margin-top:20px;padding:12px 28px;background:var(--accent);border:none;border-radius:var(--radius-md);color:#fff;font-weight:600;font-family:var(--font-ui);cursor:pointer;transition:var(--transition)}.quiz-result__btn:hover{background:var(--accent-bright)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .25s ease}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:99px}@media(min-width:600px){.cs-grid{grid-template-columns:1fr 1fr}.feature-grid{grid-template-columns:1fr 1fr 1fr}.stats-grid{grid-template-columns:repeat(4,1fr)}}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:16px}.stat-card{background:var(--bg-card);border-radius:var(--radius-md);padding:14px;text-align:center;box-shadow:var(--shadow)}.stat-card__value{font-size:1.4rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.stat-card__label{font-size:.68rem;color:var(--text-muted);margin-top:2px;font-weight:500}.chapter-category{font-size:.72rem;font-weight:600;color:var(--text-muted);margin:18px 0 6px;padding-left:2px;letter-spacing:.02em;text-transform:uppercase}.chapter-category:first-child{margin-top:0}.chapter-item--read{opacity:.55}.chapter-item--read .chapter-item__num{background:var(--accent2);font-size:.68rem}.chapter-progress-mini{display:flex;align-items:center;gap:10px;margin-bottom:16px;font-size:.72rem;color:var(--text-muted);font-weight:500}.chapter-progress-bar{flex:1;height:3px;background:#0000000f;border-radius:99px;overflow:hidden}.chapter-progress-fill{height:100%;background:var(--accent);border-radius:99px;transition:width .5s ease}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}
