:root{color-scheme:light dark;--color-bg:#ffffff;--color-fg:#171b26;--color-muted:#667085;--color-border:#e3e6ec;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-soft:#eef3ff;--color-success:#16a34a;--color-success-soft:#ecfdf3;--color-error:#dc2626;--color-error-soft:#fef2f2;--color-warning:#d97706;--color-warning-soft:#fffaeb;--color-card-bg:#f8f9fc;--color-mastery:#ca8a04;--color-mastery-soft:#fef9e7;--chart-cat-1:#2a78d6;--chart-cat-2:#eb6834;--chart-cat-3:#1baf7a;--chart-cat-4:#eda100;--chart-cat-5:#e87ba4;--chart-cat-6:#008300;--chart-cat-7:#4a3aa7;--chart-cat-8:#e34948;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 2px rgba(23,27,38,0.05);--shadow-md:0 6px 16px -4px rgba(23,27,38,0.1);--shadow-lg:0 16px 32px -8px rgba(23,27,38,0.16);--page-max-width:780px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--color-fg);background:var(--color-bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Yu Gothic,Hiragino Kaku Gothic ProN,Hiragino Sans,Meiryo,Noto Sans JP,sans-serif;font-size:15.5px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--color-primary)}.btn,.card,.card-link,.choice-item,.progress-bar-inner,a,button,input,select,textarea{transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.9em;border:1px solid var(--color-border);border-radius:4px;padding:.05em .35em}.code-block,code{background:var(--color-card-bg)}.code-block{display:block;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.75rem 1rem;margin:.75rem 0}.code-block code{background:none;border:none;border-radius:0;padding:0;font-size:.85em;white-space:pre}.article-code-block{--code-bg:#1e1e2e;--code-fg:#cdd6f4;--code-border:#313244;position:relative;margin:.75rem 0}.article-code-block pre.code-block{margin:0;background:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--radius-md);color:var(--code-fg)}.article-code-block pre.code-block code{color:inherit}.article-code-copy-btn{position:absolute;top:.4rem;right:.4rem;display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;padding:0;color:rgba(205,214,244,.7);background:rgba(49,50,68,.85);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s ease,color .15s ease}.article-code-copy-btn svg{width:15px;height:15px}.article-code-copy-btn:hover{color:var(--code-fg);background:rgba(49,50,68,1)}.article-code-copy-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.article-code-copy-btn[data-copied=true]{color:var(--color-success);background:rgba(49,50,68,.85)}.article-table-wrap{margin:.9rem 0;overflow-x:auto;overflow-y:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}table.article-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem}table.article-table td,table.article-table th{padding:.65rem .9rem;border-bottom:1px solid var(--color-border);text-align:left}table.article-table thead th{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600;font-size:.78rem;text-transform:none;letter-spacing:.02em;white-space:nowrap}table.article-table tbody tr:nth-child(2n){background:var(--color-card-bg)}table.article-table tbody tr:hover{background:var(--color-primary-soft)}table.article-table tbody tr:last-child td{border-bottom:none}.footnote-ref{font-size:.75em;line-height:1}.footnote-marker{position:relative;color:var(--color-primary);font-weight:600;text-decoration:none;padding:0 .1em}.footnote-marker:focus,.footnote-marker:hover{text-decoration:underline}.footnote-tooltip{visibility:hidden;opacity:0;position:absolute;left:50%;bottom:calc(100% + .4rem);transform:translateX(-50%);width:max-content;max-width:min(320px,80vw);background:var(--color-fg);color:var(--color-bg);font-size:.85rem;font-weight:400;line-height:1.5;white-space:normal;padding:.5rem .7rem;border-radius:var(--radius-sm);box-shadow:0 4px 16px rgba(0,0,0,.18);z-index:30;transition:opacity .1s ease}.footnote-marker:focus .footnote-tooltip,.footnote-marker:hover .footnote-tooltip{visibility:visible;opacity:1}.footnote-tooltip code{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.28)}.article-footnotes{margin-top:1.5rem}.article-footnotes h3{margin-bottom:.5rem}.article-footnotes ol{color:var(--color-muted);font-size:.9rem;line-height:1.7;padding-left:1.4rem}.footnote-backlink{color:var(--color-muted);text-decoration:none}.footnote-backlink:hover{color:var(--color-primary)}.page-body{padding:2.25rem 1.5rem 4rem}.page-body,main{max-width:var(--page-max-width);margin:0 auto}main{padding:2.25rem 1.5rem}h1{font-size:1.6rem;font-weight:800;letter-spacing:-.01em;margin:0 0 .5rem}h2{font-size:1.1rem;letter-spacing:-.005em;margin-top:2.25rem;margin-bottom:.75rem}h2,h3{font-weight:700}h3{font-size:1rem}.article-body h2,.article-body h3{scroll-margin-top:5rem}.article-body h2{background:var(--color-primary-soft);color:var(--color-primary);padding:.6rem .9rem;border-radius:var(--radius-md);border-left:4px solid var(--color-primary)}.article-body h3{color:var(--color-primary);border-bottom:2px solid var(--color-primary-soft);padding-bottom:.35rem}.navbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;border-bottom:1px solid var(--color-border);background:rgba(255,255,255,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-sm)}.navbar-inner{max-width:var(--page-max-width);margin:0 auto;padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.navbar-brand{font-weight:800;font-size:1.15rem;letter-spacing:-.02em;text-decoration:none;color:var(--color-fg);display:inline-flex;align-items:center;gap:.4rem}.navbar-brand:before{content:"";display:inline-block;width:9px;height:9px;border-radius:3px;background:linear-gradient(135deg,var(--color-primary),#60a5fa)}.navbar-links{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;font-size:.9rem}.navbar-links a{position:relative;text-decoration:none;color:var(--color-muted);font-weight:500;padding:.2rem 0}.navbar-links a:hover{color:var(--color-primary)}.navbar-links a.active{color:var(--color-fg);font-weight:700}.navbar-links a.active:after{content:"";position:absolute;left:0;right:0;bottom:-.85rem;height:2px;border-radius:2px;background:var(--color-primary)}.navbar-home{display:inline-flex;align-items:center;padding:.35rem .9rem!important;border-radius:999px;background:var(--color-primary-soft);color:var(--color-primary)!important;font-weight:700!important}.navbar-home:hover{background:var(--color-primary);color:#fff!important}.navbar-home.active:after{content:none}.navbar-cta{display:inline-flex;align-items:center;padding:.35rem .9rem!important;border-radius:999px;background:var(--color-primary);color:#fff!important;font-weight:700!important}.navbar-cta:hover{background:var(--color-primary-hover);color:#fff!important}.navbar-cta.active:after{content:none}.form{gap:1.1rem;max-width:420px}.form,.form-field{display:flex;flex-direction:column}.form-field{gap:.4rem}.form-field label{font-size:.9rem;font-weight:600}.form-field input,.form-field select,.form-field textarea{padding:.6rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;background:var(--color-bg);color:var(--color-fg);font-family:inherit}.form-field input:hover,.form-field select:hover,.form-field textarea:hover{border-color:#c7cbd4}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.form-field textarea{resize:vertical}.choice-input{flex:1 1;padding:.6rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;background:var(--color-bg);color:var(--color-fg)}.choice-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.honeypot-field{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}.form-hint{font-size:.8rem;color:var(--color-muted)}.checkbox-group{display:flex;flex-direction:column;gap:.45rem}.checkbox-group label{display:flex;align-items:center;gap:.5rem;font-weight:400;font-size:.95rem}.option-cards{display:flex;flex-direction:column;gap:.6rem}.option-card{display:flex;align-items:flex-start;gap:.7rem;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;font-weight:400}.option-card.selected,.option-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.option-card.selected{background:var(--color-primary-soft)}.option-card input{margin-top:.25rem;accent-color:var(--color-primary)}.option-card-body{display:flex;flex-direction:column;gap:.1rem}.option-card-title{font-weight:700}.option-card-desc{font-size:.85rem;color:var(--color-muted)}.chip-group{display:flex;flex-wrap:wrap;gap:.5rem}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-bg);cursor:pointer;font-size:.9rem;font-weight:500}.chip:hover{box-shadow:var(--shadow-sm)}.chip.selected,.chip:hover{border-color:var(--color-primary)}.chip.selected{background:var(--color-primary-soft);color:var(--color-primary);font-weight:700}.chip input{accent-color:var(--color-primary);margin:0}.btn{display:inline-block;padding:.6rem 1.2rem;border-radius:var(--radius-sm);border:1px solid var(--color-primary);background:var(--color-primary);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;text-decoration:none;text-align:center;box-shadow:var(--shadow-sm)}.btn:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--color-bg);color:var(--color-primary);box-shadow:none}.btn-secondary:hover{background:var(--color-primary-soft)}.btn-block{display:block;width:100%}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:0;font-size:.9rem;text-decoration:underline}.report-trigger-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .8rem;border-radius:var(--radius-sm);border:1px solid var(--color-warning);background:var(--color-warning-soft);color:var(--color-warning);font-size:.85rem;font-weight:600;cursor:pointer;text-decoration:none}.report-trigger-btn:hover{background:var(--color-warning);border-color:var(--color-warning);color:#fff}.report-trigger-btn svg{width:14px;height:14px;flex-shrink:0}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.4rem;background:var(--color-card-bg);box-shadow:var(--shadow-sm);margin-bottom:1.1rem}.card-link{display:block;text-decoration:none;color:inherit}.card-link:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.related-article-link{display:inline-flex;align-items:center;padding:.3rem .8rem;border-radius:999px;background:var(--color-primary-soft);border:1px solid var(--color-primary-soft);color:var(--color-primary);font-weight:600;font-size:.9rem;text-decoration:none;line-height:1.3}.related-article-link:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.stack{flex-direction:column;gap:1rem}.row,.stack{display:flex}.row{gap:.75rem;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:1rem;gap:1rem}.no-signup-group{margin-top:1rem;padding:.9rem 1.1rem;border:1px solid var(--color-border);border-radius:var(--radius-md)}.no-signup-group-label{margin:0 0 .6rem;font-size:.8rem;font-weight:600;color:var(--color-muted)}.no-signup-group .row{margin:0}.alert-success,.status-ok{color:var(--color-success)}@keyframes spin{to{transform:rotate(1turn)}}.spinner{display:inline-block;width:1.1rem;height:1.1rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}.alert-error,.status-error{color:var(--color-error)}.alert{padding:.8rem 1rem;border-radius:var(--radius-md);border:1px solid transparent;border-left-width:3px;font-size:.9rem}.alert-error{background:var(--color-error-soft);border-left-color:var(--color-error)}.alert-success{background:var(--color-success-soft);border-left-color:var(--color-success)}.badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--color-border);color:var(--color-fg)}.badge-correct{background:var(--color-success-soft);color:var(--color-success)}.badge-wrong{background:var(--color-error-soft);color:var(--color-error)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-manual-review{background:var(--color-border);color:var(--color-muted)}.badge-mastery{background:var(--color-mastery-soft);color:var(--color-mastery)}.card-conquered{border-color:var(--color-mastery);box-shadow:0 0 0 1px var(--color-mastery)}.mastery-badge-row{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.85rem}.mastery-badge-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;min-width:84px;padding:.6rem .5rem;border-radius:var(--radius-md);text-align:center;font-size:.8rem}.mastery-badge-slot.locked{border:1px dashed var(--color-border);color:var(--color-muted);background:transparent}.mastery-badge-slot.earned{border:1px solid var(--color-mastery);background:var(--color-mastery-soft);color:var(--color-mastery);font-weight:600}.mastery-badge-icon{width:56px;height:56px;object-fit:contain}.mastery-badge-slot.locked .mastery-badge-icon{filter:grayscale(1) opacity(.45)}.mastery-badge-slot.earned .mastery-badge-icon{filter:none}.mastery-badge-label{display:block}.mastery-badge-share-btn{font-size:.65rem;margin-top:.1rem}.streak-highlight-card{text-align:center}.streak-highlight-number{font-size:2.6rem;font-weight:700;line-height:1.2;color:var(--color-primary)}.streak-highlight-unit{margin-left:.4rem;font-size:1rem;font-weight:600;color:var(--color-muted)}.popular-carousel-card{aspect-ratio:3/2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;box-sizing:border-box;width:100%;padding:.9rem;border-radius:var(--radius-lg);border:2px solid var(--color-warning);background:var(--color-warning-soft);box-shadow:var(--shadow-sm);text-align:center;text-decoration:none;color:inherit}.popular-carousel-card:focus-visible,.popular-carousel-card:hover{box-shadow:var(--shadow-md)}.popular-carousel-rank{display:inline-flex;align-items:center;justify-content:center;min-width:1.7rem;height:1.7rem;padding:0 .4rem;border-radius:999px;background:var(--color-warning);color:#ffffff;font-size:.8rem;font-weight:700}.popular-carousel-title{font-weight:600;font-size:.95rem;color:var(--color-fg);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}@media (max-width:480px){.popular-carousel-card{padding:.5rem;gap:.3rem}.popular-carousel-rank{min-width:1.3rem;height:1.3rem;font-size:.7rem}.popular-carousel-title{font-size:.75rem;-webkit-line-clamp:3}}.muted{color:var(--color-muted);font-size:.9rem}.choice-list{display:flex;flex-direction:column;gap:.65rem;margin:1rem 0}.choice-item{display:flex;align-items:flex-start;gap:.65rem;padding:.8rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer}.choice-item:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.choice-item.selected{border-color:var(--color-primary);background:var(--color-primary-soft)}.choice-item.correct{border-color:var(--color-success);background:var(--color-success-soft)}.choice-item.incorrect{border-color:var(--color-error);background:var(--color-error-soft)}.choice-item input{margin-top:.2rem;accent-color:var(--color-primary)}.progress-bar-outer{width:100%;height:10px;background:var(--color-border);border-radius:999px;overflow:hidden}.progress-bar-inner{height:100%;background:linear-gradient(90deg,var(--color-primary),#60a5fa);border-radius:999px}.timer{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.timer-warning{color:var(--color-error)}.mastery-meter{display:inline-flex;align-items:center;gap:.4rem}.mastery-meter-pips{display:inline-flex;gap:3px}.mastery-pip{width:10px;height:10px;border-radius:3px;background:var(--color-border);border:1px solid var(--color-border)}.mastery-pip.filled{background:var(--color-primary);border-color:var(--color-primary)}.mastery-meter.mastered .mastery-pip.filled{background:var(--color-mastery);border-color:var(--color-mastery)}.mastery-meter-label{font-size:.8rem;font-weight:600;color:var(--color-primary)}.mastery-meter.mastered .mastery-meter-label{color:var(--color-mastery)}.alert-mastery{border-left:4px solid var(--color-mastery);background:var(--color-mastery-soft);color:#8a6210}.select-pill-wrap{position:relative;display:inline-flex;align-items:center}.select-pill{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding:.4rem 2.1rem .4rem .9rem;border:1px solid var(--color-border);border-radius:999px;background-color:var(--color-primary-soft);color:var(--color-primary);font-size:.85rem;font-weight:600;font-family:inherit;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%232563eb' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center}.select-pill:hover{border-color:var(--color-primary);background-color:color-mix(in srgb,var(--color-primary-soft) 70%,var(--color-primary) 6%)}.select-pill:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.select-pill:disabled{cursor:default;opacity:.6}table{width:100%;border-collapse:collapse;font-size:.9rem}td,th{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--color-border)}th{color:var(--color-muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}tbody tr:hover{background:var(--color-card-bg)}@media (max-width:480px){table{display:block;overflow-x:auto;white-space:nowrap}}.site-footer{max-width:var(--page-max-width);margin:1rem auto 0;padding:1.25rem 1.5rem 2.5rem;border-top:1px solid var(--color-border);text-align:center;font-size:.85rem}.site-footer a{color:var(--color-muted);text-decoration:none}.site-footer a:hover{color:var(--color-primary)}.site-footer .footer-sep{margin:0 .5rem;color:var(--color-border)}.legal-page p{margin:.75rem 0}.legal-page ol,.legal-page ul{padding-left:1.4rem;margin:.5rem 0 1rem}.legal-page li{margin-bottom:.4rem}.news-ticker{max-height:220px;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card-bg);margin-bottom:.5rem}.news-ticker-item{display:flex;align-items:baseline;gap:.75rem;padding:.65rem 1rem;border-bottom:1px solid var(--color-border);text-decoration:none;color:inherit}.news-ticker-item:last-child{border-bottom:none}.news-ticker-item:hover{background:var(--color-primary-soft)}.news-ticker-date{flex:none;font-size:.8rem;color:var(--color-muted)}.news-ticker-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ticker-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);margin-bottom:.75rem}.ticker-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;padding:.5rem .9rem;font-size:1rem;font-weight:600;color:var(--color-muted);border:none;border-bottom:2px solid transparent;margin-bottom:-1px}.ticker-tab:hover{color:var(--color-fg)}.ticker-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.account-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.account-page-header h1{margin-bottom:0}.account-logout-btn{flex-shrink:0;padding:.45rem 1rem;font-size:.9rem}