/* WEBストップウォッチ styles - 全クラスに wsw- プレフィックスを付与し、
   テーマ(Cocoon等)や他プラグインのCSSと干渉しないよう .wsw-app 配下にスコープ */

.wsw-app,.wsw-app *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
.wsw-app{
  --wsw-navy:#102a43;--wsw-blue:#2474e5;--wsw-cyan:#27c2e8;--wsw-red:#ef476f;--wsw-green:#10a875;
  --wsw-ink:#102a43;--wsw-muted:#60758a;--wsw-line:#dce6ef;--wsw-paper:#fff;--wsw-bg:#edf5fb;
  width:100%;max-width:none;height:100vh;height:100dvh;margin:0;background:var(--wsw-paper);
  color:var(--wsw-ink);font-family:"Noto Sans JP","Yu Gothic",Meiryo,sans-serif;
  display:flex;flex-direction:column;overflow:hidden;position:relative
}
.wsw-app button,.wsw-app select,.wsw-app input{font:inherit}
.wsw-app button{cursor:pointer;-webkit-appearance:none;appearance:none}

.wsw-app header{height:58px;flex:none;padding:0 14px;background:var(--wsw-navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:10px}
.wsw-app header h1{min-width:0;margin:0;font-size:clamp(16px,4.7vw,22px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wsw-header-actions{flex:none;display:flex;align-items:center;gap:8px}
.wsw-goal-dots{display:flex;align-items:center;justify-content:flex-end;gap:5px;max-width:min(42vw,360px);overflow:hidden}
.wsw-goal-dot{width:18px;height:18px;flex:0 0 18px;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px #0005}
.wsw-header-btn{border:1px solid #ffffff4a;background:#ffffff16;color:#fff;border-radius:12px;padding:8px 12px;font-weight:800}
.wsw-finish-header{border:2px solid #fff;background:var(--wsw-red);color:#fff;border-radius:12px;padding:8px 14px;font-weight:1000;box-shadow:0 4px 10px #0003}
.wsw-finish-header:active{transform:scale(.97);filter:brightness(.94)}
.wsw-pending-btn{border:1px solid #ffd166;background:#ffd16626;color:#ffd166}
.wsw-save-header{border:2px solid #fff;background:linear-gradient(135deg,var(--wsw-blue),#405de6);color:#fff;border-radius:12px;padding:8px 16px;font-weight:1000;box-shadow:0 4px 10px #0003}
.wsw-save-header:active{transform:scale(.97);filter:brightness(.94)}

.wsw-app main{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}


.wsw-primary{width:100%;border:0;border-radius:16px;padding:16px;background:linear-gradient(135deg,var(--wsw-blue),#405de6);color:#fff;font-size:18px;font-weight:900;box-shadow:0 9px 18px #2474e538}
.wsw-primary:disabled{background:#a9b8c6;box-shadow:none;cursor:not-allowed}
.wsw-duration-settings{display:grid;grid-template-columns:1fr 1fr;gap:10px;background:#fff;border:1px solid var(--wsw-line);border-radius:16px;padding:12px}
.wsw-duration-settings label{display:grid;gap:6px;color:var(--wsw-muted);font-size:13px;font-weight:900}
.wsw-duration-settings select{width:100%;border:2px solid var(--wsw-line);border-radius:12px;background:#fff;color:var(--wsw-ink);padding:12px;font-size:17px;font-weight:900}
.wsw-duration-note{grid-column:1/-1;margin:0;text-align:center;color:var(--wsw-muted);font-size:12px;font-weight:800}
.wsw-privacy{display:flex;gap:9px;align-items:flex-start;color:var(--wsw-muted);font-size:13px;line-height:1.55}

.wsw-measure{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.wsw-camera-stage{position:relative;width:100%;background:#0b1723;overflow:hidden;flex:1 1 auto;min-height:52dvh}
.wsw-app video{width:100%;height:100%;display:block;object-fit:cover;background:#0b1723}
.wsw-hud{position:absolute;left:12px;right:12px;top:11px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}
.wsw-time{padding:7px 12px;border-radius:12px;background:#07111bc9;color:#fff;font:900 clamp(27px,8vw,44px)/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:-2px}
.wsw-count{padding:8px 11px;border-radius:999px;background:#fff;color:var(--wsw-ink);font-weight:900}
.wsw-live{position:absolute;left:12px;bottom:10px;background:#07111bc9;color:#fff;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:900}
.wsw-live::before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;background:var(--wsw-red);border-radius:50%;animation:wsw-pulse 1s infinite}
@keyframes wsw-pulse{50%{opacity:.35}}
.wsw-measure-controls{flex:0 0 clamp(190px,34dvh,330px);padding:12px;display:flex;flex-direction:column;gap:10px;background:#f5f9fd}
.wsw-start-large{flex:1;min-height:160px;border-radius:24px;font-size:clamp(28px,8vw,42px)}
.wsw-goal{position:relative;flex:1;min-height:160px;border:0;border-radius:22px;background:linear-gradient(160deg,#ff597d,#e92958);color:#fff;box-shadow:0 12px 25px #dc244d45;display:grid;place-items:center;overflow:hidden}
.wsw-goal:active{transform:scale(.985);filter:brightness(.94)}
.wsw-goal .wsw-big{font-size:clamp(33px,11vw,54px);font-weight:1000;letter-spacing:.05em}
.wsw-goal .wsw-small{display:block;margin-top:8px;font-weight:800;opacity:.88}
.wsw-goal.wsw-flash::after{content:"";position:absolute;inset:0;background:#fff;animation:wsw-flash-anim .22s ease-out}
@keyframes wsw-flash-anim{from{opacity:.75}to{opacity:0}}
.wsw-secondary{border:1px solid var(--wsw-line);background:#fff;color:var(--wsw-ink);border-radius:13px;padding:12px;font-weight:900}

.wsw-review{padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--wsw-bg);flex:1;min-height:0;overflow:hidden}
.wsw-review-main{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}
.wsw-review-video{flex:1;min-height:0;border-radius:18px;overflow:hidden;background:#0b1723;position:relative}
.wsw-review-video video{object-fit:contain}
.wsw-review-time{position:absolute;left:50%;top:10px;transform:translateX(-50%);min-width:150px;text-align:center;background:#07111be8;color:#fff;border:2px solid #ffffffb8;border-radius:13px;padding:8px 12px;font:1000 clamp(22px,7vw,34px)/1 ui-monospace,monospace;box-shadow:0 4px 14px #0007;pointer-events:none}
.wsw-review-time small{display:block;margin-bottom:4px;font:800 10px/1.1 "Noto Sans JP","Yu Gothic",sans-serif;letter-spacing:.08em;color:#dbeeff}
.wsw-person-badge{position:absolute;z-index:2;left:10px;top:10px;background:#07111be8;color:#fff;border:2px solid #ffffffb8;border-radius:12px;padding:6px 10px;font-size:13px;font-weight:900;pointer-events:none}
.wsw-video-controls{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:14px;padding:10px 12px 12px;background:linear-gradient(to top,#000000b0,transparent 100%)}
.wsw-vc-btn{flex:none;width:44px;height:44px;border-radius:50%;border:2px solid #ffffffb0;background:#ffffff26;color:#fff;font-size:16px;font-weight:900;display:grid;place-items:center;line-height:1}
.wsw-vc-btn:active{background:#ffffff4a}
.wsw-vc-confirm{flex:none;height:56px;padding:0 22px;border-radius:28px;border:2px solid #fff;background:var(--wsw-green);color:#fff;font-size:15px;font-weight:900;display:grid;place-items:center;box-shadow:0 6px 16px #0006}
.wsw-vc-confirm:active{filter:brightness(1.1)}
.wsw-review-side{display:none;flex-direction:column;gap:8px;flex:1;min-width:230px}
.wsw-review-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:#fff;border:1px solid var(--wsw-line);border-radius:16px;padding:8px}
.wsw-review-list-item{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--wsw-line);padding:4px}
.wsw-review-list-item:last-child{border-bottom:0}
.wsw-review-list-item.wsw-active{background:#e8f0ff;border-radius:10px}
.wsw-rli-main{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;padding:10px 8px;font-weight:900;color:var(--wsw-ink)}
.wsw-review-list-item.wsw-active .wsw-rli-main{color:var(--wsw-blue)}
.wsw-rli-num{font-size:14px}
.wsw-rli-time{font:900 16px/1 ui-monospace,monospace;color:var(--wsw-muted)}
.wsw-review-list-item.wsw-active .wsw-rli-time{color:var(--wsw-blue)}
.wsw-rli-delete{flex:none;width:32px;height:32px;border-radius:8px;border:1px solid #f1b9c5;background:#fff4f6;color:#c62b4d;font-size:14px;font-weight:900;display:grid;place-items:center}
.wsw-text-btn{border:0;background:transparent;color:var(--wsw-muted);font-weight:900;padding:5px}

.wsw-records{padding:15px;background:var(--wsw-bg);flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow:hidden}
.wsw-records-head{flex:none;display:flex;align-items:center;justify-content:space-between}
.wsw-records-head h2{margin:0;font-size:22px}
.wsw-table-card{flex:1;min-height:0;overflow-y:auto;background:#fff;border:1px solid var(--wsw-line);border-radius:16px}
.wsw-app table{width:100%;border-collapse:collapse;font-size:14px}
.wsw-app th,.wsw-app td{padding:11px 7px;text-align:center;border-bottom:1px solid var(--wsw-line)}
.wsw-app th{position:sticky;top:0;background:#f4f8fb;color:var(--wsw-muted)}
.wsw-app tr:last-child td{border:0}
.wsw-row-delete{border:1px solid #f1b9c5;background:#fff4f6;color:#c62b4d;border-radius:9px;padding:7px 9px;font-weight:900}
.wsw-empty{padding:45px 18px;text-align:center;color:var(--wsw-muted);font-weight:800}
.wsw-records .wsw-primary,.wsw-records .wsw-text-btn{flex:none}

.wsw-toast{position:fixed;z-index:20;left:50%;bottom:24px;transform:translate(-50%,20px);background:#102a43;color:#fff;padding:11px 16px;border-radius:999px;font-weight:800;opacity:0;pointer-events:none;transition:.2s}
.wsw-toast.wsw-show{opacity:1;transform:translate(-50%,0)}
.wsw-modal-backdrop{position:fixed;z-index:50;inset:0;background:#07111bbd;display:grid;place-items:center;padding:18px}
.wsw-settings-modal{width:min(100%,480px);max-height:90dvh;overflow-y:auto;background:#fff;border-radius:24px;padding:22px;box-shadow:0 24px 70px #0008;display:grid;gap:17px}
.wsw-settings-modal h2{margin:0;text-align:center;font-size:24px}
.wsw-settings-modal>p{margin:0;text-align:center;color:var(--wsw-muted);font-weight:700;line-height:1.55}
.wsw-settings-modal .wsw-duration-settings{padding:14px}
.wsw-settings-modal .wsw-primary{min-height:62px}

.wsw-hidden{display:none!important}

@media (max-width:480px){
  .wsw-app header{padding:0 9px;gap:6px}
  .wsw-app header h1{font-size:16px}
  .wsw-header-btn,.wsw-finish-header{padding:8px 9px;font-size:14px}
  .wsw-goal-dot{width:15px;height:15px;flex-basis:15px}
  .wsw-goal-dots{gap:3px;max-width:38vw}
  .wsw-measure-controls{padding:10px}
}
/* 修正: タブレット幅(768px以上)では確認画面を左右分割し、右側に組の人数一覧を表示 */
@media (min-width:768px){
  .wsw-review-main{flex-direction:row}
  .wsw-review-video{flex:1.6}
  .wsw-review-side{display:flex}
  .wsw-person-badge{display:none}
}
@media (orientation:landscape) and (max-height:620px){
  .wsw-measure{flex-direction:row}
  .wsw-camera-stage{flex:1;min-height:calc(100dvh - 58px)}
  .wsw-measure-controls{flex:0 0 42%;height:calc(100dvh - 58px)}
}
