:root{font-family:"Microsoft JhengHei","Noto Sans TC",sans-serif;color:#14243b;background:#f3f7fb}*{box-sizing:border-box}body{margin:0}nav{height:68px;background:#102b4e;color:#fff;padding:0 5%;display:flex;align-items:center;gap:24px}nav span{margin-left:auto;color:#b9d3e9}button{border:0;border-radius:8px;padding:11px 18px;background:#087e9e;color:#fff;font-weight:700;cursor:pointer}nav button{background:#274b70}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#102b4e,#0d718b)}.login section{background:white;padding:44px;border-radius:20px;width:min(420px,90%);box-shadow:0 24px 60px #08203955}.brand{font-size:13px;letter-spacing:3px;color:#087e9e}.brand b{color:#102b4e}.login h1{font-size:28px}.login p{color:#61758d}.login label{display:block;margin:18px 0;font-weight:700}.login input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid #cad7e4;border-radius:7px;font-size:16px}.login button{width:100%;margin-top:8px}.login small{display:block;color:#c43d3d;margin-top:14px}.wrap{max-width:1180px;margin:40px auto;padding:0 24px}header{display:flex;justify-content:space-between;align-items:center}.eyebrow{color:#087e9e;font-size:12px;letter-spacing:2px;font-weight:700}h1{font-size:34px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:30px 0}.stats div,article,.practice{background:#fff;border:1px solid #dbe6ef;border-radius:14px;padding:22px}.stats b{font-size:30px;display:block;color:#087e9e}.stats span{color:#718399}.chapters{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.chapter-no{color:#087e9e;font-weight:700}.chapters h3{margin:12px 0 7px}.chapters p{color:#687b90;min-height:42px}.practice{margin-top:30px}.options{display:grid;gap:10px;max-width:700px}.options button{background:#fff;color:#14243b;text-align:left;border:1px solid #cbd9e5}.options button:hover{border-color:#087e9e;background:#edfafd}pre{background:#12233a;color:#d4e8ef;padding:18px;border-radius:8px;overflow:auto}.feedback{margin-top:20px;padding:16px;border-radius:8px}.feedback.ok{background:#dff7ed;color:#125b41}.feedback.bad{background:#fff0ed;color:#8c3028}@media(max-width:600px){.stats{grid-template-columns:1fr}.wrap{margin:22px auto}nav{padding:0 20px}nav strong{font-size:13px}nav span{font-size:12px}}
.layout{display:flex}aside{width:220px;flex-shrink:0;background:#fff;min-height:calc(100vh - 68px);padding:24px 16px;border-right:1px solid #dbe6ef}aside button{display:block;width:100%;background:transparent;color:#435b74;text-align:left;margin:5px 0}aside button:hover{background:#edf7fb;color:#087e9e}.layout .wrap{flex:1;width:100%;margin:30px auto}label{display:block;margin:14px 0}input,select,textarea{font:inherit;border:1px solid #cad7e4;border-radius:6px;padding:10px;max-width:100%}form>label input,form>label select,textarea{display:block;margin-top:6px}textarea{width:100%;font-family:Consolas,monospace}form{background:#fff;padding:20px;border-radius:12px;margin:20px 0}.options label{padding:14px;border:1px solid #cbd9e5;border-radius:8px;cursor:pointer}input[type=radio]{display:inline}table{border-collapse:collapse;width:100%;background:#fff}th,td{text-align:left;padding:12px;border-bottom:1px solid #dbe6ef}th{color:#435b74}.table-scroll{overflow:auto}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e8a433;outline-offset:3px}code,pre,textarea{font-family:"Cascadia Code",Consolas,monospace;font-variant-ligatures:none}#question-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:20px 0}@media(max-width:760px){.layout{display:block}aside{min-height:auto;width:100%;display:flex;flex-wrap:wrap;padding:8px}aside button{width:auto;font-size:12px}aside p,aside hr{display:none}}
progress{width:100%;height:10px;accent-color:#087e9e}article progress{margin:5px 0 10px}
input[type=file]{display:block;margin-top:8px}
.pdf-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}.pdf-columns iframe{width:100%;height:650px;border:1px solid #cad7e4}.pdf-columns pre{white-space:pre-wrap}@media(max-width:760px){.pdf-columns{grid-template-columns:1fr}}
.order-item{display:flex;align-items:center;gap:10px;background:#edf7fb;padding:14px;margin:8px 0;border-radius:8px}.order-item code{flex:1;white-space:pre-wrap}.order-item button{min-width:44px;min-height:44px}button:disabled{opacity:.5;cursor:not-allowed}
.pdf-page-image{display:block;max-width:100%;max-height:600px;border:1px solid #cad7e4;margin:8px 0;object-fit:contain}
