:root{--bg:#111015;--surface:#1b191f;--surface2:#242129;--line:#37323d;--text:#f6f2ed;--muted:#aaa3ad;--red:#d61f3d;--red2:#a80f29;--cream:#e9ddca;--green:#3e8d68;--shadow:0 18px 50px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{margin:0;min-height:100dvh;background:radial-gradient(circle at 50% -10%,#34111c 0,transparent 34rem),var(--bg)}button,input,textarea{font:inherit}.app-shell{width:min(100%,760px);min-height:100dvh;margin:auto;padding:max(12px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom))}.brandbar{height:66px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px}.brand img{width:44px;height:44px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px #49212b}.brand strong,.brand span{display:block}.brand strong{font-size:15px;letter-spacing:.02em}.brand span{font-size:11px;color:var(--muted);margin-top:2px}.icon-button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--text);font-size:22px}.view{display:none}.view.active{display:block}.hero{padding:46px 4px 28px}.eyebrow,.kicker{font-weight:800;font-size:11px;letter-spacing:.18em;color:#ef526c}.hero h1,.page-title h1{font-family:Georgia,serif;font-weight:500;line-height:.96;letter-spacing:-.04em}.hero h1{font-size:clamp(48px,14vw,76px);margin:12px 0 22px}.hero p:last-child{max-width:520px;color:var(--muted);font-size:17px;line-height:1.55}.home-actions,.summary-actions{display:grid;gap:10px;margin-bottom:26px}.primary,.secondary,.win-button,.text-button{border:0;cursor:pointer}.primary{background:linear-gradient(135deg,var(--red),var(--red2));color:white;font-weight:800;border-radius:14px;box-shadow:0 10px 28px rgba(214,31,61,.2)}.secondary{background:var(--surface2);border:1px solid var(--line);color:var(--text);font-weight:700;border-radius:14px}.big{min-height:56px;padding:14px 20px}.card{background:linear-gradient(145deg,rgba(37,33,41,.95),rgba(25,23,29,.95));border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.archive-card,.game-log-card,.note-card{padding:20px}.section-head{display:flex;align-items:center;justify-content:space-between}.section-head h2{font-size:22px;margin:4px 0 0}.count{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#302b34;color:var(--cream);font-weight:800}.history-list{margin-top:15px}.history-item{display:grid;grid-template-columns:1fr auto;gap:6px;padding:15px 0;border-top:1px solid var(--line)}.history-item strong{font-size:17px}.history-item span,.history-item small{color:var(--muted)}.history-score{font-size:22px!important;color:var(--text)!important;font-weight:900}.empty{color:var(--muted);margin:18px 0 6px}.local-note{text-align:center;color:#716c74;font-size:12px;margin:16px}.page-title{padding:34px 2px 18px}.page-title h1{font-size:45px;margin:8px 0}.form-card{padding:22px;display:grid;gap:20px}.form-card label,.note-card label{display:grid;gap:8px;font-size:13px;font-weight:800;color:var(--muted)}input,textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#131217;color:var(--text);padding:14px 15px;outline:none}input:focus,textarea:focus{border-color:#b62a43;box-shadow:0 0 0 3px rgba(214,31,61,.12)}fieldset{border:0;padding:0;margin:0}legend,.field-title{color:var(--muted);font-weight:800;font-size:13px;margin-bottom:10px}.length-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.chip{height:45px;border-radius:11px;border:1px solid var(--line);background:#161419;color:var(--text);font-weight:800}.chip.selected{border-color:var(--red);background:rgba(214,31,61,.16);color:#ff7189}.match-topline{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px 0}.text-button{background:none;color:var(--muted);padding:10px 0}.text-button:last-child{text-align:right}.match-meta{text-align:center;display:grid;font-size:11px;color:var(--muted)}.match-meta strong{color:var(--text);font-size:13px;margin-top:2px}.status-pill{width:max-content;margin:4px auto 12px;padding:7px 12px;border-radius:999px;background:#2a252d;color:var(--cream);font-size:11px;font-weight:900;letter-spacing:.12em}.status-pill.crawford{background:var(--red);color:white}.score-stage{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}.player-panel{min-width:0;border:1px solid var(--line);border-radius:20px;padding:20px 12px 14px;text-align:center;background:linear-gradient(160deg,#25222a,#19171c)}.player-side{font-size:9px;letter-spacing:.16em;color:var(--muted);font-weight:900}.player-panel h2{font-size:clamp(16px,5vw,24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:8px 0 0}.score{font-family:Georgia,serif;font-size:clamp(72px,23vw,126px);line-height:1;margin:10px 0 16px}.win-button{width:100%;min-height:46px;border-radius:12px;background:#37313b;color:var(--text);font-size:12px;font-weight:800}.p1-panel .win-button{background:rgba(214,31,61,.16);color:#ff7b91}.p2-panel .win-button{background:rgba(233,221,202,.12);color:var(--cream)}.versus{align-self:center;display:grid;text-align:center;color:#6f6872;font-family:Georgia,serif;font-size:34px}.versus small{font-family:ui-monospace,monospace;font-size:10px;color:var(--muted);margin-top:9px}.match-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0 18px}.match-actions button{min-height:48px}.game-log-card{box-shadow:none}.marker-count{font-size:12px;color:var(--muted)}.game-row{display:grid;grid-template-columns:35px 1fr auto;gap:10px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}.game-no{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#302b34;font-weight:900;font-size:12px}.game-row strong,.game-row span{display:block}.game-row span{font-size:12px;color:var(--muted);margin-top:2px}.running-score{font-size:18px!important;color:var(--text)!important;font-weight:900}dialog{width:min(calc(100% - 28px),510px);border:1px solid var(--line);border-radius:22px;background:#1b191f;color:var(--text);padding:0;box-shadow:0 30px 90px #000}dialog::backdrop{background:rgba(5,4,6,.8);backdrop-filter:blur(4px)}dialog form{padding:25px;position:relative}dialog h2{font-size:28px;margin:6px 0 24px}.close-dialog{position:absolute;right:14px;top:12px;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#29262e;color:var(--text);font-size:24px}.choice-grid{display:grid;gap:8px;margin-bottom:20px}.triple{grid-template-columns:repeat(3,1fr)}.cube-grid{grid-template-columns:repeat(5,1fr)}.choice{min-height:48px;border:1px solid var(--line);border-radius:11px;background:#151419;color:var(--text);font-size:12px;font-weight:800}.choice.selected{background:rgba(214,31,61,.2);border-color:var(--red);color:#ff7990}.points-preview{display:flex;justify-content:space-between;align-items:center;background:#121116;border-radius:13px;padding:13px 16px;margin-bottom:18px;color:var(--muted)}.points-preview strong{font-size:27px;color:var(--text)}.summary-hero{text-align:center;padding:35px 0 25px}.summary-hero img{width:68px;height:68px;border-radius:50%;display:block;margin:0 auto 16px}.summary-hero h1{font-family:Georgia,serif;font-size:42px;margin:8px 0 18px}.final-score{display:grid}.final-score strong{font-family:Georgia,serif;font-size:70px}.final-score span{color:var(--muted)}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}.stat{padding:17px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.stat span,.stat strong{display:block}.stat span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.stat strong{font-size:25px;margin-top:7px}.note-card{margin-bottom:14px}.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#f2ede7;color:#171419;border-radius:999px;padding:11px 17px;font-weight:800;font-size:13px;opacity:0;pointer-events:none;transition:.22s;z-index:20}.toast.show{opacity:1;transform:translate(-50%,0)}
body.table-mode .brandbar,body.table-mode .match-topline,body.table-mode .game-log-card{display:none}body.table-mode .app-shell{max-width:none;width:100%;padding:8px;height:100dvh}body.table-mode main,body.table-mode .match-view{height:100%}body.table-mode .match-view.active{display:grid;grid-template-rows:auto 1fr auto}body.table-mode .status-pill{margin:0 auto 6px}body.table-mode .score-stage{grid-template-columns:1fr 65px 1fr;min-height:0}body.table-mode .player-panel{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;text-align:left;align-items:center;padding:14px 20px}body.table-mode .player-side{grid-column:1}body.table-mode .player-panel h2{grid-column:1;margin:2px 0;font-size:clamp(20px,5vw,38px)}body.table-mode .score{grid-column:2;grid-row:1/4;margin:0 8px;font-size:clamp(82px,20vh,160px)}body.table-mode .win-button{grid-column:1;width:min(260px,100%)}body.table-mode .match-actions{margin:7px 0 0;grid-template-columns:1fr 1fr}body.table-mode .match-actions button{min-height:42px}@media(orientation:landscape) and (max-height:650px){body:not(.manual-portrait) .brandbar,body:not(.manual-portrait) .match-topline,body:not(.manual-portrait) .game-log-card{display:none}body:not(.manual-portrait) .app-shell{max-width:none;width:100%;padding:8px;height:100dvh}body:not(.manual-portrait) main,body:not(.manual-portrait) .match-view{height:100%}body:not(.manual-portrait) .match-view.active{display:grid;grid-template-rows:auto 1fr auto}body:not(.manual-portrait) .status-pill{margin:0 auto 6px}body:not(.manual-portrait) .score-stage{grid-template-columns:1fr 65px 1fr;min-height:0}body:not(.manual-portrait) .player-panel{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;text-align:left;align-items:center;padding:14px 20px}body:not(.manual-portrait) .player-side{grid-column:1}body:not(.manual-portrait) .player-panel h2{grid-column:1;margin:2px 0;font-size:clamp(20px,5vw,38px)}body:not(.manual-portrait) .score{grid-column:2;grid-row:1/4;margin:0 8px;font-size:clamp(82px,20vh,160px)}body:not(.manual-portrait) .win-button{grid-column:1;width:min(260px,100%)}body:not(.manual-portrait) .match-actions{margin:7px 0 0}}
@media(max-width:430px){.app-shell{padding-left:13px;padding-right:13px}.brandbar{height:58px}.brand img{width:38px;height:38px}.hero{padding-top:32px}.score-stage{gap:6px}.player-panel{padding-left:8px;padding-right:8px}.versus{font-size:27px}.triple{grid-template-columns:1fr}.cube-grid{grid-template-columns:repeat(5,1fr)}dialog form{padding:22px 16px}}
@media print{body{background:white;color:black}.brandbar,.home-actions,.summary-actions,.icon-button{display:none!important}.app-shell{width:100%;max-width:none}.card,.stat{box-shadow:none;border-color:#bbb;background:white}}
.table-exit{display:none;position:fixed;z-index:8;right:10px;top:10px;border:1px solid #4a424d;border-radius:999px;background:rgba(20,18,23,.9);color:#f6f2ed;padding:8px 12px;font-size:11px;font-weight:800}
body.table-mode .table-exit{display:block}
@media(orientation:landscape) and (max-height:650px){body:not(.manual-portrait) .table-exit{display:block}}
.share-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.qr-dialog-inner{padding:25px;text-align:center;position:relative}.qr-dialog h2{margin:7px 25px 18px}.qr-dialog canvas{display:block;width:min(280px,76vw);height:auto;margin:0 auto 14px;border-radius:14px;background:#fff;padding:10px}.qr-dialog p{color:var(--muted);font-size:13px;line-height:1.45;max-width:340px;margin:0 auto}.install-banner{position:fixed;z-index:30;left:50%;bottom:calc(12px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 24px),620px);display:grid;grid-template-columns:40px 1fr auto;gap:10px;align-items:center;background:rgba(28,25,31,.96);border:1px solid #453d48;border-radius:16px;padding:10px 42px 10px 10px;box-shadow:0 18px 60px rgba(0,0,0,.48);backdrop-filter:blur(12px)}.install-banner[hidden]{display:none}.install-banner img{width:40px;height:40px;border-radius:10px}.install-banner strong,.install-banner span{display:block}.install-banner strong{font-size:13px}.install-banner span{font-size:10px;color:var(--muted);line-height:1.35;margin-top:2px}.install-banner>button:not(.dismiss-install){border:0;border-radius:10px;background:#f0e7dd;color:#211c22;padding:9px 11px;font-size:11px;font-weight:900}.dismiss-install{position:absolute;right:8px;top:5px;border:0;background:transparent;color:#817984;font-size:20px}.social-canvas{display:none}@media(max-width:430px){.share-grid{grid-template-columns:1fr}.install-banner{grid-template-columns:36px 1fr auto;padding-right:36px}.install-banner img{width:36px;height:36px}.install-banner span{max-width:190px}}
