:root{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;color:#232c2a;background:#fff;font-size:16px;line-height:1.7;letter-spacing:0;--green:#087f69;--ink:#232c2a;--muted:#65716e;--line:#e0e8e4;--pale:#edf8f2;--pink:#f8e5ed;--yellow:#fff1c4;--blue:#e6f0fc}*{box-sizing:border-box}body{margin:0}button,a,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button{color:inherit}a{color:var(--green)}button:focus-visible,a:focus-visible{outline:3px solid #317bcb;outline-offset:4px}svg{width:22px;height:22px;stroke-width:1.8;flex-shrink:0;vertical-align:middle}h1,h2,h3,p{margin:0}h1{font-size:30px;line-height:1.5;font-weight:750;letter-spacing:0}h2{font-size:20px;line-height:1.6}h3{font-size:17px}button{touch-action:manipulation}.skip{position:fixed;left:12px;top:-100px;z-index:30;background:white;padding:12px}.skip:focus{top:12px}.topbar{height:84px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;background:#fff}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:16px;color:var(--ink);font-weight:750}.brand b{color:var(--green)}.brand-mark{width:42px;height:42px;background:var(--green);border-radius:8px;display:grid;place-items:center;color:white}.header-right{display:flex;align-items:center;gap:28px}.level{color:var(--muted);font-size:14px}.xp{display:flex;gap:8px;align-items:center;font-size:14px}.xp svg{color:#a77500}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);max-width:1500px;margin:auto;min-height:calc(100dvh - 84px)}.sidebar{border-right:1px solid var(--line);padding:32px 24px;display:flex;flex-direction:column;gap:48px}.sidebar nav{display:grid;gap:12px}.sidebar nav a{padding:12px 16px;color:var(--muted);text-decoration:none;display:flex;align-items:center;gap:14px;border-radius:6px;font-weight:650}.sidebar nav a[aria-current]{background:var(--pale);color:var(--green)}.badge{margin-left:auto;background:#f4ddea;color:#923359;font-size:12px;padding:0 7px;min-width:24px;text-align:center;border-radius:4px}.sidebar-progress{border-top:1px solid var(--line);padding:28px 8px}.eyebrow{font-size:12px;font-weight:700;color:var(--green)}.sidebar-progress h2{font-size:17px;margin:7px 0 16px}.sidebar-progress p{font-size:13px;color:var(--muted);margin-top:10px}progress{appearance:none;width:100%;height:8px;border:0;background:#eaf0ec;border-radius:8px;overflow:hidden;display:block}progress::-webkit-progress-bar{background:#eaf0ec;border-radius:8px}progress::-webkit-progress-value{background:var(--green);border-radius:8px}progress::-moz-progress-bar{background:var(--green);border-radius:8px}.mini-flow{display:flex;align-items:center;gap:8px;margin-top:32px;color:var(--green)}.mini-flow svg:nth-child(even){width:13px;color:#87928d}.sidebar footer{margin-top:auto;font-size:12px;color:var(--muted);padding:0 8px}main{min-width:0;padding:30px 42px 65px;outline:0}.lesson-top{display:flex;gap:20px;align-items:center;max-width:900px;margin:0 auto 42px}.icon-button{width:44px;height:44px;background:none;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;flex-shrink:0}.icon-button:hover{background:#f1f5f2}.lesson-progress{flex:1}.lesson-progress>div{display:flex;justify-content:space-between;margin-bottom:10px;font-size:12px;color:var(--muted);font-weight:650}.learning-grid{display:grid;grid-template-columns:minmax(0,610px) 205px;gap:48px;max-width:900px;margin:auto}.exercise{min-width:0}.topic{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:13px;margin-bottom:16px}.topic-icon{width:36px;height:36px;border-radius:6px;display:inline-grid;place-items:center;flex-shrink:0}.green{background:var(--pale);color:var(--green)}.pink{background:var(--pink);color:#a0446c}.yellow{background:var(--yellow);color:#89630c}.blue{background:var(--blue);color:#316ca7}.teaching{margin-top:16px;margin-bottom:30px;font-size:16px;color:#495550;line-height:1.95;overflow-wrap:anywhere}.question{font-size:20px;margin:26px 0 18px}.choices{display:grid;gap:12px}.choice{min-height:66px;display:flex;gap:15px;align-items:center;text-align:left;padding:13px 18px;background:white;border:2px solid var(--line);border-radius:8px;font-size:16px;line-height:1.6;width:100%;transition:background .12s,border-color .12s;overflow-wrap:anywhere}.choice>span:nth-child(2){flex:1;min-width:0}.choice:hover:not(:disabled){border-color:#90b9a5;background:#f9fcfa}.choice.selected{border-color:var(--green);background:var(--pale)}.choice.selected svg{color:var(--green)}.choice-letter{width:28px;height:28px;border:1px solid #ccd8d0;border-radius:5px;display:grid;place-items:center;font-size:13px;flex-shrink:0;background:white;color:var(--muted)}.choice.selected .choice-letter{background:var(--green);color:#fff;border-color:var(--green)}.code-window{background:#232d2a;color:#e7f5ee;border-radius:8px;overflow:hidden;margin:22px 0}.code-label{padding:9px 16px;border-bottom:1px solid #43524a;font-size:12px;display:flex;justify-content:space-between;color:#b7d0c4}.code-label svg{width:17px;height:17px}pre{margin:0;padding:18px 20px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.85}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:0}.assembly{display:grid;gap:6px;border-left:3px solid #ccd9d1;padding-left:12px;margin-bottom:18px}.placed,.empty-slot{min-height:50px;border:1px dashed #bdccc3;border-radius:6px;padding:9px 10px;display:flex;gap:9px;align-items:center;text-align:left;background:#f7faf8;width:100%}.placed{background:var(--pale);border:1px solid #a0c8b4}.placed code{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;flex:1;font-size:14px}.placed svg{width:16px;height:16px;color:var(--muted)}.line-number{font-family:ui-monospace,monospace;font-size:12px;color:#64796b;min-width:15px}.empty-slot{color:#9ba9a0}.block-bank{display:flex;gap:9px;flex-wrap:wrap;align-items:stretch}.code-block{background:white;border:1px solid #bfcfc5;border-bottom-width:3px;border-radius:6px;min-height:46px;padding:8px 12px;text-align:left;max-width:100%}.code-block code{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.code-block:disabled{opacity:.3}.code-block:hover:not(:disabled){background:var(--pale)}.text-button{background:none;border:none;padding:12px 4px;display:inline-flex;gap:7px;align-items:center;justify-content:center;color:var(--muted);font-size:14px;min-height:44px}.text-button:disabled{opacity:.4}.primary,.secondary{display:inline-flex;gap:12px;align-items:center;justify-content:center;min-height:52px;border-radius:7px;padding:12px 24px;line-height:1.5;font-size:16px;font-weight:650}.primary{background:var(--green);color:white;border:1px solid var(--green);border-bottom:4px solid #045c4c}.primary:hover:not(:disabled){background:#066c59}.primary:disabled{background:#e4eae6;border-color:#e4eae6;color:#839088}.secondary{border:1px solid #bfcec5;background:white;font-size:14px}.answer-bar{border-top:1px solid var(--line);margin-top:26px;padding-top:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.answer-bar>.primary:only-child{margin-left:auto;min-width:175px}.feedback-zone:not(:empty){margin-top:24px}.feedback,.hint{padding:18px 20px;background:var(--pale);border-left:4px solid var(--green);border-radius:0 6px 6px 0}.feedback.retry,.hint{background:#fff6d9;border-color:#bd8c11}.feedback-title{display:flex;gap:10px;align-items:center;color:#096950}.feedback.retry .feedback-title{color:#77590c}.feedback p,.hint p{font-size:15px;margin-top:8px}.lesson-note{border-left:1px solid var(--line);padding-left:24px;align-self:start;margin-top:12px}.note-heading{display:flex;gap:8px;align-items:center;color:var(--green);font-size:13px;font-weight:700}.note-heading svg{width:17px}.lesson-note>p{font-size:14px;line-height:1.9;margin-top:16px;color:var(--muted)}.concept-diagram{display:grid;justify-items:center;gap:10px;margin:32px 0 26px}.concept-diagram>div{display:flex;align-items:center;justify-content:flex-start;gap:12px;border-bottom:1px solid var(--line);padding:10px 5px;width:120px;font-size:14px}.concept-diagram>div:nth-of-type(1) svg{color:#367bb6}.concept-diagram>div:nth-of-type(2) svg{color:var(--green)}.concept-diagram>div:nth-of-type(3) svg{color:#ad5077}.concept-diagram>svg{height:16px;color:#96a69b}.quiet{color:var(--muted);font-size:13px;line-height:1.8}.page-heading{max-width:900px;margin:8px auto 34px}.page-heading h1{margin-top:8px}.page-heading p{margin-top:10px;color:var(--muted);font-size:15px}.section-label{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:900px;margin:0 auto 14px}.section-label h2{font-size:18px}.section-label span{font-size:13px;color:var(--muted)}.lesson-list{max-width:900px;margin:auto;border-top:1px solid var(--line)}.lesson-row{display:flex;align-items:center;gap:16px;width:100%;background:white;border:0;border-bottom:1px solid var(--line);padding:20px 4px;text-align:left;min-height:92px}.lesson-row:hover{background:#f7fbf8}.unit-marker{height:48px;width:48px;display:grid;place-items:center;border-radius:8px;font-size:17px;font-weight:700;flex-shrink:0}.lesson-title{display:grid;gap:4px;flex:1;min-width:0}.lesson-title strong{font-size:17px}.lesson-title small{font-size:13px;color:var(--muted)}.lesson-count{font-size:13px;color:var(--muted);flex-shrink:0}.lesson-row>svg{width:18px;color:#8c9d92}.next-stages,.data-section{max-width:900px;margin:40px auto 0;border-top:1px solid var(--line);padding-top:28px}.next-stages ol{padding-left:25px;display:grid;gap:20px}.next-stages li{padding-left:6px}.next-stages li span{display:block;color:var(--muted);font-size:14px}.completion{max-width:600px;margin:45px auto;text-align:center}.completion-icon{display:grid;place-items:center;margin:auto auto 24px;width:90px;height:90px;background:var(--yellow);color:#967012;border-radius:50%}.completion-icon svg{height:42px;width:42px}.completion h1{margin:10px 0 16px}.completion>p:not(.eyebrow){color:var(--muted)}.result-stats{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--line);margin:32px 0}.result-stats>div{display:grid;gap:6px;padding:24px 8px}.result-stats>div+div{border-left:1px solid var(--line)}.result-stats strong{font-size:32px;color:var(--green)}.result-stats strong small,.progress-stats small{font-size:16px;color:var(--muted)}.result-stats span{font-size:13px;color:var(--muted)}.completion-note{margin:22px 0;font-size:15px}.completion>.primary{display:flex;margin:24px auto 8px}.review-summary{max-width:900px;margin:0 auto;padding:24px 0 34px;border-bottom:1px solid var(--line)}.review-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:8px;background:var(--pink);color:#a0446c;margin-bottom:18px}.review-summary p{margin:12px 0 22px;color:var(--muted)}.review-list{max-width:900px;margin:20px auto}.review-list>div{display:flex;gap:14px;padding:18px 0;border-bottom:1px solid var(--line)}.review-list small{font-size:13px;color:var(--muted)}.review-list p{font-size:15px;margin-top:4px}.progress-stats{display:grid;grid-template-columns:repeat(3,1fr);max-width:900px;margin:auto;border-block:1px solid var(--line);padding:24px 0}.progress-stats>div{display:grid;gap:8px;padding:0 22px}.progress-stats>div:first-child{padding-left:0}.progress-stats>div+div{border-left:1px solid var(--line)}.progress-stats svg{color:var(--green)}.progress-stats strong{font-size:32px;line-height:1.6}.progress-stats span{font-size:13px;color:var(--muted)}.data-section p{font-size:15px;color:var(--muted);margin:15px 0}.data-actions{display:flex;gap:14px;flex-wrap:wrap}.data-section h3{margin-top:30px}.sources{padding-left:18px;font-size:14px;display:grid;gap:12px}.sources a{text-decoration-thickness:1px;text-underline-offset:4px}.sources svg{width:14px;height:14px;margin-left:8px}.storage-alert{padding:14px;background:var(--yellow);font-size:14px;margin-bottom:20px}.mobile-nav{display:none}@media(min-width:1500px){.topbar{padding-inline:max(42px,calc((100% - 1416px)/2))}}@media(max-width:1100px){.learning-grid{grid-template-columns:minmax(0,1fr);max-width:650px}.lesson-note{display:none}.layout{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding-inline:16px}main{padding-inline:32px}}@media(max-width:700px){.topbar{height:64px;padding:0 18px}.brand{font-size:13px;gap:8px}.brand-mark{height:34px;width:34px}.brand-mark svg{height:22px;width:22px}.header-right{gap:8px}.level{display:none}.xp{gap:5px;font-size:12px}.xp svg{width:18px}.layout{display:block;min-height:calc(100dvh - 64px)}.sidebar{display:none}main{padding:22px 20px calc(110px + env(safe-area-inset-bottom))}.lesson-top{margin-bottom:27px;gap:14px}.icon-button{width:38px;height:38px}.learning-grid{display:block}h1{font-size:25px}.topic{font-size:12px;margin-bottom:13px}.teaching{font-size:16px;margin-top:12px;margin-bottom:24px;line-height:1.9}.question{font-size:19px;margin-top:24px}.choice{min-height:62px;font-size:15px;gap:10px;padding:12px}.choice-letter{width:25px;height:25px}.answer-bar{margin-top:24px}.primary{padding-inline:18px}.mobile-nav{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);background:#fff;padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:10}.mobile-nav a{position:relative;display:grid;justify-items:center;gap:2px;font-size:12px;color:var(--muted);text-decoration:none;padding:2px 0}.mobile-nav a[aria-current]{color:var(--green);font-weight:700}.mobile-nav svg{width:22px;height:22px}.mobile-nav .badge{position:absolute;top:-4px;left:55%;font-size:11px;padding:0 5px;min-width:19px}.page-heading{margin-top:8px;margin-bottom:27px}.page-heading h1{font-size:25px}.section-label{align-items:flex-start;flex-direction:column;gap:4px}.lesson-row{gap:12px;padding:17px 0}.unit-marker{width:42px;height:42px;font-size:15px}.lesson-title strong{font-size:16px}.lesson-title small{font-size:12px}.lesson-row>svg{width:15px}.completion{margin:22px auto}.completion h1{font-size:24px}.progress-stats{padding:22px 0;gap:10px}.progress-stats>div{padding:0 0 0 10px}.progress-stats strong{font-size:27px}.progress-stats span{font-size:12px}.progress-stats small{font-size:12px}.data-actions{display:grid;grid-template-columns:1fr}.data-actions button{width:100%}.code-block code,.placed code{font-size:13px}.code-window pre{font-size:14px;padding:16px}.feedback,.hint{padding:16px}.feedback p,.hint p{font-size:14px}.result-stats{margin:25px 0}.next-stages{margin-top:30px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media(max-width:360px){main{padding-inline:14px}.brand{font-size:12px}.choice{font-size:14px}.primary{font-size:15px}.xp{font-size:11px}.progress-stats strong{font-size:24px}}
