:root{--brand-900:#0d4f79;--brand-800:#10639b;--brand-700:#1274ae;--brand-600:#2196d6;--brand-100:#d9eef9;--brand-50:#edf7fc;--bg:#f2f8fb;--surface:#fff;--border:#dce8ef;--text:#1a2b36;--text-sub:#51677a;--text-faint:#8aa0ae;--danger:#c0392b;--danger-bg:#fdeeec;--rank1:#c8992c;--rank2:#7a8a94;--rank3:#a4713f;--rank4:#7d7d7d;--plus:#157a4b;--minus:#c0392b;--radius:12px;--shadow:0 1px 3px #0d4f791a, 0 1px 2px #0d4f790d;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Hiragino Kaku Gothic ProN,Hiragino Sans,Yu Gothic UI,Meiryo,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0}#root{flex-direction:column;min-height:100dvh;display:flex}h1,h2,h3{margin:0;font-weight:700}button{font-family:inherit}input,select{font-family:inherit;font-size:16px}.app-shell{flex-direction:column;flex:1;width:100%;max-width:720px;margin:0 auto;display:flex}.app-header{z-index:20;background:var(--brand-900);color:#fff;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex;position:sticky;top:0}.app-header .room-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.app-header .brand{letter-spacing:.08em;color:#9fd2ee;font-size:12px;font-weight:600}.header-btn{color:#dceefa;cursor:pointer;background:#ffffff24;border:none;border-radius:8px;flex-shrink:0;padding:6px 10px;font-size:12px;font-weight:700}.app-main{flex:1;padding:16px 16px 84px}.tab-bar{z-index:20;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-bar-inner{width:100%;max-width:720px;display:flex}.tab-item{color:var(--text-faint);flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0 10px;font-size:11px;font-weight:600;text-decoration:none;display:flex}.tab-item .tab-icon{font-size:20px;line-height:1}.tab-item.active{color:var(--brand-700)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:12px}.section-title{color:var(--text-sub);letter-spacing:.04em;margin:20px 0 8px;font-size:13px;font-weight:700}.section-title:first-child{margin-top:0}.btn{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:12px 18px;font-size:15px;font-weight:700;text-decoration:none;transition:filter .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:default}.btn:not(:disabled):active{filter:brightness(.92)}.btn-primary{background:var(--brand-700);color:#fff}.btn-secondary{background:var(--brand-100);color:var(--brand-800)}.btn-ghost{color:var(--text-sub);border:1px solid var(--border);background:0 0}.btn-sm{border-radius:8px;padding:8px 12px;font-size:13px}.btn-block{width:100%}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-sub);font-size:13px;font-weight:700}.field input,.field select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:10px;width:100%;padding:11px 12px}.field input:focus,.field select:focus{outline:2px solid var(--brand-600);outline-offset:-1px;border-color:var(--brand-600)}.error-box{background:var(--danger-bg);color:var(--danger);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.info-box{background:var(--brand-50);border:1px solid var(--brand-100);color:var(--brand-800);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.empty-state{text-align:center;color:var(--text-faint);padding:40px 16px;font-size:14px}.loading{text-align:center;color:var(--text-faint);padding:32px;font-size:14px}.num-plus{color:var(--plus);font-variant-numeric:tabular-nums}.num-minus{color:var(--minus);font-variant-numeric:tabular-nums}.num-zero{color:var(--text-sub);font-variant-numeric:tabular-nums}.rank-badge{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:inline-flex}.rank-badge.r1{background:var(--rank1)}.rank-badge.r2{background:var(--rank2)}.rank-badge.r3{background:var(--rank3)}.rank-badge.r4{background:var(--rank4)}.chip{background:var(--brand-100);color:var(--brand-800);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table.data{border-collapse:collapse;white-space:nowrap;width:100%;font-size:13px}table.data th{text-align:right;color:var(--text-faint);border-bottom:1px solid var(--border);padding:6px 8px;font-size:12px;font-weight:600}table.data th:first-child,table.data td:first-child{text-align:left;background:var(--surface);z-index:1;position:sticky;left:0}table.data td{text-align:right;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;padding:8px}table.data tr:last-child td{border-bottom:none}.login-page{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:420px;margin:0 auto;padding:24px;display:flex}.login-logo{text-align:center;margin-bottom:28px}.login-logo .mark{width:84px;height:84px;box-shadow:var(--shadow);border-radius:20px}.login-logo h1{color:var(--brand-900);letter-spacing:.02em;font-size:24px}.login-logo p{color:var(--text-sub);margin:6px 0 0;font-size:13px}.seg{background:var(--brand-50);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:3px;display:flex}.seg button{color:var(--text-sub);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:9px 0;font-size:14px;font-weight:700}.seg button.on{color:var(--brand-800);box-shadow:var(--shadow);background:#fff}.row-list{flex-direction:column;display:flex}.row-item{border-bottom:1px solid var(--border);color:inherit;align-items:center;gap:12px;padding:13px 4px;text-decoration:none;display:flex}.row-item:last-child{border-bottom:none}.row-main{flex:1;min-width:0}.row-title{font-size:15px;font-weight:700}.row-sub{color:var(--text-faint);margin-top:2px;font-size:12px}.row-value{font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.avatar{background:var(--brand-100);width:36px;height:36px;color:var(--brand-800);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.score-grid-wrap{-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px;overflow-x:auto}table.score-grid{border-collapse:collapse;min-width:100%}table.score-grid th,table.score-grid td{border-bottom:1px solid var(--border);text-align:center;padding:4px}table.score-grid th{color:var(--text-sub);white-space:nowrap;text-overflow:ellipsis;max-width:90px;padding:8px 4px;font-size:12px;font-weight:700;overflow:hidden}table.score-grid th.rowhead,table.score-grid td.rowhead{background:var(--surface);z-index:1;color:var(--text-faint);white-space:nowrap;text-align:left;padding:4px 8px 4px 0;font-size:12px;font-weight:700;position:sticky;left:0}table.score-grid input{border:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums;background:#fff;border-radius:8px;width:72px;padding:9px 6px}table.score-grid input:focus{outline:2px solid var(--brand-600);outline-offset:-1px}table.score-grid tr.row-error input:not(:placeholder-shown),table.score-grid tr.row-error input.filled{border-color:var(--danger);background:var(--danger-bg)}table.score-grid tr.row-ok td.rowhead{color:var(--brand-700)}table.score-grid td.sum-cell{color:var(--text-faint);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px}.summary-table td,.summary-table th{font-size:13px}.ad-slot{border:1px dashed var(--border);min-height:60px;color:var(--text-faint);letter-spacing:.06em;background:repeating-linear-gradient(45deg,#0000,#0000 8px,#00000004 8px 16px);border-radius:10px;justify-content:center;align-items:center;margin:16px 0;font-size:11px;display:flex}.tile-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.stat-tile .label{color:var(--text-faint);letter-spacing:.04em;font-size:11px;font-weight:700}.stat-tile .value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:22px;font-weight:700}.stat-tile .unit{color:var(--text-sub);margin-left:2px;font-size:12px;font-weight:600}.filter-bar{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.filter-bar select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600}.modal-backdrop{z-index:50;background:#0f191473;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:720px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;max-height:85dvh;overflow-y:auto}@media (width>=480px){.modal-backdrop{align-items:center;padding:24px}.modal{border-radius:16px;max-width:420px}}.modal h2{margin-bottom:14px;font-size:17px}.credential-box{background:var(--brand-50);border:1px solid var(--brand-100);border-radius:10px;margin-bottom:10px;padding:12px}.credential-box .cred-label{color:var(--text-sub);font-size:11px;font-weight:700}.credential-box .cred-value{word-break:break-all;-webkit-user-select:all;user-select:all;margin-top:4px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px}
