:root{font-family:system-ui,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;color:#f7f8fc;background:#111827;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input{font:inherit}button{cursor:pointer;min-height:48px;border-radius:12px;border:2px solid #9baac1;padding:.6em 1em;background:#202e43;color:#fff}button:hover{background:#31435f}button:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:4px solid #80c6ff;outline-offset:3px}a{color:#a9d8ff}.shell{min-height:100vh;max-width:1700px;margin:auto;padding:clamp(12px,2vw,28px);display:flex;flex-direction:column;gap:12px}header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}h1{font-size:clamp(20px,2.5vw,32px);margin:0}.hint{font-size:clamp(13px,1.3vw,17px);color:#c7d5e5;margin:0}.top-actions{display:flex;flex-wrap:wrap;gap:8px}.signal-stage{flex:1;min-height:360px;background:#182235;border:2px solid #42536a;border-radius:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,3vh,28px);padding:clamp(15px,3vw,44px);text-align:center}.housing{width:min(95%,960px);background:linear-gradient(155deg,#313943,#080b0f 44%,#10161b);border:clamp(9px,1.5vw,19px) solid #020507;border-radius:clamp(30px,5vw,76px);box-shadow:0 18px 24px #0009,inset 0 3px 10px #64708070;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(8px,2.3vw,35px);padding:clamp(13px,2vw,30px)}.lamp{aspect-ratio:1;border-radius:50%;border:clamp(5px,1vw,13px) solid #050608;box-shadow:inset 0 5px 16px #000,inset 0 -3px 6px #ffffff14;background:radial-gradient(circle at 40% 32%,#503b42,#301a21 62%,#17171b)}.lamp[data-color=amber]{background:radial-gradient(circle at 40% 32%,#544626,#312614 62%,#17171b)}.lamp[data-color=green]{background:radial-gradient(circle at 40% 32%,#2e5045,#153729 62%,#17171b)}.lamp.is-on[data-color=red]{background:radial-gradient(circle at 38% 32%,#ffb3a5,#ff444a 42%,#af0920 74%,#590b13);box-shadow:0 0 35px #e63748aa,inset 0 2px 9px #ffe2cc}.lamp.is-on[data-color=amber]{background:radial-gradient(circle at 38% 32%,#fff4b4,#ffc335 42%,#aa6805 75%,#624111);box-shadow:0 0 35px #ffba30aa,inset 0 2px 9px #fff0ad}.lamp.is-on[data-color=green]{background:radial-gradient(circle at 38% 32%,#c8ffcf,#32e38b 42%,#078453 75%,#0a4c35);box-shadow:0 0 35px #26d88faa,inset 0 2px 9px #d7ffe1}.state{font-size:clamp(56px,10vw,170px);line-height:1.06;letter-spacing:-.045em;font-weight:900;margin:0}.state[data-color=red]{color:#ff9c9e}.state[data-color=amber]{color:#ffe08a}.state[data-color=green]{color:#9df2c5}.meaning{font-size:clamp(18px,2.7vw,38px);font-weight:700;margin:0}.remaining{font-size:clamp(15px,1.5vw,20px);color:#cbd5e1;min-height:1.5em}.controls{background:#202c40;border:1px solid #465872;border-radius:18px;padding:clamp(14px,2vw,24px)}.controls[hidden]{display:none}.controls h2{font-size:20px;margin:0 0 10px}.buttons{display:flex;flex-wrap:wrap;gap:12px}.buttons button{font-weight:800;font-size:clamp(18px,2vw,26px);min-width:clamp(120px,17vw,210px)}button[data-color=red]{background:#a5142a}button[data-color=amber]{background:#8c5704}button[data-color=green]{background:#126f48}button[aria-pressed=true]{border:4px solid #fff;box-shadow:0 0 0 3px #80c6ff}.settings{display:flex;flex-wrap:wrap;gap:14px;margin:12px 0}.settings label{display:grid;gap:5px}.settings input{width:105px;min-height:44px;padding:5px 9px;background:#111827;border:1px solid #abbcd2;border-radius:8px;color:#fff}#message{min-height:1.4em;color:#ffe08a}details{font-size:15px;line-height:1.65;color:#d5e1ef}details summary{cursor:pointer;font-weight:700}details p{margin:8px 0}.footer-nav{font-size:14px;display:flex;gap:16px;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:600px){.shell{padding:10px;gap:8px}.signal-stage{min-height:300px;padding:12px}.housing{width:100%;gap:6px;padding:9px}.buttons button{flex:1 1 130px}.state{font-size:clamp(56px,16vw,100px)}.hint{font-size:13px}}@media(max-height:540px) and (orientation:landscape){.shell{gap:6px}.signal-stage{min-height:190px;padding:8px;gap:5px}.housing{width:min(48vw,410px);padding:5px;border-width:6px}.lamp{border-width:4px}.state{font-size:clamp(36px,9vh,68px)}.meaning{font-size:18px}.controls{padding:8px}.controls h2{font-size:16px;margin:0 0 4px}.buttons button{font-size:16px;min-height:40px}.settings{margin:6px 0}.settings input{min-height:36px}details{font-size:13px}}