:root{font-family:'Yu Gothic UI','Meiryo',system-ui,sans-serif;color:#e4e9df;background:#14201c;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}button,select{padding:9px 13px;border:1px solid #52675a;border-radius:5px;background:#263a2e;color:#e5ecdc}button:hover{background:#3b5140}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,select:focus-visible{outline:3px solid #e0ed9c;outline-offset:3px}.primary{background:#c7e499;color:#1c2d20;border-color:#c7e499;font-weight:700}.primary:hover{background:#dfefbf}.danger{color:#ffcaaf}header{padding:20px 3%;border-bottom:1px solid #3d5144;display:flex;align-items:center;gap:25px;justify-content:space-between;background:#1a2d23}header small,.eyebrow{letter-spacing:2px;font-size:10px;color:#a8b89f}h1{font-size:25px;letter-spacing:3px;margin:4px 0;font-weight:600}h1 span{font-size:13px;color:#a7b69f;letter-spacing:1px}main{max-width:1800px;margin:auto;padding:22px 3%}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.clock{font:27px ui-monospace,monospace;color:#e2edb5;min-width:145px}.badge{padding:5px 10px;border:1px solid #526a50;border-radius:3px;font-size:12px;color:#c9dcae}.brief{display:grid;grid-template-columns:1fr auto;gap:22px;margin-bottom:18px;align-items:center}.brief h2{font-size:18px;margin:7px 0}.muted{color:#9fb3a0;font-size:13px;line-height:1.7}.brief .metrics{display:flex;gap:28px}.metric strong{display:block;font:23px ui-monospace,monospace;color:#e0eabc}.metric small{font-size:11px;color:#9eaf98}.layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.console{background:#6a7270;border:9px solid #acb7aa;border-radius:8px;box-shadow:0 10px 0 #344239,0 20px 30px #0003;min-width:0;overflow:hidden}.consolehead{padding:12px 16px 0;display:flex;justify-content:space-between;color:#f0edd6;font-size:13px;font-weight:600}.diagramwrap{overflow:auto;scrollbar-color:#b9c1ac #4c5852}.diagram{width:100%;min-width:1030px;display:block}.consolefoot{padding:13px 17px;background:#536259;color:#f0f0d9;min-height:62px;font-size:13px;line-height:1.6;border-top:1px solid #95a38c}.consolefoot b{color:#fff6ad}.rail{fill:none;stroke:#e1e6da;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.rail.reserved{stroke:#fff7ac;stroke-width:7}.rail.occupied{stroke:#ff7761;stroke-width:8}.track-label{fill:#eeefdc;font-size:14px}.tiny{fill:#e1e5d0;font-size:11px}.platform{fill:#acb4a6;stroke:#e1e7d4;stroke-width:1}.platform-label{fill:#344a3c;font-size:15px;font-weight:700}.signal{stroke:#374439;stroke-width:2}.post{stroke:#e1e4d3;stroke-width:2}.rotor-wrap{width:70px;text-align:center;color:#f4f1d6}.rotor{position:relative;display:block;width:60px;height:65px;border:0;padding:0;margin:0 auto;background:transparent;border-radius:50%}.rotor:hover{background:#ffffff12}.rotor .base{position:absolute;top:31px;left:18px;width:27px;height:27px;border-radius:35%;background:conic-gradient(#dde2d1,#697267,#e7e8d9,#566358,#dde2d1);box-shadow:3px 5px 3px #28382c88}.rotor .handle{position:absolute;top:4px;left:20px;width:23px;height:46px;transform-origin:11px 38px;border-radius:4px 5px 12px 12px;background:linear-gradient(90deg,#912b24,#e34d3e 60%,#b82b24);box-shadow:4px 6px 3px #23312460;transition:transform .2s}.rotor .disc{position:absolute;left:-5px;top:23px;width:33px;height:29px;border:4px solid #d33f34;border-radius:50%;background:#17251d;color:#fffbe7;font:italic 16px Georgia,serif;display:grid;place-items:center}.rotor.point .handle{background:linear-gradient(90deg,#b6bdae,#f4f3e5 60%,#cbd0c0)}.rotor.point .disc{border-color:#e2e5d7}.rotor.reverse .handle{transform:rotate(55deg)}.rotor.left.reverse .handle{transform:rotate(-55deg)}.rotor.locked:after{content:'鎖錠';position:absolute;right:-5px;bottom:-1px;font-size:9px;color:#fff7c0;background:#344336e8;border-radius:3px;padding:0 3px}.rotor.moving .handle{animation:move .45s alternate infinite}.rotor.moving:after{content:'転換中';color:#fff3a5;font-size:9px;position:absolute;bottom:0;left:0;right:0}@keyframes move{from{opacity:.5}to{opacity:1}}.rotor-label{font-size:10px;line-height:1.25;white-space:nowrap;text-shadow:0 1px #364539}.rotor-label em{font-style:normal;color:#fff4af}.side{background:#1c3024;border:1px solid #435e46;border-radius:7px;padding:17px;min-width:0}h2{font-size:16px;margin:0 0 13px}h3{font-size:13px;color:#bdcdae;margin:17px 0 8px}.traincard{padding:11px;border:1px solid #49634b;border-radius:5px;margin:9px 0;background:#233e2b}.traincard.selected{border-color:#d4eb9d;box-shadow:inset 3px 0 #c9e68c}.traincard strong{font-size:14px}.kind{font-size:10px;padding:2px 6px;border-radius:3px;background:#47705d;color:#e8f4df;margin-right:5px}.kind.express{background:#73562b}.kind.limited{background:#795041}.traincard p{font-size:12px;line-height:1.7;color:#bed0b3;margin:6px 0}.traincard button{padding:4px 9px;font-size:11px}.empty{font-size:13px;color:#94ab92;padding:18px 0}.below{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;margin-top:28px}.card{padding:19px;background:#1c3024;border:1px solid #425b44;border-radius:7px;min-width:0}.tablewrap{overflow:auto;max-height:350px}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px}th,td{padding:10px 9px;border-bottom:1px solid #3b5140;text-align:left}th{position:sticky;top:0;background:#29402d;color:#c9d7b8;font-weight:500;z-index:1}.late{color:#ffbb91}.good{color:#c8e19d}.selectedrow{background:#3a4c2e}.logs{font:11px/1.9 ui-monospace,monospace;height:190px;overflow:auto;color:#adbf9f}.lockrow{font-size:12px;line-height:1.8;border-bottom:1px solid #3d543e;padding:6px 0}.locks{max-height:150px;overflow:auto}.modal{position:fixed;inset:0;background:#0c1811e8;z-index:20;display:grid;place-items:center;overflow:auto;padding:24px}.modalbox{width:min(760px,100%);background:#223a29;border:1px solid #77915f;border-radius:12px;padding:30px;box-shadow:0 20px 90px #0006;max-height:94vh;overflow:auto}.modalbox h2{font-size:30px;letter-spacing:2px;margin:9px 0 15px}.modalbox p{color:#bacbaa;font-size:14px;line-height:1.9}.modechoices{display:flex;gap:12px;margin:24px 0}.modechoices button{flex:1;text-align:left;padding:16px}.modechoices button strong{display:block;font-size:22px;margin-bottom:7px}.modechoices button.active{background:#416138;border:1px solid #def1a9}.modechoices small{font-size:11px;color:#c8d7b9}.modalbox .primary{width:100%;padding:14px;font-size:16px}.instruction{background:#182c1d;border-left:3px solid #b9cf87;padding:14px;font-size:13px;line-height:1.8;color:#d1dfbd}.grade{font:80px Georgia,serif;color:#e5efa5;line-height:1}.resulthead{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.resultsgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.resultmetric{background:#172b1c;padding:14px;border-radius:5px}.resultmetric b{display:block;font-size:23px;color:#dcebb6}.resultmetric small{color:#acbd9d;font-size:11px}.resulttable{max-height:260px}.resultactions{display:flex;gap:10px;margin-top:20px}.resultactions button{flex:1}details{margin-top:20px;padding:16px;border-top:1px solid #465e45;color:#b6c8aa;font-size:13px;line-height:1.9}summary{cursor:pointer;color:#d9e4ca}footer{font-size:11px;color:#95aa8c;padding:24px 0}a{color:#d7e9aa}.toast{color:#fff1b2}.hintline{font-size:12px;line-height:1.9;color:#d7e6c2}.zoom{font-size:10px;padding:3px 7px;color:#eff1d9;background:#56685a} .diagram.fit{min-width:0}@media(max-width:1200px){.layout{grid-template-columns:minmax(0,1fr) 250px}.consolehead{font-size:11px}}@media(max-width:1000px){.layout{grid-template-columns:1fr}.side{display:grid;grid-template-columns:1fr 1fr;gap:14px}.below{grid-template-columns:1fr}.brief{grid-template-columns:1fr}.diagram{min-width:1080px}}@media(max-width:600px){header{align-items:flex-start;flex-direction:column;padding:15px;gap:10px}main{padding:15px}.clock{font-size:23px}.brief .metrics{gap:17px}.side{display:block}.console{border-width:5px}.consolehead{padding:10px;gap:12px}.consolehead span:last-child{display:none}.resultsgrid{grid-template-columns:repeat(2,1fr)}.modalbox{padding:20px}.modalbox h2{font-size:23px}.modechoices{gap:7px}.modechoices button{padding:10px}.modechoices button strong{font-size:18px}.metric strong{font-size:19px}.modal{padding:12px}}

/* Review: narrow paddle stems, contained numerals and clear timetable state. */
.rotor .handle{left:23px;width:17px;transform-origin:8.5px 38px}.rotor .disc{left:-6px;width:29px;height:27px;border-width:3px;font-size:14px;line-height:1;white-space:nowrap;overflow:hidden}.rotor-label{font-size:9px}.rotor-label b{font-size:10px;color:#fcf8de;font-weight:600}.late{color:#ff8580!important;font-weight:600}.finishedrow{color:#8c9b90;background:#19271e}.finishedrow td{border-color:#35473a}.finishedrow .kind{background:#475049;color:#a7b0a8}.finishedrow .good,.finishedrow .muted{color:#8c9b90}.finishedrow .eventstatus{color:#a8b6a1}.eventstatus{font-size:11px;white-space:nowrap}.finishedrow.selectedrow{background:#233228}

.aspectlegend{display:flex;gap:18px;flex-wrap:wrap;padding:12px 18px 0;font-size:10px;color:#b9e4e8}.aspectlegend span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--aspect);margin-right:5px}.signalcode{font-size:9px;font-weight:600;paint-order:stroke;stroke:#112d3e;stroke-width:2px}.switchblade{stroke:#b9e4e8;stroke-width:4;stroke-linecap:round;fill:none}.switchblade.reverse{stroke:#f3d866}.switchblade.moving{stroke:#f4a34c;opacity:.7}.rotor-label{font-variant-numeric:tabular-nums}@media(max-width:600px){.aspectlegend{gap:8px;padding:10px;font-size:9px}}
