
:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;color:#29312d;background:#f3f1e8;font-size:12px;--paper:#fffdf7;--ink:#29312d;--line:#d5d8ca;--lime:#d9e7ac;--court:#dce9e7;--wood:#b89774}*{box-sizing:border-box}body{margin:0}main{max-width:920px;margin:0 auto;padding:12px 10px 22px}h1{font-size:18px;line-height:1.25;letter-spacing:-.6px;margin:3px 0;overflow-wrap:anywhere}h2{font-size:13px;margin:0}h3{font-size:10px;margin:0 0 6px;font-weight:600;color:#5b6860}p{line-height:1.5;margin:8px 0}small{font-size:11px;font-weight:400;color:#66716a}header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;min-height:48px}.eyebrow{font-size:9px;letter-spacing:1.5px;margin:0;color:#617166}.header-tools{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}.save{font-size:10px;color:#567143}.meeting-time{font-size:11px;color:#58675d;margin:5px 0 0}button,input,select,textarea{font:inherit}button{border:1px solid #bdc6b7;border-radius:8px;color:var(--ink);background:var(--paper);min-height:44px;padding:9px 12px;cursor:pointer;touch-action:manipulation}button:hover{background:#edf1df}button:disabled{opacity:.45;cursor:default}.primary{background:var(--lime);border-color:#b4c88c;font-weight:600}.quiet{background:transparent;border-color:transparent;padding:6px 9px}.wide{width:100%}button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #617e53;outline-offset:2px}input,select,textarea{display:block;width:100%;min-width:0;max-width:100%;padding:10px;border:1px solid #c0cabf;border-radius:8px;background:#fff;min-height:44px}textarea{resize:vertical}label{display:block;font-size:12px;margin:10px 0}label input,label textarea{margin-top:5px}.form-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.form-pair input[type=datetime-local]{font-size:11px;padding:8px 4px}.field-note{font-size:11px;color:#647268;margin:7px 0}.section-heading,.court-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-heading h2 small{margin-left:5px}.actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.actions button{flex:1;white-space:nowrap;font-size:11px;padding:7px 6px}.setup{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:14px;margin:12px 0}.setup h2{margin-bottom:4px}.examples{background:transparent;border:0;padding:0;margin:14px 0 0}.examples summary{font-size:11px;color:#647268}#feedback{font-size:12px;color:#475642;border-radius:8px;background:#e7ebda;padding:8px 10px;margin:9px 0}#feedback:empty{display:none}.totals{display:flex;align-items:center;gap:13px;padding:9px 2px;font-size:11px;flex-wrap:wrap}.totals b{font-size:15px;margin-left:4px}.totals small{display:block;font-size:9px;line-height:1}.clock{margin-left:auto;font-size:10px;color:#6f7a70}.courts{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-bottom:12px}.court{min-width:0;background:var(--court);border:1px solid #bfceca;border-radius:12px;padding:7px 8px}.court-title h2{font-size:13px}.court-title button{font-size:11px;min-height:44px}.empty-court{min-height:35px;display:grid;place-items:center;margin:0 0 3px;font-size:11px;color:#839189}.match{margin-top:4px}.match.running h3{display:none}.blocked{font-size:11px;color:#95462b;margin:7px 0;overflow-wrap:anywhere}.slots{display:grid;grid-template-columns:1fr 1fr;gap:6px}.slots label{margin:3px 0;font-size:10px}.slots select{font-size:11px;padding:8px 3px}.draft form{display:flex;flex-direction:column;gap:6px}.draft>button{width:100%;margin-top:6px}.bench-section{margin:10px 0 14px}.bench-section .field-note{font-size:10px;margin:0}.bench{display:block;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x pan-y pinch-zoom;scrollbar-width:thin;padding:2px 0 4px;margin-top:8px}.bench-row{display:flex;width:100%;gap:2px;position:relative}.bench-row:before{box-sizing:border-box;content:"";position:absolute;z-index:0;left:0;top:47px;width:calc((100% - 10px) / 6 * var(--bench-count) + 2px * (var(--bench-count) - 1));height:9px;border:1px solid #9b7e60;border-radius:3px;background:linear-gradient(#c5aa89,#b18d66);box-shadow:0 6px 0 -2px #9e7c57;pointer-events:none}.bench-row:after{box-sizing:border-box;content:"";position:absolute;z-index:0;left:14px;top:58px;width:calc((100% - 10px) / 6 * var(--bench-count) + 2px * (var(--bench-count) - 1) - 28px);height:19px;border-left:4px solid #8c745a;border-right:4px solid #8c745a;pointer-events:none}.seat{position:relative;z-index:1;display:block;border:0;background:transparent;border-radius:7px;min-width:44px;width:100%;height:96px;min-height:44px;padding:0;text-align:center;--avatar-size:48px}.bench-row>.seat{flex:0 0 calc((100% - 10px) / 6);width:calc((100% - 10px) / 6)}.seat:hover{background:#e2e6d766}.seat:focus-visible{outline-offset:-2px}.seat-avatar{position:absolute;display:block;left:50%;top:47px;width:var(--avatar-size);height:var(--avatar-size);transform:translate(calc(-1 * var(--anchor-x)),calc(-1 * var(--anchor-y)));pointer-events:none}.seat-avatar img{display:block;width:100%;height:100%;object-fit:contain}.seat-state{position:absolute;left:50%;top:12%;transform:translate(-50%,-125%);max-width:48px;overflow:hidden;text-overflow:ellipsis;font-size:9.5px;line-height:12px;font-weight:500;white-space:nowrap;color:#53634b;background:transparent;padding:0;border-radius:0}.seat-name{position:absolute;left:1px;right:1px;top:68px;display:flex;justify-content:center;gap:2px;align-items:baseline;font-size:11.5px;line-height:14px}.seat-name .display-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-name small{flex:none;font-size:8px;color:#6b756d}.seat-count{position:absolute;display:block;left:50%;bottom:0;transform:translateX(-50%);font-size:9px;line-height:12px;white-space:nowrap;color:#697464;max-width:100%;overflow:hidden;text-overflow:ellipsis}.count.limited{color:#9d4c32;font-weight:600}.placeholder-note{font-size:9px;color:#71806e;margin:4px 0 0}.empty-bench{font-size:11px;color:#617663;text-align:center;padding:14px 0}.bench-help{font-size:10px;color:#667262;margin:4px 0}.tennis-court{position:relative;isolation:isolate;aspect-ratio:23.77/10.97;min-height:146px;width:100%;background:#d4e3d1;border:5px solid #739480;border-radius:5px;margin:5px 0 6px}.tennis-lines{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.tennis-lines line{stroke:#fffff5;stroke-width:1.3px;vector-effect:non-scaling-stroke}.tennis-lines [data-court-line=net]{stroke:#526f60;stroke-width:2px;stroke-dasharray:3 2}.court-side{display:contents}.court-team-label{position:absolute;top:48%;font-size:9px;line-height:12px;font-weight:500;color:#3b5947;background:#d4e3d1df;padding:0 3px;transform:translate(-50%,-50%)}.court-side[data-team=A] .court-team-label{left:11%}.court-side[data-team=B] .court-team-label{left:89%}.court-net-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:8px;color:#385540;background:#d4e3d1f0;line-height:11px;padding:0 2px;z-index:1}.court-player{position:absolute;left:var(--slot-x);top:var(--slot-y);transform:translate(-50%,-50%);z-index:2;width:86px;min-width:44px;height:68px;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:0;border:0;border-radius:6px;background:transparent;line-height:11px}.court-player:hover{background:#f4f7e555}.court-avatar{position:relative;display:block;width:42px;height:42px;pointer-events:none}.court-avatar img{width:100%;height:100%;object-fit:contain;display:block}.court-name{display:flex;align-items:baseline;justify-content:center;gap:2px;width:100%;font-size:11.5px;line-height:14px;font-weight:500}.court-name .display-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.court-name small{flex:none;font-size:8px;color:#48634f}.court-status{font-size:9px;line-height:11px;color:#425d47;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-slot{font-size:10px;color:#6f8975;pointer-events:none}.empty-slot .empty-figure{width:28px;height:32px;border:1px dashed #91a38f;border-radius:12px;margin-bottom:3px}.empty-court{min-height:0;display:block;text-align:center;font-size:10px;margin:3px 0}.roster-seat{background:#f0f1e8}.roster-seat .seat-avatar{top:47px}
.avatar-fallback{position:absolute;inset:0}.avatar-fallback i{position:absolute;left:33%;top:7%;width:34%;height:32%;border-radius:50%;background:#d5c4ac}.avatar-fallback b{position:absolute;left:27%;top:36%;width:46%;height:32%;border-radius:14px 14px 5px 5px;background:#8a9e87}.avatar-fallback em{position:absolute;left:34%;top:65%;width:33%;height:20%;border-left:9px solid #bbb9a9;border-right:9px solid #bbb9a9;border-bottom:5px solid #585e51}details{margin:10px 0;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:10px}summary{font-size:11px;font-weight:600;cursor:pointer;min-height:24px;line-height:24px}summary span{font-weight:400;color:#7a877b;margin-left:6px}.roster-grid{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:6px;margin-top:12px}.roster-seat{background:#f0f1e8}.roster-seat:hover{background:#e7ebda}.roster-seat .seat-avatar{top:47px}fieldset{border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:8px}legend{font-size:11px}.check{display:flex;align-items:center;gap:8px;min-height:44px;margin:0}.check input{width:18px;min-height:18px;margin:0}.test-panel{background:#eceee8}footer{font-size:10px;color:#8b958b;padding:12px 0}.modal-shade{position:fixed;inset:0;background:#24302766;display:flex;align-items:flex-end;justify-content:center;z-index:20;padding:12px 12px max(12px,env(safe-area-inset-bottom))}.confirmation{width:min(460px,100%);max-height:85dvh;overflow:auto;background:var(--paper);border:1px solid #c3ccbd;border-radius:17px;padding:18px;box-shadow:0 8px 28px #22312633}.confirmation>h2{font-size:17px;margin:0 0 12px}.confirmation .actions button{min-height:46px}.confirmation .section-heading h2{font-size:18px}.player-sheet>div[data-player]>p{font-size:14px;overflow-wrap:anywhere}.player-sheet .section-heading h2{min-width:0;overflow-wrap:anywhere}.state-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 10px}.state-actions button{min-height:48px}.setup-summary{display:grid;grid-template-columns:90px 1fr;gap:7px;font-size:12px;margin:12px 0}.setup-summary dt{color:#71806c}.setup-summary dd{margin:0;overflow-wrap:anywhere}.error-panel{background:#fbf0e3;padding:14px;border-radius:12px;margin:12px 0}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}[hidden]{display:none!important}@media(min-width:650px){main{padding:24px}.courts{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-shade{align-items:center}.roster-grid{grid-template-columns:repeat(6,minmax(72px,1fr))}}

.recommend-controls,.demo-controls{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:9px 10px;margin:8px 0 10px}.recommend-mode{display:flex;align-items:center;gap:10px;font-size:11px}.recommend-mode select{width:auto;flex:1;font-size:11px}.recommend-preview p{overflow-wrap:anywhere;font-size:11px}.manual-add{margin:0;padding:0;border:0;background:transparent}.manual-add summary{min-height:44px;font-size:10px;display:flex;align-items:center}.manual-add button{margin-top:4px}.manual-lineup{padding:6px;margin:7px 0}.manual-lineup summary{font-size:11px}.demo-tag{font-size:10px;background:#e3ebd2;padding:4px 7px;border-radius:5px}#demo-state{font-size:12px}.demo-width-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.demo-width-links a,.demo-link{font-size:11px;color:#405d3d;padding:8px 0}.demo-link{display:block}body[data-demo=true] main{max-width:var(--demo-width,390px);min-height:100vh;margin:0 auto}body[data-demo=true] .courts{grid-template-columns:minmax(0,1fr)}body[data-demo=true] .roster-grid{grid-template-columns:repeat(4,minmax(72px,1fr))}
@media(max-width:359px){.roster-grid,body[data-demo=true] .roster-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Product redesign: local font, compact readable hierarchy, six-seat bench retained. */
@font-face{font-family:Pretendard;src:url("assets/fonts/pretendard-1.3.9/PretendardVariable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{font-family:Pretendard,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;font-size:14px;color:#242824;background:#F7F6EF;--paper:#F7F6EF;--ink:#242824;--lime:#D6EC86;--court:#B9D9E9;--line:#d8ddd1}
main{max-width:920px;padding:16px 10px 24px}header{gap:12px;margin-bottom:16px}h1{font-size:22px;line-height:1.25;letter-spacing:-.5px}h2{font-size:16px;line-height:1.4}h3{font-size:13px;line-height:1.4}.eyebrow{font-size:11px;letter-spacing:1.2px}.save{font-size:12px}.meeting-time,small{font-size:12px}.field-note{font-size:12px;line-height:1.5;margin:8px 0}p{margin:8px 0;line-height:1.5}button,input,select,textarea{font-size:14px;min-height:44px;border-radius:10px}button{padding:12px}.primary{background:#D6EC86;border-color:#bed474;color:#242824;font-weight:650}.quiet{padding:8px 12px}.actions{gap:8px;margin-top:12px}.actions button{font-size:13px;padding:8px}.form-pair{gap:12px}.form-pair input[type=datetime-local]{font-size:12px}label{font-size:14px;margin:12px 0}.setup{background:transparent;border:0;padding:0;margin:16px 0}.setup h2{font-size:20px}.setup .field-note{margin:12px 0}.home-hero{padding:24px 0}.home-copy{font-size:22px;font-weight:650;letter-spacing:-.5px;margin:8px 0 24px}.home-hero>.primary{margin-top:24px}.resume-meeting{padding:16px 0 24px}.resume-meeting h2{font-size:20px}.resume-meeting button{margin-top:16px}.next-action{margin:0 0 16px;padding:0}.next-action h2{font-size:16px}.totals{gap:12px;font-size:12px;padding:8px 0;margin-bottom:12px}.totals b{font-size:16px}.totals small{font-size:11px}.courts{gap:16px;margin-bottom:24px}.court{background:#B9D9E9;padding:12px 8px;border:0;border-radius:12px}.court-title h2{font-size:16px}.court-title button{font-size:13px}.match{padding:0;margin:8px 0;border:0;background:transparent}.match h3{font-size:13px}.match .wide{margin-top:8px}.tennis-court{min-height:194px;border-width:4px}.court-player{height:96px;width:86px}.court-name{font-size:12px;line-height:14px}.court-name .display-name{white-space:normal;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}.court-name small{font-size:10px}.court-status{font-size:11.5px;line-height:14px}.court-team-label{font-size:11px}.bench-section{margin:24px 0}.bench-section .field-note{font-size:12px}.bench-help,.placeholder-note{font-size:12px}.seat{height:116px}.seat-name{top:74px;font-size:12px;line-height:14px;align-items:flex-start;min-height:28px}.seat-name .display-name{white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.seat-name small{font-size:9px;line-height:14px}.seat-state{font-size:11.5px;line-height:14px;font-weight:500}.seat-count{font-size:11.5px;line-height:14px}.roster-grid{gap:8px}.recommend-controls,.demo-controls{background:transparent;padding:0;border:0;border-radius:0;margin:24px 0}.recommend-mode{font-size:13px;margin:12px 0}.recommend-mode select,.recommend-preview p{font-size:13px}details{background:transparent;border:0;border-top:1px solid var(--line);border-radius:0;padding:8px 0;margin:16px 0}summary{font-size:13px;min-height:44px;line-height:1.4;display:flex;align-items:center}.manual-lineup{padding:0;margin:12px 0}.manual-lineup summary{font-size:13px}.slots{gap:8px}.match-more{margin:8px 0}.match-more .field-note{font-size:12px}.attendance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.check{font-size:13px;min-width:0;overflow-wrap:anywhere}.check small{font-size:11.5px}.check input{flex:none}.confirmation{background:#F7F6EF;padding:24px 16px;border-radius:16px;box-shadow:none}.confirmation>h2,.confirmation .section-heading h2{font-size:20px}.player-sheet>div[data-player]>p{font-size:15px}.confirmation .actions button{font-size:14px}.error-panel{margin:16px 0;padding:12px;background:#fae8d8;border-radius:8px}.inline-error{font-size:13px;color:#8b3028;background:#fae8d8;padding:8px;border-radius:8px}.match-history{padding:16px 0;border-bottom:1px solid var(--line)}.match-history h3{font-size:13px;color:#242824}.archive-record{padding:16px 0;border-bottom:1px solid var(--line)}#planning-panel>ol,#planning-results>ol{padding-left:24px}#planning-panel{margin:24px 0}#planning-panel>summary{font-size:16px}#planning-results>p{font-size:13px}#planning-preferences{margin:12px 0}.setup-summary{font-size:14px}.test-panel{background:#eceee8;padding:12px}footer{font-size:12px;padding:8px 0}
@media(min-width:650px){main{padding:24px}.attendance-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.court-count{font-size:11.5px;line-height:14px;color:#425d47}

.seat{height:calc(64px + 4.8em)}.seat-name{line-height:1.2;min-height:2.4em}.seat-count{line-height:1.2}.seat-state{line-height:1.2}.court-name{line-height:1.2}.court-status,.court-count{line-height:1.2}.court-player{height:auto;min-height:96px}.tennis-court{min-height:calc(98px + 7em)}.court-name .display-name{-webkit-line-clamp:2}.home-hero,.resume-meeting{min-width:0}.home-copy,.resume-meeting h2{overflow-wrap:anywhere}.attendance-grid label{flex-wrap:wrap}.attendance-grid label input{flex-shrink:0}.match-history input,.match-history select{min-width:0}
.nickname-preview{font-size:13px;line-height:1.5;color:#42533d;margin:12px 0;overflow-wrap:anywhere}.court-count{max-width:100%;text-align:center;overflow-wrap:anywhere}
.play-time{margin:16px 0;padding:12px;border:1px solid var(--line);border-radius:10px}.play-time legend{font-size:14px;font-weight:600}.duration-options{display:flex;gap:8px}.duration-options button{flex:1;min-height:44px}.duration-options button[aria-pressed=true]{background:var(--lime);border-color:#bed474}.play-time input[readonly]{background:#eef0e6;color:#42533d}.empty-court-preview{margin:0;border:0;padding:0}.empty-court-note{font-size:13px;margin:8px 0}.next-action>.primary{margin:12px 0}

/* Intrinsic height must include both player rows; an aspect-ratio height lets them overlap the following action. */
.tennis-court{display:grid;aspect-ratio:auto;height:auto;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,max-content);align-content:center;row-gap:12px;padding:12px 4px}.court-player{position:relative;left:auto;top:auto;transform:none;grid-column:var(--slot-column);grid-row:var(--slot-row);justify-self:center;align-self:center;max-width:100%;height:auto;min-height:96px}.court-name{min-width:0}.court-status,.court-count{max-width:100%}

/* Bench text occupies separate intrinsic rows below the fixed avatar anchor. */
.seat{display:grid;grid-template-rows:74px auto auto;align-content:start;row-gap:2px;height:auto;padding-bottom:2px}.seat-name{position:static;grid-row:2;left:auto;right:auto;top:auto;width:100%;margin:0;min-height:2.4em}.seat-count{position:static;grid-row:3;left:auto;bottom:auto;transform:none;justify-self:center;max-width:100%;margin:0}

.avatar-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.avatar-choice{display:grid;grid-template-columns:20px 64px minmax(0,1fr);align-items:center;gap:6px;min-height:80px;margin:0;padding:6px;border:1px solid var(--line);border-radius:10px}.avatar-choice input{width:18px;min-height:18px;margin:0}.avatar-choice img{width:64px;height:64px;object-fit:contain}.avatar-choice span{overflow-wrap:anywhere;font-size:13px}

/* Status text grows in its own normal-flow row; avatar/bench anchors stay in the following row. */
.bench{padding-top:2px}.bench-status-row{display:flex;width:100%;gap:2px;align-items:flex-start}.bench-status-row>.seat-state{position:static;flex:0 0 calc((100% - 10px) / 6);min-width:44px;max-width:none;transform:none;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;text-align:center;line-height:1.2}

/* Approved operations UI: distinct court rails, intrinsic text rows, truthful pose consumption. */
.help{border:0;margin:0;position:relative}.help>summary{min-height:44px;min-width:44px;padding:8px;justify-content:center;font-size:12px}.help>p{font-size:13px;line-height:1.5;margin:8px 0}.section-heading>.help{max-width:70%}.help[open]{flex:1}
.attendance-badge{display:inline-flex;align-items:center;justify-content:center;flex:none;width:20px;height:20px;border-radius:50%;background:#f7f6ef;border:1px solid #81947c;font-size:11px;color:#242824}
.seat-name{min-height:1.4em;align-items:center;gap:2px}.seat-name .display-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset;min-width:0;flex:1}.seat-count{background:transparent;border:0}
.court-name{display:flex;align-items:center;justify-content:center;gap:3px;max-width:100%;width:100%}.court-name .display-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset;min-width:0}.court-count{margin-top:2px;background:transparent;border:0}
.doubles-settings{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:16px 0}.doubles-settings label{flex:1;min-width:130px;margin:0}.doubles-settings .help{align-self:center}
.court{min-width:0;overflow:hidden}.court-carousel{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;touch-action:pan-x pan-y;min-width:0;position:relative;padding:0 0 8px}.court-card{flex:0 0 calc(100% - 16px);min-width:0;scroll-snap-align:start;scroll-snap-stop:always}.court-card h3{font-size:13px;line-height:1.4;margin:8px 0;overflow-wrap:anywhere}.court-card h3 small{white-space:nowrap}.carousel-nav{display:flex;align-items:center;justify-content:space-between;gap:4px}.carousel-nav span{font-size:11px}.carousel-nav button{min-width:44px;padding:8px}.projected{border:1px dashed #66818b;border-radius:8px;padding:6px}.projection-label{font-size:12px;margin:6px 0}
.tennis-court{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,max-content);row-gap:12px;padding:12px 2px}.court-player{width:90px;max-width:100%;grid-column:var(--slot-column);grid-row:var(--slot-row);min-width:0}.court-player[data-player-slot=A1]{grid-column:1 / span 2;justify-self:start;grid-row:1}.court-player[data-player-slot=A2]{grid-column:2;justify-self:center;grid-row:2}.court-player[data-player-slot=B1]{grid-column:3 / span 2;justify-self:end;grid-row:1}.court-player[data-player-slot=B2]{grid-column:3;justify-self:center;grid-row:2}.court-player[data-player-slot=A2],.court-player[data-player-slot=B2]{width:100%;max-width:90px}.court-avatar[data-avatar-pose=standing]{position:relative;height:74px;width:74px;overflow:visible}.court-avatar[data-avatar-pose=standing] img{position:absolute;width:90px;height:90px;max-width:none;left:50%;top:100%;transform:translate(calc(-1 * var(--foot-x)),calc(-1 * var(--foot-y)))}
.match.running h3{display:block}.court-carousel:focus-visible{outline:3px solid #617e53;outline-offset:-3px}.court-card{position:relative}.court-team-label{top:50%}.court-player .attendance-badge{width:18px;height:18px}.court-card .court-name .display-name{max-width:100%}
.court-name{margin-top:6px}.court-side[data-team=B] .court-avatar[data-avatar-pose=standing]{transform:scaleX(-1)}
.seat{grid-template-columns:minmax(0,1fr)}.seat-name{min-width:0;max-width:100%}.seat-count{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.control-label{display:inline-flex;align-items:center;justify-content:center;gap:4px}
.court-player[data-player-slot=A2]{transform:translateX(-20%)}.court-player[data-player-slot=B2]{transform:translateX(20%)}.seat-count{font-size:10.5px}
/* P3: keep enlarged attendance digits inside their circular badge. Normal size remains 20px. */
.seat-name .attendance-badge{width:max(20px,1.6em);height:max(20px,1.6em)}
.control-label{display:inline-flex;align-items:center;justify-content:center;gap:4px;vertical-align:middle}.line-icon{display:inline-block;width:20px;height:20px;flex:0 0 20px;pointer-events:none}.help summary{min-height:44px;display:inline-flex;align-items:center}

.shared-tools{max-width:48rem;margin:1rem auto;padding:1rem;background:#fff;border:1px solid #d7dfda;border-radius:1rem;display:flex;gap:.6rem;flex-wrap:wrap}.shared-tools input{width:100%;font-size:1rem}.shared-tools p{width:100%;margin:.2rem 0}.viewer-wrap{max-width:48rem;margin:auto;padding:1rem}.viewer-roster{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.6rem}.viewer-person{border:1px solid #d7dfda;border-radius:.75rem;padding:.6rem;text-align:center}.viewer-person img{width:5rem;height:5rem;object-fit:contain}.viewer-court{position:relative;aspect-ratio:2.1;background:#397756;border-radius:.6rem;margin-bottom:.5rem}.viewer-court .tennis-lines{position:absolute;inset:4%;width:92%;height:92%;stroke:#fff;stroke-width:.08}.viewer-slot{position:absolute;transform:translate(-50%,-50%);color:#fff;font-size:.875rem;text-align:center;width:24%}.viewer-slot img{width:3.5rem;height:3.5rem;object-fit:contain;display:block;margin:auto}.viewer-card{border:1px solid #d7dfda;border-radius:.75rem;padding:.8rem;margin:.7rem 0}.viewer-card h3{margin:.3rem 0}.viewer-wrap h1{font-size:1.5rem}.viewer-wrap p{font-size:1rem}.viewer-wrap [role=alert]{color:#a32626}.viewer-wrap button{min-height:44px}
.viewer-wrap{font-size:16px}html:has(.viewer-wrap){font-size:16px}
.viewer-wrap header{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.viewer-wrap header h1{flex:1 0 100%;margin:0}.viewer-wrap header p{flex:1;margin:0}.viewer-wrap header button{flex:0 0 auto;white-space:nowrap}.viewer-person{display:flex;flex-direction:column;align-items:center;gap:.4rem}.viewer-person b{font-size:1rem;line-height:1.4;overflow-wrap:anywhere}.viewer-person p{margin:.2rem 0}.viewer-slot{line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewer-slot img{width:3rem;height:3rem}

.court-settings form{display:grid;gap:.6rem;min-width:0}.court-settings label{min-width:0}.court-settings input:not([type=checkbox]),.court-settings select{max-width:100%;width:100%;box-sizing:border-box;min-width:0}.court-settings small{display:block}

.pair-settings{margin:1rem 0;padding:.8rem;border:1px solid #d7dfda;border-radius:.75rem}.pair-settings form{display:grid;gap:.6rem;min-width:0}.pair-settings select{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
