.duel-shell{grid-template-columns:1fr}.duel-shell .sidebar{display:none}.duel-shell .main-content{max-width:none}
.duel-layout{display:grid;grid-template-columns:minmax(330px,.85fr) minmax(0,1.25fr);gap:24px;align-items:start}
.duel-layout .duel-primary{display:flex;flex-direction:column;gap:18px;min-width:0}
.duel-layout .duel-secondary{display:block;min-width:0;position:sticky;top:22px}
.duel-layout .scoreboard{grid-template-columns:minmax(0,1fr) 57px minmax(0,1fr);padding:16px 10px;gap:3px;margin:0;order:initial}
.duel-layout .score-side{padding:8px 5px}.duel-layout .score-number{font-size:clamp(64px,6vw,96px);font-weight:750;line-height:1.05;margin:17px 0 10px}.duel-layout .score-side .player-name{font-size:12px;gap:6px}.duel-layout .score-side .avatar{width:24px;height:24px;font-size:9px}.duel-layout .score-side>.small{font-size:8px}.duel-layout .turn-note{font-size:9px}.duel-layout .legs-value{font-size:24px}.duel-layout .legs-center .eyebrow{font-size:8px}.duel-layout .legs-center .badge{font-size:8px}
.duel-layout .entry-card{padding:21px;order:initial}.duel-layout .entry-card .turn-state{margin:9px 0 16px;font-size:11px}.duel-layout .entry-card .score-entry-row{display:grid;grid-template-columns:minmax(70px,1fr) minmax(135px,1.5fr);align-items:stretch;gap:10px}.duel-layout .entry-card .score-input{height:59px!important;font-size:35px!important}.duel-layout .score-entry-row>.btn{min-width:0;font-size:12px;padding:11px}.duel-layout .quick-scores{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:11px 0 0;gap:6px}.duel-layout .quick-scores button{min-height:30px;font-size:11px}.keypad-details{margin-top:14px}.keypad-details summary{font-size:10px;color:#7c8971;cursor:pointer;padding:4px 0}.duel-layout .keypad-details .keypad{display:grid;margin:12px 0 0}.duel-layout .entry-card .stats-strip{padding-top:13px;margin-top:15px}.duel-layout .entry-card .stat strong{font-size:17px}.duel-layout .entry-card .undo-btn{margin-top:10px}.duel-layout .ready-list .avatar{width:32px;height:32px;font-size:11px}
.duel-layout .history-card{padding:20px;margin:0;order:initial}.duel-layout .history-card h2{margin:0;font-size:15px}.duel-layout .history-card .section-heading{margin-bottom:13px}.duel-layout .history-card .section-heading>.tiny{font-size:9px;white-space:nowrap}.duel-layout .visit-list{display:block;max-height:360px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.visits-table{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;font-variant-numeric:tabular-nums}.visits-table thead{position:sticky;top:0;z-index:1;background:white}.visits-table th{font-size:11px;text-align:center;font-weight:650;padding:10px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visits-table th:first-child{width:27px;color:#8e9980;font-size:9px;font-weight:400}.visits-table .visit-row{display:table-row;padding:0;font-size:12px}.visits-table .visit-row>td,.visits-table .visit-row>th{border-bottom:1px solid #edf0e6;padding:11px 4px}.visits-table .visit-cell{text-align:center;white-space:nowrap;border-left:1px solid #edf0e6}.visits-table .visit-value{font-size:16px;color:#7b876c;display:inline-block;min-width:24px;text-align:right}.visits-table .visit-arrow{font-size:9px;color:#b2baa3;margin:0 4px}.visits-table .visit-rest{font-size:20px;font-weight:650;display:inline-block;min-width:29px;text-align:left}.visits-table .bust-visit .visit-value{font-size:11px;color:#b35e4c}.visits-table .finish-visit{background:#f3f8e7}.visits-table .finish-visit .visit-rest{color:#568438}.visits-table .empty-visit{color:#c0c7b6}.visits-table .leg-separator th{text-align:left;background:#f5f7ef;color:#7a8969;font-size:9px;padding:9px 7px;white-space:normal;width:auto;font-weight:500}.history-empty{font-size:11px;color:#95a087;text-align:center;padding:23px 10px;line-height:1.7}
.duel-layout .opponent-stage{aspect-ratio:4/3;min-height:280px;max-height:calc(100dvh - 250px);border-radius:18px;width:100%}.duel-layout .opponent-stage .video-label{font-size:12px;left:17px;top:16px;padding:7px 10px}.duel-layout .opponent-stage .video-label svg{width:19px;height:19px}.duel-layout .opponent-stage .video-status{left:17px;bottom:16px;right:17px}.duel-layout .opponent-stage .video-status .badge{font-size:10px}.duel-layout .opponent-stage .video-empty{gap:14px}.duel-layout .opponent-stage .video-empty svg{width:42px;height:42px}.duel-layout .opponent-stage .video-empty p{font-size:13px;max-width:260px}.media-bottom{display:flex;align-items:flex-start;justify-content:space-between;gap:17px;margin-top:17px}.media-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1;min-width:0}.media-controls .btn{font-size:11px;padding:10px 12px;min-height:38px}.media-controls .media-caption{width:100%;font-size:9px;line-height:1.6;margin:6px 0}.media-controls .media-caption svg{width:13px;height:13px}.duel-layout .own-preview{width:154px;min-width:154px;aspect-ratio:4/3;flex-shrink:0;border-radius:11px}.duel-layout .own-preview .video-label{top:7px;left:7px;font-size:8px;padding:4px 6px}.duel-layout .own-preview .video-label svg{height:12px;width:12px}.duel-layout .own-preview .video-status{left:6px;right:6px;bottom:6px;gap:4px}.duel-layout .own-preview .video-status .badge{font-size:7px;padding:3px 4px;max-width:85px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duel-layout .own-preview .video-status .btn{font-size:8px;min-height:24px;padding:3px 5px;gap:3px}.duel-layout .own-preview .video-status .btn svg{width:10px;height:10px}.duel-layout .own-preview .video-empty{padding:25px 5px;gap:6px}.duel-layout .own-preview .video-empty svg{width:18px;height:18px}.duel-layout .own-preview .video-empty p{font-size:9px}.bull-result{display:flex;align-items:center;gap:8px;font-size:10px;color:#879674;margin-top:22px}.bull-result svg{width:15px;height:15px}
.bull-round{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#8c997f;text-align:center;margin-bottom:9px}.bull-target{display:block;width:100%;max-width:390px;aspect-ratio:1;margin:auto;user-select:none;touch-action:none;border-radius:50%;overflow:visible}.bull-target.editable{cursor:crosshair}.bull-target:focus-visible{outline:3px solid #b3d275;outline-offset:5px}.bull-number{fill:#dbe4c7;font:11px system-ui,sans-serif;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.bull-marker{pointer-events:none}.bull-marker circle{fill:currentColor;stroke:#fff;stroke-width:2.5}.bull-marker path{stroke:#fff;stroke-width:1.7}.bull-marker text{fill:white;stroke:#163e32;stroke-width:3px;paint-order:stroke;text-anchor:middle;font:11px system-ui,sans-serif}.own-hit{color:#c5e578}.opponent-hit{color:#edaa78}.aim-hit{color:#c5e578}.aim-hit circle{fill:#c5e578;stroke:#fff;stroke-width:3}.bull-hint{font-size:10px;color:#8e9a80;text-align:center;margin:14px 0;line-height:1.6}.bull-readings{display:flex;flex-direction:column;gap:10px;font-size:10px;border-top:1px solid #e8edde;padding:14px 0 5px}.bull-readings>div{display:flex;align-items:center;gap:8px}.bull-readings strong{font-size:11px;font-weight:600;flex:1}.bull-readings>div>span:last-child{font-size:9px;color:#889779}.bull-key{width:8px;height:8px;background:currentColor;border-radius:50%;display:block}.bull-actions{margin-top:14px}.bull-actions .btn{font-size:11px}.camera-setup{border:1px solid #dfe7cf;padding:15px;border-radius:11px;margin-bottom:19px;background:#f2f7e7}.camera-setup>summary{font-size:12px;font-weight:650;cursor:pointer;line-height:1.7}.camera-setup p{font-size:11px;color:#758462;line-height:1.7;margin:12px 0}.camera-setup .qr-image{width:190px}.camera-setup .copy-row{margin-bottom:5px}.camera-setup .copy-row .btn{font-size:10px;padding:10px}
.bull-target{height:auto}
@media(max-width:1250px){.duel-layout{grid-template-columns:minmax(310px,.9fr) minmax(0,1.1fr);gap:19px}.duel-layout .own-preview{width:130px;min-width:130px}.duel-layout .entry-card,.duel-layout .history-card{padding:17px}.duel-layout .score-side .avatar{display:none}.duel-layout .score-number{font-size:72px}.media-controls .btn{font-size:10px}.duel-layout .opponent-stage{min-height:270px}}
@media(min-width:701px) and (max-width:1100px){.duel-shell{grid-template-columns:1fr}.duel-shell .sidebar{display:none}.duel-layout{grid-template-columns:minmax(310px,.85fr) minmax(0,1.15fr)}.duel-layout .score-number{font-size:72px}.duel-layout .duel-heading{flex-direction:row}}
@media(max-width:700px){.duel-layout{display:flex;flex-direction:column;gap:18px}.duel-layout .duel-primary{display:contents}.duel-layout .scoreboard{width:100%;order:0}.duel-layout .duel-secondary{position:static;order:1;width:100%}.duel-layout .entry-card{order:2;width:100%}.duel-layout .history-card{order:3;width:100%}.duel-layout .score-number{font-size:clamp(64px,19vw,86px)}.duel-layout .opponent-stage{aspect-ratio:1;min-height:0;max-height:none}.duel-layout .own-preview{width:124px;min-width:124px}.duel-layout .media-controls{gap:7px}.duel-layout .media-bottom{gap:12px;margin-top:12px}.duel-layout .media-controls .btn{font-size:10px;min-height:34px;padding:9px}.duel-layout .media-caption{justify-content:flex-start;text-align:left}.duel-layout .opponent-stage .video-label{font-size:11px;left:12px;top:12px}.duel-layout .bull-result{margin:12px 0 0}.duel-layout .score-entry-row .btn{font-size:12px}.duel-layout .scoreboard .player-name{font-size:12px}.duel-layout .history-card{padding:19px}.duel-layout .history-card h2{font-size:15px}}
.visit-choices{border:0;padding:0;margin:20px 0;min-width:0}.visit-choices legend{font-size:13px;font-weight:650;margin-bottom:10px;padding:0}.visit-options{display:flex;gap:9px}.visit-options label{flex:1;position:relative;cursor:pointer}.visit-options input{position:absolute;opacity:0;width:1px;height:1px}.visit-options span{display:grid;place-items:center;border:1px solid #dfe6d5;background:white;border-radius:10px;min-height:51px;font-size:24px;font-weight:650}.visit-options input:checked+span{background:var(--lime);border-color:#7fa84c;color:var(--green)}.visit-options input:focus-visible+span{outline:3px solid #8eaf63;outline-offset:3px}.visit-options input:disabled+span{opacity:.28;cursor:default}
@media(min-width:1101px){.duel-shell .main-content{padding:24px}.duel-layout{grid-template-columns:clamp(340px,28vw,440px) minmax(0,1fr)}.duel-layout .opponent-stage{max-height:calc(100dvh - 210px)}}
