:root{--navy:#0b2b43;--blue:#1273b9;--cyan:#22a7c7;--orange:#f59e0b;--green:#11875d;--red:#b94040;--ink:#163a5f;--muted:#627d98;--line:#d6e4ef;--bg:#edf5fa;--card:#fff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px Arial,sans-serif}.layout{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.side{position:sticky;top:0;height:100vh;overflow:auto;padding:14px;background:#f8fbfd;border-right:1px solid var(--line)}button,select,input{font:inherit}.back-btn{width:100%;padding:12px;border:0;border-radius:9px;background:#08783f;color:#fff;font-weight:800;box-shadow:0 0 0 2px #32e574}.course-note{margin:12px 0;padding:10px;text-align:center;border:1px solid #adc4d4;border-radius:8px;line-height:1.5}.side hr{border:0;border-top:1px solid #aac0cf;margin:14px 0}.side>b{display:block;text-align:center;font-size:12px;text-transform:uppercase;color:#526d82}#timer{margin:8px 0;padding:12px;text-align:center;background:#142632;color:#d9ff16;border-radius:9px;font:bold 24px monospace}.timer-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.timer-buttons button,.side .danger{padding:9px;border:0;border-radius:8px;background:#6c9ac0;color:#fff;font-weight:bold}.side .danger{width:100%;margin-top:12px;background:#a94a4a}.side nav{display:grid;gap:5px;margin-top:8px}.side nav button{padding:9px;text-align:left;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ink)}.side nav button.active{background:#dcecf8;border-color:#9fc6e3;font-weight:bold}.side nav button.done:after{content:'✓';float:right;color:var(--green)}.progress{margin-top:12px;font-size:12px}.progress strong{float:right}.progress i{display:block;height:7px;margin-top:8px;background:#dbe7ee;border-radius:5px;overflow:hidden}.progress em{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--cyan))}main{min-width:0;padding:18px 24px 32px}.hero{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:20px 24px;background:var(--navy);color:#fff;border-bottom:3px solid var(--orange);border-radius:14px}.hero span,.block-head small{font-weight:bold;color:#55c7e4}.hero h1{margin:5px 0;font-size:30px}.hero p{margin:0;color:#c9dce8}.score{min-width:110px;text-align:center;padding:12px;background:#123c59;border-radius:10px}.score small,.score span{display:block}.score strong{display:block;font-size:24px;margin:4px}.safety{margin:14px 0;padding:12px 16px;border-left:4px solid var(--orange);background:#fff5dc;border-radius:8px}.block{padding:20px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 7px 24px #1233}.block-head{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:12px}.block-head h2{margin:4px 0;font-size:25px}.status{padding:8px 11px;border-radius:20px;background:#edf2f5;color:#668}.status.done{background:#dff5e9;color:#08784d}.cols,.drawing,.machine-grid,.thread-layout,.final-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card,.part-view,.hole-stage,.thread-card,.scrape,.rough,.inspection{padding:18px;border:1px solid var(--line);border-radius:12px;background:#f9fcfe}.card h3{margin-top:0}.card label{display:grid;gap:6px;margin:0 0 13px;font-weight:bold}.card select,.card input{width:100%;padding:10px;border:1px solid #bcd1df;border-radius:7px;background:white}.primary,.secondary,.ops button,.scrape button,.rough button{padding:10px 14px;border:0;border-radius:8px;font-weight:bold;cursor:pointer}.primary{background:var(--blue);color:white}.secondary{background:#dceaf4;color:var(--ink)}.info{background:#eef8fc}.feedback{display:none;margin-top:14px;padding:13px;border-radius:8px}.feedback.show{display:block}.feedback.ok{background:#e2f5eb;color:#08734b;border-left:4px solid var(--green)}.feedback.bad{background:#fde8e7;color:#922;border-left:4px solid var(--red)}#sequence{display:grid;gap:6px;margin-bottom:12px}#sequence select{padding:9px;border:1px solid #c5d6e2;border-radius:7px}.part{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:3px solid #527b98;border-radius:30px;background:linear-gradient(145deg,#edf3f6,#bed1dc);box-shadow:inset -10px -10px 20px #91a9b7}.part span{letter-spacing:4px}.part b{font-size:50px;margin:16px}.part em{font-size:24px;color:#b34b1e}.dim{margin-top:18px;padding:10px 18px;background:#173b58;color:#fff;border-radius:8px}.part-view{display:grid;grid-template-columns:120px 1fr;align-items:center;min-height:350px}.tolerance-scale{position:relative;height:260px;border-left:4px solid #8ca9bb;margin-left:55px}.zone{position:absolute;left:-22px;top:75px;width:40px;height:100px;background:#75dfa9;border:2px solid #16845b}.limit{position:absolute;left:30px;font-weight:bold}.max{top:70px}.min{top:170px}.tolerance-scale i{position:absolute;left:-42px;top:15px;width:80px;height:4px;background:var(--orange);transition:top .3s}.tolerance-scale i:before{content:'';position:absolute;right:0;top:-6px;border:8px solid transparent;border-right-color:var(--orange)}.workpiece{height:210px;border-radius:18px;background:repeating-linear-gradient(90deg,#b7cad5 0 8px,#d8e3e9 8px 16px);border:4px solid #466c85;display:grid;place-items:center;transition:transform .3s}.workpiece span{padding:13px;background:#0d3048;color:white;border-radius:8px;font:bold 24px monospace}.ops{display:grid;gap:8px;margin:12px 0}.ops button,.scrape button,.rough button{background:#d9eaf6;color:#173b5f}.history{margin-top:12px;padding:10px;background:#f2f7fa;border-radius:8px;font-family:monospace}.hint{color:var(--muted);font-size:12px}.hole-stage{text-align:center;min-height:300px;display:grid;place-items:center}.hole{width:190px;height:190px;border-radius:50%;background:#a9becb;box-shadow:inset 0 0 0 8px #698598;transition:.3s}.hole.mark{box-shadow:inset 0 0 0 8px #698598,0 0 0 4px #f5a623}.hole.drill{background:#132c3b;transform:scale(.65)}.hole.countersink{box-shadow:inset 0 0 0 25px #708b9d}.hole.ream{transform:scale(.82);border:5px solid #55d1a0;background:#0d2431}.thread-card{text-align:center}.thread-card strong{display:block;font-size:54px;margin:18px}.thread-visual{height:90px;background:repeating-linear-gradient(135deg,#3d6078 0 7px,#c8dae4 7px 14px);border-radius:18px}.finish-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}#spotGrid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;aspect-ratio:1;padding:10px;background:#d6dde2}#spotGrid i{border-radius:50%;background:#eef3f6}#spotGrid i.on{background:#1f5270;box-shadow:0 0 0 2px #6fd2e7}.surface{height:140px;display:flex;gap:12px;align-items:center;overflow:hidden;background:#d7e4eb;padding:15px}.surface i{width:4px;height:100px;background:#597c93;transform:rotate(18deg)}.rough button{margin:4px}.inspection{display:grid;gap:8px}.inspection div{display:flex;justify-content:space-between;padding:10px;background:white;border-radius:8px}.inspection .ok{color:var(--green)}.pager{display:flex;justify-content:space-between;align-items:center;margin-top:14px}.pager button{padding:10px 16px;border:0;border-radius:8px;background:var(--blue);color:#fff;font-weight:bold}.pager span{color:var(--muted);font-size:12px}@media(max-width:1000px){.layout{grid-template-columns:1fr}.side{position:relative;height:auto}.side nav{grid-template-columns:repeat(3,1fr)}.cols,.drawing,.machine-grid,.thread-layout,.final-grid,.finish-grid{grid-template-columns:1fr}.hero{align-items:flex-start}.part-view{grid-template-columns:100px 1fr}}@media(max-width:600px){main{padding:10px}.side nav{grid-template-columns:1fr 1fr}.hero h1{font-size:23px}.score{display:none}}
