@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;700&family=JetBrains+Mono:wght@400;500;700&family=Archivo:wght@400;500;700&family=Archivo+Black&display=swap');

  :root{
    --bg:#EEEBE1;
    --surface:#FFFFFF;
    --surface-2:#F7F4EC;
    --ink:#22291F;
    --ink-soft:#5B6259;
    --muted:#9AA296;
    --line:#E1DDCF;
    --teal:#2F6D5C;
    --teal-dark:#204E42;
    --amber:#DFA13A;
    --amber-soft:#F4E3C2;
    --red:#BE5240;
    --blue:#3E6E8E;
    --radius:16px;
    --radius-sm:10px;
    --shadow:0 2px 10px rgba(34,41,31,0.07);
    --font-head:"Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",serif;
    --font-body:"Hiragino Kaku Gothic ProN","Yu Gothic","Noto Sans JP",sans-serif;
    --font-mono:"SF Mono","Menlo","Consolas",monospace;
    --tabbar-h:58px;
    --ad-h:0px; /* JSがENABLE_ADSに応じて書き換える */
  }
  html.ads-on{ --ad-h:56px; }
  *{box-sizing:border-box;}
  html{overflow-x:hidden;max-width:100%;}
  body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);overscroll-behavior:contain;touch-action:pan-y;}
  body.modal-open{overflow:hidden;}
  #app{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;position:relative;padding-bottom:calc(var(--tabbar-h) + var(--ad-h) + 18px);}

  /* header */
  .topbar{background:var(--teal);color:#fff;padding:18px 18px 14px;padding-top:calc(18px + env(safe-area-inset-top));border-radius:0 0 20px 20px;box-shadow:var(--shadow);position:sticky;top:0;z-index:40;}
  .topbar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
  .topbar .brand{font-family:var(--font-head);font-size:19px;letter-spacing:.03em;display:flex;align-items:center;gap:8px;}
  .topbar .brand .paw{font-size:16px;opacity:.85;}
  .topbar .brand .brand-icon{width:26px;height:26px;border-radius:7px;flex-shrink:0;object-fit:cover;}
  .dtrack-btn{flex-shrink:0;background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:3px;padding:6px 11px;font-size:11px;font-weight:700;letter-spacing:.06em;cursor:pointer;white-space:nowrap;}
  .dogswitch{display:flex;gap:8px;margin-top:12px;}
  .dogswitch button{flex:1;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.08);color:#fff;border-radius:999px;padding:8px 6px;font-size:13px;font-family:var(--font-body);cursor:pointer;transition:.15s;position:relative;}
  .dogswitch button.active{background:var(--amber);border-color:var(--amber);color:#2A2005;font-weight:600;}
  .med-alert-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ff3b3b;margin-left:5px;vertical-align:middle;box-shadow:0 0 0 0 rgba(255,59,59,0.7);animation:medAlertBlink 1.1s infinite;}
  @keyframes medAlertBlink{
    0%{opacity:1;box-shadow:0 0 0 0 rgba(255,59,59,0.7);}
    70%{opacity:0.35;box-shadow:0 0 0 5px rgba(255,59,59,0);}
    100%{opacity:1;box-shadow:0 0 0 0 rgba(255,59,59,0);}
  }

  /* course-line divider (signature element) */
  .course-line{position:relative;height:14px;margin:18px 0 10px;}
  .course-line::before{content:"";position:absolute;top:6px;left:0;right:0;height:1px;background:repeating-linear-gradient(90deg,var(--muted) 0 6px,transparent 6px 12px);}
  .course-line span{position:relative;background:var(--bg);padding:0 10px;font-size:11px;color:var(--ink-soft);font-family:var(--font-mono);letter-spacing:.08em;}

  .content{padding:4px 16px 12px;}
  .section-title{font-family:var(--font-head);font-size:15px;margin:18px 2px 8px;color:var(--teal-dark);}
  .section-title-row{display:flex;align-items:center;gap:10px;margin:18px 2px 8px;}
  .section-title-row .section-title{margin:0;}
  .dog-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--surface-2);border:1px solid var(--line);}
  .dog-avatar-lg{width:64px;height:64px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--surface-2);border:1px solid var(--line);}
  .avatar-tap{cursor:pointer;}
  .crop-viewport{width:260px;height:260px;overflow:hidden;position:relative;border-radius:50%;background:#111;margin:0 auto;touch-action:none;-webkit-touch-callout:none;user-select:none;border:2px solid var(--line);}
  .crop-viewport-square{border-radius:12px;}
  .crop-viewport img{position:absolute;left:0;top:0;pointer-events:none;-webkit-user-drag:none;}
  .dog-avatar-placeholder{display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--muted);}
  .dog-avatar-placeholder.dog-avatar-lg{font-size:26px;}
  .photo-field-row{display:flex;align-items:center;gap:14px;margin-bottom:14px;}
  .photo-field-row-stacked{flex-direction:column;align-items:stretch;gap:8px;}
  .comp-photo-preview{width:100%;max-height:200px;object-fit:cover;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);cursor:pointer;}
  .photo-field-actions{display:flex;flex-direction:column;gap:6px;flex:1;}

  .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);margin-bottom:12px;}
  .card-row{display:flex;justify-content:space-between;align-items:baseline;}
  .card-label{font-size:12.5px;font-weight:700;color:var(--ink);}
  .card-value{font-family:var(--font-mono);font-size:26px;font-weight:700;color:var(--teal-dark);line-height:1.3;margin-top:3px;}
  .card-sub{font-size:12px;color:var(--ink-soft);margin-top:3px;}
  .delta-up{color:var(--red);} .delta-down{color:var(--blue);} .delta-flat{color:var(--muted);}

  .stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .stat-grid .card{padding:16px;}

  .hero-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:10px;display:flex;flex-direction:column;align-items:center;text-align:center;}
  .hero-stat-label{font-size:13px;font-weight:700;color:var(--ink);}
  .hero-stat-value{font-family:var(--font-mono);font-size:34px;font-weight:700;color:var(--teal-dark);line-height:1.25;margin-top:2px;}
  .hero-stat-sub{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}

  .mini-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:4px;}
  .mini-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 8px;text-align:center;box-shadow:var(--shadow);}
  .mini-stat-label{font-size:10.5px;color:var(--ink-soft);font-weight:600;}
  .mini-stat-value{font-family:var(--font-mono);font-size:17px;font-weight:700;color:var(--teal-dark);margin-top:3px;}
  .mini-stat-sub{font-size:9.5px;color:var(--muted);margin-top:2px;line-height:1.4;}

  .empty{color:var(--muted);font-size:13px;text-align:center;padding:22px 10px;border:1px dashed var(--line);border-radius:var(--radius-sm);background:var(--surface-2);}

  /* category chips */
  .chiprow{display:flex;gap:8px;overflow-x:auto;padding:8px 0 10px;scrollbar-width:none;position:sticky;top:var(--topbar-h,88px);z-index:39;background:var(--bg);}
  .chiprow::-webkit-scrollbar{display:none;}
  .chip{flex:0 0 auto;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;cursor:pointer;color:var(--ink-soft);white-space:nowrap;}
  .chip.active{background:var(--teal);color:#fff;border-color:var(--teal);}
  .weight-chart-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 12px 10px;margin-bottom:14px;}
  .weight-chart-card svg{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;}
  #weightChartHit{touch-action:none;}
  .weight-chart-range{display:flex;gap:6px;overflow-x:auto;margin-bottom:10px;scrollbar-width:none;}
  .weight-chart-range::-webkit-scrollbar{display:none;}
  .weight-chart-range .chip{padding:5px 12px;font-size:12px;}
  .weight-chart-empty{color:var(--muted);font-size:13px;text-align:center;padding:20px 0;}
  /* 運動記録：期間・分類フィルターと集計サマリー */
  .ex-summary-card-wrap{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 12px;margin-bottom:14px;}
  .ex-summary-typebtn{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 12px;font-size:13px;color:var(--ink);cursor:pointer;margin-bottom:10px;}
  .ex-summary-typebtn.active{background:var(--amber);color:#fff;border-color:var(--amber);}
  .ex-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
  .ex-summary-card{background:var(--surface-2);border-radius:var(--radius-sm);padding:8px 4px;text-align:center;}
  .ex-summary-label{font-size:11px;color:var(--muted);margin-bottom:2px;}
  .ex-summary-val{font-size:16px;font-weight:700;color:var(--ink);}
  .weight-chart-minmax{display:flex;justify-content:space-between;margin-bottom:10px;padding:0 2px;}
  .weight-chart-minmax-item{display:flex;flex-direction:column;gap:2px;}
  .weight-chart-minmax-labeldate{font-size:11.5px;color:var(--ink-soft);display:flex;gap:6px;align-items:baseline;}
  .weight-chart-minmax-date{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);}
  .weight-chart-minmax-value{font-size:20px;font-weight:700;color:var(--teal-dark);font-family:var(--font-mono);margin-top:2px;}

  .rec-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:8px;box-shadow:var(--shadow);}
  .med-warn-7{background:#FFF7DD;border-color:#E9D58A;}
  .med-warn-3{background:#FCE3C3;border-color:#E3A94F;}
  .med-overdue{background:#FBDBDB;border-color:#D98A8A;}
  .plan-entered{background:#E4F0E8;border-color:#B9D9C4;}
  .med-urgency-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;margin-bottom:6px;}
  .med-urgency-tag.warn-7{background:#E9D58A;color:#5C4A0A;}
  .med-urgency-tag.warn-3{background:#E3A94F;color:#4A2E00;}
  .med-urgency-tag.overdue{background:#D98A8A;color:#5C0A0A;}
  .med-urgency-tag.entered{background:#B9D9C4;color:#204E42;}

  /* documents accordion (profile screen) */
  .acc{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);margin-bottom:8px;overflow:hidden;}
  .acc-head{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;cursor:pointer;}
  .acc-head-left{display:flex;align-items:center;gap:10px;min-width:0;}
  .acc-icon{font-size:18px;flex-shrink:0;}
  .acc-title{font-weight:700;font-size:14px;}
  .acc-status{font-size:11px;color:var(--muted);margin-top:2px;}
  .acc-status.doc-status-ok{color:var(--teal-dark);font-weight:700;}
  .acc-status.doc-status-warn{color:#A85A00;font-weight:700;}
  .acc-status.doc-status-overdue{color:var(--red);font-weight:700;}
  .acc-status.doc-status-none{color:var(--muted);}
  .acc-chev{color:var(--muted);font-size:12px;flex-shrink:0;}
  .acc-body{padding:0 14px 16px;border-top:1px dashed var(--line);}
  .acc-photo{width:100%;min-height:90px;border-radius:10px;background:var(--surface-2);border:1px dashed var(--line);margin-top:12px;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--muted);padding:20px 0;}
  .acc-meta-row{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ink-soft);margin-top:10px;}
  .rec-top{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft);margin-bottom:4px;font-family:var(--font-mono);}
  .rec-main{font-size:14px;line-height:1.5;}
  .ex-type{font-weight:700;font-size:14.5px;color:var(--teal-dark);margin-bottom:6px;}
  .ex-chip-grid{display:flex;flex-wrap:wrap;gap:6px;}
  .ex-chip{display:flex;align-items:center;gap:5px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 8px;}
  .ex-chip-icon{font-size:12px;line-height:1;}
  .ex-chip-text{display:flex;flex-direction:column;line-height:1.2;}
  .ex-chip-label{font-size:8.5px;color:var(--muted);letter-spacing:.02em;}
  .ex-chip-val{font-size:12px;font-family:var(--font-mono);color:var(--ink);font-weight:600;}
  .route-preview{margin-top:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 8px 6px;}
  .route-preview svg{display:block;}
  .route-preview-label{font-size:10.5px;color:var(--muted);text-align:right;margin-top:2px;}
  .route-preview-badge{display:flex;align-items:center;padding:8px 10px;font-size:12px;color:var(--muted);}
  .rec-main b{color:var(--teal-dark);}
  .rec-actions{display:flex;gap:10px;margin-top:8px;}
  .rec-actions button{border:none;background:none;font-size:12px;color:var(--blue);cursor:pointer;padding:2px 0;}
  .rec-actions button.del{color:var(--red);}

  .fab{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + var(--ad-h) + 28px);max-width:480px;width:calc(100% - 32px);z-index:30;}
  .fab button{width:100%;background:var(--amber);color:#2A2005;border:none;border-radius:999px;padding:13px;font-size:15px;font-weight:600;box-shadow:0 4px 14px rgba(223,161,58,.5);cursor:pointer;}

  /* bottom nav */
  .tabbar{position:fixed;left:0;right:0;bottom:var(--ad-h);background:var(--surface);border-top:1px solid var(--line);display:flex;max-width:480px;margin:0 auto;box-shadow:0 -2px 10px rgba(0,0,0,.05);height:var(--tabbar-h);z-index:31;}
  .tabbar button{flex:1;background:none;border:none;padding:9px 2px 8px;font-size:10.5px;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-family:var(--font-body);}
  .tabbar button .ic{font-size:19px;}
  .tabbar button.active{color:var(--teal-dark);font-weight:600;}

  /* ad banner placeholder (AdMob等を将来ここに差し込む想定) */
  .ad-banner{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;height:var(--ad-h);overflow:hidden;background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 8px,var(--line) 8px,var(--line) 16px);border-top:1px dashed var(--muted);display:flex;align-items:center;justify-content:center;z-index:32;}
  .ad-banner .ad-inner{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:4px 12px;font-size:10.5px;color:var(--muted);font-family:var(--font-mono);}

  /* settings list */
  .settings-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:14px;}
  .settings-list button{width:100%;background:none;border:none;text-align:left;padding:13px 16px;font-size:14px;color:var(--ink);display:flex;justify-content:space-between;align-items:center;cursor:pointer;border-bottom:1px solid var(--line);font-family:var(--font-body);}
  .settings-list button:last-child{border-bottom:none;}
  .settings-list button .chev{color:var(--muted);}
  .info-body{font-size:13.5px;line-height:1.8;color:var(--ink-soft);white-space:pre-line;}

  /* 競技記録：複数走まとめ入力 */
  .heat-row{display:flex;gap:6px;align-items:flex-end;margin-bottom:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px;}
  .heat-field{flex:1;min-width:0;}
  .heat-field label{display:block;font-size:10px;color:var(--ink-soft);margin-bottom:3px;}
  .heat-field input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 7px;font-size:13px;background:var(--surface);color:var(--ink);font-family:var(--font-body);}
  .removeHeatBtn{border:none;background:none;color:var(--red);font-size:17px;padding:6px 2px;cursor:pointer;line-height:1;}

  /* 競技記録一覧：同日複数走のまとめ表示 */
  .heat-times-list{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px;}
  .heat-time-row-wrap{border-bottom:1px dashed var(--line);}
  .heat-time-row-wrap:last-child{border-bottom:none;}
  .heat-time-row{display:flex;align-items:center;gap:8px;padding:6px 0 0;font-size:13px;}
  .heat-time-sub{font-size:10.5px;color:var(--muted);padding:0 0 6px 64px;font-family:var(--font-mono);}
  .heat-time-label{color:var(--ink-soft);width:56px;flex-shrink:0;}
  .heat-time-val{font-family:var(--font-mono);font-weight:600;color:var(--teal-dark);flex:1;}
  .heat-time-row .edit,.heat-time-row .edit-heat-group,.heat-time-row .del{border:none;background:none;font-size:11.5px;cursor:pointer;padding:2px 4px;}
  .heat-time-row .edit,.heat-time-row .edit-heat-group{color:var(--blue);}
  .heat-time-row .del{color:var(--red);}
  .del-group-btn, .del-meal-group-btn{width:100%;margin-top:12px;background:none;border:1px solid var(--red);color:var(--red);border-radius:999px;padding:8px;font-size:12px;cursor:pointer;font-family:var(--font-body);}

  /* 天候アイコン選択 */
  .weather-icon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
  .weather-icon-btn{display:flex;flex-direction:column;align-items:center;gap:4px;border:1.5px solid var(--line);background:var(--surface-2);border-radius:12px;padding:10px 4px;cursor:pointer;}
  .weather-icon-btn .wi-icon{font-size:22px;}
  .weather-icon-btn .wi-label{font-size:11px;color:var(--ink-soft);}
  .weather-icon-btn.active{border-color:var(--teal);background:var(--surface);box-shadow:0 0 0 1px var(--teal);}
  .weather-icon-btn.active .wi-label{color:var(--teal-dark);font-weight:600;}
  .windy-toggle-btn.active{background:var(--amber-soft);border-color:var(--amber);color:#6b4c12;font-weight:600;}

  /* 歴代ベストタイム */
  .pb-item{cursor:pointer;transition:transform .1s;}
  .pb-item:active{transform:scale(0.97);}
  @keyframes flashHighlight{
    0%{background:var(--amber-soft);}
    100%{background:transparent;}
  }
  .flash-highlight{animation:flashHighlight 1.4s ease-out;border-radius:8px;}
  .pb-section{margin-bottom:16px;}
  .pb-section:last-child{margin-bottom:0;}
  .pb-section-head{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;padding:8px 10px;border-radius:8px;margin-bottom:7px;border:none;width:100%;cursor:pointer;font-family:var(--font-body);background:var(--surface-2);color:var(--ink);}
  .pb-section-chev{margin-left:auto;font-size:11px;}
  .pb-section-body{display:flex;flex-direction:column;gap:6px;}
  .pb-row{display:flex;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;}
  .pb-row-dist{font-size:12px;color:var(--ink-soft);width:52px;flex-shrink:0;}
  .pb-row-timecol{display:flex;flex-direction:column;flex:1;gap:2px;}
  .pb-row-time{font-family:var(--font-mono);font-size:17px;font-weight:700;color:var(--teal-dark);}
  .pb-row-speed{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);}
  .pb-row-date{font-size:10.5px;color:var(--muted);flex-shrink:0;}
  .pb-row-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0;}
  .pb-row-weight{font-size:10.5px;color:var(--ink-soft);font-family:var(--font-mono);}
  .pb-row-weight-approx{color:var(--muted);font-weight:400;}

  /* modal */
  .overlay{position:fixed;inset:0;background:rgba(20,24,17,.45);display:flex;align-items:flex-end;justify-content:center;z-index:50;}
  .modal{background:var(--surface);width:100%;max-width:480px;max-height:88vh;overflow-y:auto;border-radius:20px 20px 0 0;padding:18px 18px 26px;}
  .modal h3{font-family:var(--font-head);margin:0 0 4px;font-size:17px;color:var(--teal-dark);}
  .modal .close{position:absolute;}
  .modal-head{display:flex;justify-content:space-between;align-items:center;}
  .modal-head button{border:none;background:var(--surface-2);width:30px;height:30px;border-radius:50%;font-size:15px;color:var(--ink-soft);cursor:pointer;}

  .field{margin-top:14px;}
  .field label{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:5px;}
  .field input, .field select, .field textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 11px;font-size:16px;font-family:var(--font-body);background:var(--surface-2);color:var(--ink);}
  .field input[type="date"], .field input[type="time"], .field input[type="datetime-local"]{width:100%;box-sizing:border-box;min-width:0;-webkit-appearance:none;appearance:none;padding:10px 11px;line-height:1.4;min-height:44px;}
  .field input.field-error, .field select.field-error, .field textarea.field-error, .bcs-picker-btn.field-error{border-color:var(--red) !important;box-shadow:0 0 0 1px var(--red);}
  .field-error-msg{color:var(--red);font-size:11.5px;margin-top:4px;}
  .field textarea{min-height:60px;resize:vertical;}
  .field .unit{font-size:12px;color:var(--muted);margin-left:6px;}
  .field-row{display:flex;gap:10px;}
  .field-row .field{flex:1;}

  .save-btn{margin-top:20px;width:100%;background:var(--teal);color:#fff;border:none;border-radius:999px;padding:13px;font-size:15px;font-weight:600;cursor:pointer;}
  .cancel-btn{margin-top:8px;width:100%;background:none;border:none;color:var(--ink-soft);padding:8px;font-size:13px;cursor:pointer;}

  /* モーダル内の保存ボタンも、選択中の着せ替え(Sports/Classic)の配色に合わせる。
     モーダルはdocument.bodyに直接追加される（#app配下ではない）ため、
     06-render-root.jsがbody要素にも付与しているtheme-racer/theme-swissクラスを起点にする。 */
  body.theme-racer .overlay .save-btn{background:#ffb100;color:#1a1200;font-family:'Oswald',sans-serif;font-weight:700;letter-spacing:.03em;}
  body.theme-swiss .overlay .save-btn{background:#e8371c;color:#fff;border:2px solid #0a0a0a;border-radius:0;font-family:'Archivo',sans-serif;font-weight:700;}

  .profile-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px;box-shadow:var(--shadow);}
  .profile-card h4{font-family:var(--font-head);margin:0 0 10px;color:var(--teal-dark);font-size:16px;}
  .kv{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13.5px;}
  .kv:last-child{border-bottom:none;}
  .kv span:first-child{color:var(--ink-soft);}

  .toast{position:fixed;bottom:calc(var(--tabbar-h) + var(--ad-h) + 40px);left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:9px 18px;border-radius:999px;font-size:13px;z-index:80;opacity:0;transition:opacity .25s;pointer-events:none;}
  .toast.show{opacity:1;}

  .loading{padding:60px 20px;text-align:center;color:var(--muted);font-size:13px;}
  .small-note{font-size:11.5px;color:var(--muted);text-align:center;margin:10px 0 0;line-height:1.6;}
  .link-btn{background:none;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:12.5px;color:var(--ink-soft);cursor:pointer;}

  /* BCS picker */
  .bcs-picker-btn{width:100%;text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 11px;font-size:16px;background:var(--surface-2);color:var(--ink);display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-family:var(--font-body);}
  .bcs-picker-btn .chev{color:var(--muted);}
  .bcs-group{border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line);margin-bottom:14px;}
  .bcs-group-head{padding:9px 12px;color:#fff;font-size:13px;font-weight:600;display:flex;justify-content:space-between;align-items:center;}
  .bcs-group-body{background:var(--surface);padding:12px;}
  .bcs-nums{display:flex;gap:8px;margin-bottom:10px;}
  .bcs-num{flex:1;border:1.5px solid var(--line);background:var(--surface-2);border-radius:10px;padding:10px 0;text-align:center;font-family:var(--font-mono);font-size:18px;font-weight:700;cursor:pointer;color:var(--ink);}
  .bcs-num small{display:block;font-family:var(--font-body);font-size:9px;font-weight:400;color:var(--ink-soft);margin-top:2px;}
  .bcs-silhouette{margin-bottom:4px;}
  .bcs-item-block{margin-bottom:14px;}
  .bcs-item-block:last-child{margin-bottom:0;}
  .bcs-num-full{width:100%;display:flex;align-items:baseline;gap:8px;border:1.5px solid var(--line);background:var(--surface-2);border-radius:10px;padding:9px 12px;cursor:pointer;margin-bottom:6px;text-align:left;}
  .bcs-num-full-score{font-family:var(--font-mono);font-size:19px;font-weight:700;color:var(--ink);flex-shrink:0;}
  .bcs-num-full-name{font-size:13px;font-weight:600;color:var(--ink);flex:1;}
  .bcs-num-full-check{font-size:11px;font-weight:600;color:var(--teal-dark);flex-shrink:0;}
  .bcs-desc{display:flex;gap:10px;}
  .bcs-desc .col{flex:1;font-size:11.5px;line-height:1.55;color:var(--ink-soft);}
  .bcs-desc .col b{display:block;font-size:11px;color:var(--ink);margin-bottom:3px;}
  .mobile-done-bar{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:8px 14px;display:none;justify-content:flex-end;z-index:200;box-shadow:0 -2px 8px rgba(0,0,0,.08);}
  .mobile-done-bar.show{display:flex;}
  .mobile-done-bar button{background:var(--teal);color:#fff;border:none;border-radius:999px;padding:8px 22px;font-size:14px;font-weight:600;cursor:pointer;}

  /* ホーム画面テーマ選択カード（設定タブ） */
  .theme-choice-card{display:flex;align-items:flex-start;gap:10px;border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:12px;cursor:pointer;background:var(--surface-2);}
  .theme-choice-card input[type="radio"]{margin-top:3px;flex-shrink:0;}
  .theme-choice-card.selected{border-color:var(--teal);background:var(--surface);box-shadow:0 0 0 1px var(--teal);}
/* ---------- 共通：着せ替えコンテナのリセット ---------- */
.dash-racer, .dash-swiss{margin:-4px -16px -12px;}

/* =============== ① レーサー型 =============== */
.dash-racer{
  --rd-asphalt:#14161a;
  --rd-asphalt-2:#1d2026;
  --rd-line:#eef0f2;
  --rd-amber:#ffb100;
  --rd-danger:#ff4d4f;
  --rd-ok:#3ddc84;
  --rd-muted:#8a8f9a;
  --rd-sand:#2dd4bf;
  background:var(--rd-asphalt);
  color:var(--rd-line);
  font-family:'Oswald', sans-serif;
  padding:14px 14px 20px;
}
.dash-racer .rd-hero{
  background:linear-gradient(160deg, var(--rd-asphalt-2), #0f1114 80%);
  border:1px solid #2a2e37;border-radius:4px;padding:20px 18px 16px;position:relative;overflow:hidden;
}
.dash-racer .rd-hero::before{content:"";position:absolute;top:-40%;right:-20%;width:220px;height:220px;background:radial-gradient(circle, rgba(255,177,0,.16), transparent 70%);}
.dash-racer .rd-eyebrow{font-size:11px;letter-spacing:.25em;color:var(--rd-amber);text-transform:uppercase;font-weight:600;}
.dash-racer .rd-event-name{font-size:19px;font-weight:700;margin:6px 0 2px;line-height:1.25;}
.dash-racer .rd-venue{font-size:12.5px;color:var(--rd-muted);line-height:1.4;}
.dash-racer .rd-race-meta{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--rd-muted);margin-top:4px;letter-spacing:.03em;}
.dash-racer .rd-countdown{display:flex;align-items:baseline;gap:10px;margin-top:14px;}
.dash-racer .rd-countdown .num{font-family:'JetBrains Mono',monospace;font-size:56px;font-weight:700;color:var(--rd-line);line-height:1;letter-spacing:-.02em;}
.dash-racer .rd-countdown .num span{color:var(--rd-amber);}
.dash-racer .rd-countdown .unit{font-size:12.5px;color:var(--rd-muted);letter-spacing:.1em;text-transform:uppercase;}
.dash-racer .rd-status-row{display:flex;gap:8px;margin-top:12px;}
.dash-racer .rd-status-chip{font-size:10.5px;padding:5px 10px;border-radius:3px;font-weight:600;letter-spacing:.03em;}
.dash-racer .rd-status-chip.entered{background:rgba(61,220,132,.12);color:var(--rd-ok);border:1px solid rgba(61,220,132,.4);}
.dash-racer .rd-status-chip.pending{background:rgba(255,177,0,.1);color:var(--rd-amber);border:1px solid rgba(255,177,0,.4);}

.dash-racer .rd-section-label{display:flex;align-items:center;gap:10px;margin:24px 0 12px;}
.dash-racer .rd-tag{background:var(--rd-amber);color:#1a1200;font-size:10.5px;font-weight:700;padding:3px 8px;letter-spacing:.08em;}
.dash-racer .rd-section-txt{font-size:12px;color:var(--rd-muted);letter-spacing:.1em;text-transform:uppercase;}

.dash-racer .rd-pb-board{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.dash-racer .rd-pb-board.single{grid-template-columns:1fr;}
.dash-racer .rd-pb-card{background:var(--rd-asphalt-2);border:1px solid #2a2e37;border-radius:3px;padding:13px 14px 11px;}
.dash-racer .rd-pb-dist{font-size:11px;color:var(--rd-muted);letter-spacing:.05em;}
.dash-racer .rd-pb-surf{font-size:10.5px;color:var(--rd-amber);margin-bottom:8px;display:inline-block;}
.dash-racer .rd-pb-surf.sand{color:var(--rd-sand);}
.dash-racer .rd-pb-time{font-family:'JetBrains Mono',monospace;font-size:27px;font-weight:700;color:var(--rd-line);}
.dash-racer .rd-pb-time small{font-size:13px;color:var(--rd-muted);font-weight:400;}
.dash-racer .rd-pb-date{font-size:10.5px;color:var(--rd-muted);margin-top:6px;}
.dash-racer .rd-pb-kmh{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--rd-amber);margin-top:2px;}
.dash-racer .rd-pb-empty{background:var(--rd-asphalt-2);border:1px dashed #2a2e37;border-radius:3px;padding:24px 14px;text-align:center;color:var(--rd-muted);font-size:12.5px;grid-column:1/-1;}

.dash-racer .rd-condition-strip{display:flex;justify-content:space-between;background:var(--rd-asphalt-2);border:1px solid #2a2e37;border-radius:3px;padding:14px 14px;}
.dash-racer .rd-cond-item{text-align:center;flex:1;}
.dash-racer .rd-cond-label{font-size:10.5px;color:var(--rd-muted);letter-spacing:.05em;}
.dash-racer .rd-cond-val{font-family:'JetBrains Mono',monospace;font-size:19px;font-weight:700;margin-top:4px;}
.dash-racer .rd-cond-delta{font-size:10.5px;margin-top:2px;}
.dash-racer .rd-cond-delta.down{color:var(--rd-ok);}
.dash-racer .rd-cond-delta.up{color:var(--rd-danger);}
.dash-racer .rd-divider-v{width:1px;background:#2a2e37;margin:2px 0;}

.dash-racer .rd-trend-card{background:var(--rd-asphalt-2);border:1px solid #2a2e37;border-radius:3px;padding:14px 15px 12px;}

.dash-racer .rd-medical-alert{display:block;width:100%;text-align:left;border:none;border-radius:3px;padding:12px 14px;margin:0;cursor:pointer;font-family:inherit;}
.dash-racer .rd-medical-alert.warn-7{background:#3a2f10;}
.dash-racer .rd-medical-alert.warn-3{background:#3d2410;}
.dash-racer .rd-medical-alert.overdue{background:#3d1414;}
.dash-racer .rd-medical-alert-row{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.dash-racer .rd-medical-alert-label{font-size:13px;font-weight:700;font-family:'Oswald',sans-serif;letter-spacing:.02em;}
.dash-racer .rd-medical-alert.warn-7 .rd-medical-alert-label{color:#ffcf5c;}
.dash-racer .rd-medical-alert.warn-3 .rd-medical-alert-label{color:#ffb266;}
.dash-racer .rd-medical-alert.overdue .rd-medical-alert-label{color:#ff8080;}
.dash-racer .rd-medical-alert-cta{font-size:11px;color:var(--rd-muted);white-space:nowrap;}
.dash-racer .rd-medical-alert-detail{color:#eef0f2;font-size:12.5px;margin-top:5px;}
.dash-racer .rd-medical-alert-more{color:var(--rd-muted);font-size:11px;margin-top:4px;}
.dash-racer .rd-trend-title{font-size:10.5px;color:var(--rd-muted);letter-spacing:.05em;text-transform:uppercase;margin-bottom:10px;}
.dash-racer .rd-trend-svg text{font-family:'JetBrains Mono',monospace;}
.dash-racer .rd-trend-labels{display:flex;justify-content:space-between;font-size:9.5px;color:var(--rd-muted);margin-top:4px;font-family:'JetBrains Mono',monospace;}
.dash-racer .rd-dot-hit{cursor:pointer;}
.dash-racer .rd-trend-info{margin-top:10px;padding-top:10px;border-top:1px dashed #2a2e37;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--rd-muted);min-height:16px;}
.dash-racer .rd-trend-info b{color:var(--rd-amber);}
.dash-racer .rd-legend-row{display:flex;flex-direction:column;gap:6px;font-size:9.5px;color:var(--rd-muted);margin-top:10px;}
.dash-racer .rd-legend-row .lg-item{display:flex;align-items:center;gap:5px;}
.dash-racer .rd-legend-dot{width:6px;height:6px;border-radius:50%;background:#8a8f9a;display:inline-block;flex-shrink:0;}
.dash-racer .rd-legend-diamond{width:7px;height:7px;background:var(--rd-sand);display:inline-block;transform:rotate(45deg);flex-shrink:0;}
.dash-racer .rd-legend-row .lg-note{color:var(--rd-sand);font-weight:600;}
.dash-racer .rd-view-more{display:block;text-align:center;margin-top:12px;font-size:10.5px;font-weight:700;letter-spacing:.05em;color:var(--rd-amber);border:1px solid rgba(255,177,0,.4);border-radius:3px;padding:9px;text-decoration:none;background:none;width:100%;cursor:pointer;font-family:'Oswald',sans-serif;}

.dash-racer .rd-lap-log{border:1px solid #2a2e37;border-radius:3px;overflow:hidden;}
.dash-racer .rd-lap-row{position:relative;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #22252c;font-size:12.5px;}
.dash-racer .rd-lap-row:last-child{border-bottom:none;}
.dash-racer .rd-lap-name{font-weight:500;}
.dash-racer .rd-lap-meta{font-size:10.5px;color:var(--rd-muted);margin-top:2px;}
.dash-racer .rd-lap-sub{font-size:10px;color:var(--rd-amber);margin-top:2px;font-family:'JetBrains Mono',monospace;opacity:.85;}
.dash-racer .rd-lap-time{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:15px;color:var(--rd-amber);}
.dash-racer .rd-pb-star{display:inline-block;margin-left:6px;background:var(--rd-amber);color:#1a1200;font-weight:700;padding:2px 7px;border-radius:10px;font-size:10px;letter-spacing:.02em;}

@keyframes rdPbFlash{
  0%{box-shadow:0 0 0 0 rgba(255,177,0,.6);background:rgba(255,177,0,.22);}
  15%{box-shadow:0 0 0 14px rgba(255,177,0,.25);background:rgba(255,177,0,.22);}
  65%{box-shadow:0 0 0 14px rgba(255,177,0,0);background:rgba(255,177,0,.18);}
  100%{box-shadow:0 0 0 0 rgba(255,177,0,0);background:transparent;}
}
.dash-racer .rd-lap-row.pb-new{animation:rdPbFlash 3s ease-out 1;}
@keyframes rdPbPop{
  0%{transform:scale(0) rotate(-15deg);opacity:0;}
  55%{transform:scale(1.35) rotate(6deg);opacity:1;}
  100%{transform:scale(1) rotate(0);opacity:1;}
}
.dash-racer .rd-lap-row.pb-new .rd-pb-star{animation:rdPbPop .7s cubic-bezier(.34,1.56,.64,1) .25s both;}
.dash-racer .rd-spark{position:absolute;font-size:11px;color:var(--rd-amber);opacity:0;pointer-events:none;}
@keyframes rdSparkFly{
  0%{opacity:0;transform:translate(0,0) scale(.4) rotate(0deg);}
  25%{opacity:1;}
  100%{opacity:0;transform:var(--spark-end) scale(1) rotate(180deg);}
}
.dash-racer .rd-lap-row.pb-new .rd-spark{animation:rdSparkFly 1.1s ease-out .3s both;}
.dash-racer .empty{background:var(--rd-asphalt-2);border:1px dashed #2a2e37;color:var(--rd-muted);border-radius:3px;}
.dash-racer .rd-foot-note{text-align:center;font-size:10px;color:var(--rd-muted);letter-spacing:.05em;margin-top:20px;font-family:'JetBrains Mono',monospace;}

/* =============== ③ スイス型 =============== */
.dash-swiss{
  --sd-black:#0a0a0a;
  --sd-white:#ffffff;
  --sd-red:#e8371c;
  --sd-blue:#0a84ff;
  --sd-gray:#6e6e6e;
  background:var(--sd-white);
  color:var(--sd-black);
  font-family:'Archivo', sans-serif;
  padding:0 0 20px;
  border-left:2px solid var(--sd-black);
  border-right:2px solid var(--sd-black);
  border-bottom:2px solid var(--sd-black);
}
.dash-swiss .sd-hero{border-bottom:2px solid var(--sd-black);padding:30px 18px 22px;text-align:center;}
.dash-swiss .sd-hero .sd-lbl{font-size:10.5px;letter-spacing:.25em;color:var(--sd-red);font-weight:700;}
.dash-swiss .sd-hero .sd-huge{font-family:'Archivo Black';font-size:96px;line-height:.8;letter-spacing:-.04em;color:var(--sd-black);margin:8px 0;}
.dash-swiss .sd-hero .sd-huge-unit{font-size:12px;letter-spacing:.2em;color:var(--sd-gray);}
.dash-swiss .sd-hero .sd-event{font-size:15px;font-weight:700;margin-top:16px;}
.dash-swiss .sd-hero .sd-meta{margin-top:4px;}
.dash-swiss .sd-hero .sd-venue{font-size:10.5px;color:var(--sd-gray);line-height:1.4;}
.dash-swiss .sd-hero .sd-race-meta{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--sd-gray);margin-top:4px;letter-spacing:.05em;}
.dash-swiss .sd-hero .sd-status{margin-top:14px;font-size:10.5px;letter-spacing:.1em;font-weight:700;color:var(--sd-red);display:inline-block;border-bottom:2px solid var(--sd-red);padding-bottom:2px;}

.dash-swiss .sd-row{display:flex;border-bottom:2px solid var(--sd-black);}
.dash-swiss .sd-cell{flex:1;padding:15px 14px;border-right:1px solid var(--sd-black);}
.dash-swiss .sd-cell:last-child{border-right:none;}
.dash-swiss .sd-cell .sd-idx{font-family:'Archivo Black';font-size:10.5px;color:var(--sd-red);}
.dash-swiss .sd-cell .sd-clbl{font-size:9.5px;color:var(--sd-gray);margin-top:6px;letter-spacing:.02em;}
.dash-swiss .sd-cell .sd-cval{font-family:'Archivo Black';font-size:22px;margin-top:4px;}
.dash-swiss .sd-cell .sd-csub{font-size:10px;color:var(--sd-gray);margin-top:4px;}
.dash-swiss .sd-cell .sd-ckmh{font-size:9.5px;color:var(--sd-red);margin-top:2px;font-weight:700;}

.dash-swiss .sd-trend-card{border-bottom:2px solid var(--sd-black);padding:16px 18px 14px;}

.dash-swiss .sd-medical-alert-wrap{padding:16px 18px 14px;border-bottom:2px solid var(--sd-black);}
.dash-swiss .sd-medical-alert{display:block;width:100%;text-align:left;background:#fff;border:none;padding:0;margin:0;cursor:pointer;font-family:inherit;}
.dash-swiss .sd-medical-alert-row{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.dash-swiss .sd-medical-alert-label{font-size:12.5px;font-weight:700;font-family:'Archivo',sans-serif;display:inline-block;padding:2px 8px;}
.dash-swiss .sd-medical-alert.warn-7 .sd-medical-alert-label{background:#f4c430;color:var(--sd-black);}
.dash-swiss .sd-medical-alert.warn-3 .sd-medical-alert-label{background:#e8371c;color:#fff;}
.dash-swiss .sd-medical-alert.overdue .sd-medical-alert-label{background:#e8371c;color:#fff;}
.dash-swiss .sd-medical-alert-cta{font-size:11px;color:#6e6e6e;white-space:nowrap;}
.dash-swiss .sd-medical-alert-detail{color:var(--sd-black);font-size:12.5px;margin-top:6px;}
.dash-swiss .sd-medical-alert-more{color:#6e6e6e;font-size:11px;margin-top:4px;}
.dash-swiss .sd-trend-title{font-size:10px;letter-spacing:.1em;color:var(--sd-gray);margin-bottom:10px;}
.dash-swiss .sd-trend-svg text{font-family:'Archivo';}
.dash-swiss .sd-trend-labels{display:flex;justify-content:space-between;font-size:9.5px;color:var(--sd-gray);margin-top:2px;}
.dash-swiss .sd-dot-hit{cursor:pointer;}
.dash-swiss .sd-trend-info{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd;font-size:10.5px;color:var(--sd-gray);min-height:16px;}
.dash-swiss .sd-trend-info b{color:var(--sd-black);}
.dash-swiss .sd-legend-row{display:flex;flex-direction:column;gap:6px;font-size:9.5px;color:var(--sd-gray);margin-top:10px;}
.dash-swiss .sd-legend-row .lg-item{display:flex;align-items:center;gap:5px;}
.dash-swiss .sd-legend-dot{width:6px;height:6px;border-radius:50%;background:var(--sd-gray);display:inline-block;flex-shrink:0;}
.dash-swiss .sd-legend-diamond{width:7px;height:7px;background:var(--sd-blue);display:inline-block;transform:rotate(45deg);flex-shrink:0;}
.dash-swiss .sd-legend-row .lg-note{color:var(--sd-blue);font-weight:700;}
.dash-swiss .sd-view-more{display:block;text-align:center;margin-top:12px;font-size:10.5px;font-weight:700;letter-spacing:.05em;color:var(--sd-red);border:1px solid var(--sd-red);padding:9px;text-decoration:none;background:none;width:100%;cursor:pointer;font-family:'Archivo',sans-serif;}

.dash-swiss .sd-table-title{padding:14px 18px 0;font-size:10px;letter-spacing:.12em;color:var(--sd-gray);display:flex;justify-content:space-between;}
.dash-swiss .sd-log{margin-top:6px;}
.dash-swiss .sd-log-row{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:11px 18px;border-bottom:1px solid #ddd;}
.dash-swiss .sd-log-row:nth-child(even){background:#f7f7f7;}
.dash-swiss .sd-log-name{font-size:12.5px;font-weight:700;line-height:1.35;}
.dash-swiss .sd-log-meta{font-size:10px;color:var(--sd-gray);margin-top:3px;font-family:'JetBrains Mono',monospace;letter-spacing:.02em;}
.dash-swiss .sd-log-sub{font-size:10px;color:var(--sd-red);margin-top:2px;font-family:'JetBrains Mono',monospace;}
.dash-swiss .sd-log-time{font-family:'Archivo Black';font-size:16px;flex-shrink:0;text-align:right;white-space:nowrap;}
.dash-swiss td.sd-num{font-family:'Archivo Black';font-weight:400;position:relative;}
.dash-swiss .sd-pb-star{display:inline-block;margin-left:6px;background:var(--sd-red);color:#fff;font-weight:700;padding:2px 7px;border-radius:10px;font-size:9.5px;letter-spacing:.02em;}

@keyframes sdPbFlash{
  0%{background:rgba(232,55,28,.16);}
  65%{background:rgba(232,55,28,.1);}
  100%{background:transparent;}
}
.dash-swiss .sd-log-row.pb-row{animation:sdPbFlash 3s ease-out 1;}
.dash-swiss .sd-spark{position:absolute;font-size:11px;color:var(--sd-red);opacity:0;pointer-events:none;}
@keyframes sdSparkFly{
  0%{opacity:0;transform:translate(0,0) scale(.4) rotate(0deg);}
  25%{opacity:1;}
  100%{opacity:0;transform:var(--spark-end) scale(1) rotate(180deg);}
}
.dash-swiss .sd-log-row.pb-row .sd-spark{animation:sdSparkFly 1.1s ease-out .3s both;}
.dash-swiss .sd-footer{padding:16px 18px 4px;font-size:9.5px;letter-spacing:.1em;color:var(--sd-gray);display:flex;justify-content:space-between;border-top:2px solid var(--sd-black);margin-top:4px;}
.dash-swiss .empty{background:#f7f7f7;border:1px dashed #ddd;color:var(--sd-gray);border-radius:0;margin-left:18px;margin-right:18px;}

/* ==========================================================
   ヘッダー・タブバーのテーマ化
   （設定で選んだテーマが記録／プロフィール／設定タブにも適用される）
   ========================================================== */
#app.theme-racer, #app.theme-swiss{padding-bottom:calc(var(--tabbar-h) + var(--ad-h) + 18px);}

/* ---- レーサー型：ヘッダー・タブバー ---- */
html.theme-racer, body.theme-racer, #app.theme-racer{background:#14161a;}
#app.theme-racer .topbar{
  background:#14161a;border-radius:0;box-shadow:none;padding:14px 16px 12px;
  padding-top:calc(14px + env(safe-area-inset-top));
  display:flex;flex-direction:column;gap:10px;
}
#app.theme-racer .topbar .brand{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;letter-spacing:.03em;color:#eef0f2;white-space:normal;line-height:1.3;}
#app.theme-racer .dtrack-btn{border-color:#ffb100;color:#ffb100;font-family:'Oswald',sans-serif;}
#app.theme-racer .dtrack-btn:hover{background:rgba(255,177,0,.1);}
/* 2026-08-16追加：計測中・一時停止中のD-TRACKボタン（Sportsテーマ）。
   通常時のアンバー色から赤に変え、ゆったりしたペースで明滅させることで
   「×」で画面を閉じた後もヘッダーだけで計測中だと分かるようにする。 */
#app.theme-racer .dtrack-btn.dtrack-btn-active{border-color:#e8371c;color:#e8371c;}
#app.theme-racer .dogswitch{gap:6px;margin-top:0;max-width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;}
#app.theme-racer .dogswitch::-webkit-scrollbar{display:none;}
#app.theme-racer .dogswitch button{flex:0 0 auto;white-space:nowrap;border:1px solid #333743;background:none;border-radius:999px;padding:6px 12px;color:#8a8f9a;font-family:'Oswald',sans-serif;}
#app.theme-racer .dogswitch button.active{background:#ffb100;border-color:#ffb100;color:#1a1200;font-weight:700;}
#app.theme-racer .dogswitch.loop-row-fit{justify-content:flex-end;}
#app.theme-racer .tabbar{background:#14161a;border-top:1px solid #2a2e37;box-shadow:none;}
#app.theme-racer .tabbar button{color:#6a6f78;font-family:'Oswald',sans-serif;letter-spacing:.1em;position:relative;}
#app.theme-racer .tabbar button::before{content:"";display:block;width:4px;height:4px;background:#3a3f4a;border-radius:50%;margin:0 auto 5px;transition:.15s;}
#app.theme-racer .tabbar button.active{color:#ffb100;font-weight:600;}
#app.theme-racer .tabbar button.active::before{background:#ffb100;box-shadow:0 0 6px rgba(255,177,0,.7);}

/* ---- 先頭に戻るボタン（共通base + レーサー配色） ---- */
.back-to-top{
  position:fixed;right:16px;
  bottom:calc(var(--tabbar-h) + var(--ad-h) + 18px);
  width:38px;height:38px;border-radius:50%;border:none;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;line-height:1;cursor:pointer;z-index:32;
  opacity:0;pointer-events:none;transform:translateY(6px);
  transition:opacity .2s ease, transform .2s ease;
}
.back-to-top.show{opacity:1;pointer-events:auto;transform:translateY(0);}
#app.theme-racer .back-to-top{background:rgba(29,32,38,.85);color:#8a8f9a;border:1px solid #333743;backdrop-filter:blur(3px);}
#app.theme-racer .back-to-top:active{color:#ffb100;}

/* ---- スイス型：ヘッダー・タブバー ---- */
html.theme-swiss, body.theme-swiss, #app.theme-swiss{background:#fff;}
#app.theme-swiss .topbar{
  background:#fff;border-radius:0;box-shadow:none;border-bottom:2px solid #0a0a0a;padding:14px 18px;
  padding-top:calc(14px + env(safe-area-inset-top));
  display:flex;flex-direction:column;gap:10px;
}
#app.theme-swiss .topbar .brand{font-family:'Archivo Black';font-size:15px;letter-spacing:.01em;color:#0a0a0a;white-space:normal;line-height:1.3;}
#app.theme-swiss .dtrack-btn{background:#fff;border:1px solid #0a0a0a;color:#e8371c;border-radius:0;font-family:'Archivo',sans-serif;}
#app.theme-swiss .dtrack-btn:hover{background:#f7f7f7;}
/* 2026-08-16追加：計測中・一時停止中のD-TRACKボタン（Classicテーマ）。
   Classicは通常時から文字が赤（#e8371c）のため、赤くするだけでは変化が
   分からない。そのため計測中は塗りつぶし（赤背景・白文字）に反転させる。 */
#app.theme-swiss .dtrack-btn.dtrack-btn-active{background:#e8371c;border-color:#e8371c;color:#fff;}

/* 2026-08-16追加：D-TRACKボタンの「計測中」点滅（Sports/Classic共通）。
   ゆったりしたペース（1.8秒周期）でopacityを揺らすだけの軽いアニメーション。 */
@keyframes dtrackPulse{ 0%,100%{opacity:1;} 50%{opacity:.4;} }
.dtrack-btn.dtrack-btn-active{animation:dtrackPulse 1.8s ease-in-out infinite;}
#app.theme-swiss .dogswitch{gap:0;margin-top:0;max-width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;}
#app.theme-swiss .dogswitch::-webkit-scrollbar{display:none;}
#app.theme-swiss .dogswitch button{flex:0 0 auto;white-space:nowrap;border:1px solid #0a0a0a;background:#fff;border-radius:0;padding:5px 11px;color:#0a0a0a;font-family:'Archivo',sans-serif;margin-left:-1px;}
#app.theme-swiss .dogswitch button.active{background:#e8371c;border-color:#e8371c;color:#fff;font-weight:700;position:relative;z-index:1;}
#app.theme-swiss .dogswitch button.active .med-alert-dot{background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,0.9);animation:medAlertBlinkWhite 1.1s infinite;}
@keyframes medAlertBlinkWhite{
  0%{opacity:1;box-shadow:0 0 0 0 rgba(255,255,255,0.9);}
  70%{opacity:0.35;box-shadow:0 0 0 5px rgba(255,255,255,0);}
  100%{opacity:1;box-shadow:0 0 0 0 rgba(255,255,255,0);}
}
#app.theme-swiss .dogswitch.loop-row-fit{justify-content:flex-end;}
#app.theme-swiss .tabbar{background:#fff;border-top:2px solid #0a0a0a;box-shadow:none;}
#app.theme-swiss .tabbar button{color:#0a0a0a;font-family:'Archivo',sans-serif;letter-spacing:.04em;border-right:1px solid #ddd;}
#app.theme-swiss .tabbar button:last-child{border-right:none;}
#app.theme-swiss .tabbar button .tab-idx{display:block;font-family:'Archivo Black';font-size:10px;color:#aaa;margin-bottom:2px;}
#app.theme-swiss .tabbar button.active{color:#e8371c;font-weight:700;}
#app.theme-swiss .tabbar button.active .tab-idx{color:#e8371c;}
#app.theme-swiss .back-to-top{background:rgba(255,255,255,.9);color:#0a0a0a;border:1.5px solid #0a0a0a;border-radius:0;}
#app.theme-swiss .back-to-top:active{color:#e8371c;border-color:#e8371c;}
#app.theme-swiss .tabbar button .tab-label, #app.theme-racer .tabbar button .tab-label{text-transform:uppercase;}

/* ==========================================================
   記録タブ（LOG）のテーマ化
   既存クラス（chiprow/chip/rec-card/ex-chip/heat-time-row等）を
   .log-racer / .log-swiss スコープ内でCSS変数ごと上書きすることで、
   マークアップ・JSにほぼ手を入れずにテーマを反映する。
   ========================================================== */

/* ---- レーサー型 ---- */
.log-racer{
  --bg:#14161a;
  --surface:#1d2026;
  --surface-2:#14161a;
  --ink:#eef0f2;
  --ink-soft:#b8bcc4;
  --muted:#8a8f9a;
  --line:#2a2e37;
  --teal:#ffb100;
  --teal-dark:#ffb100;
  --amber:#ffb100;
  --blue:#8a8f9a;
  --red:#ff6b6b;
  --radius:4px;
  --radius-sm:3px;
  --shadow:none;
  --font-body:'Oswald', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  --chart-dot-stroke:#14161a;
  --chart-tip-text:#1a1200;
  background:#14161a;
  color:var(--ink);
  padding:0 0 24px;
}
.log-racer .chiprow{padding:14px 16px 4px;}
.log-racer .date-jump-row{position:relative;display:flex;align-items:center;gap:8px;margin:8px 16px 4px;}
.log-racer .date-jump-btn{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:11.5px;font-family:'Oswald',sans-serif;letter-spacing:.03em;cursor:pointer;}
.log-racer .date-jump-visually-hidden{position:absolute;inset:0;width:100%;height:100%;opacity:0;z-index:-1;font-size:16px;pointer-events:none;}
@keyframes rdDateJumpFlash{
  0%{box-shadow:0 0 0 0 rgba(255,177,0,.6);}
  30%{box-shadow:0 0 0 6px rgba(255,177,0,.35);}
  100%{box-shadow:0 0 0 0 rgba(255,177,0,0);}
}
.log-racer .date-jump-highlight{animation:rdDateJumpFlash 1.5s ease-out 1;}
.log-racer .chip{border-radius:999px;font-size:11.5px;letter-spacing:.03em;padding:7px 13px;}
.log-racer .chip.active{background:var(--teal);border-color:var(--teal);color:#1a1200;font-weight:700;}
.log-racer .chip-icon{display:none;}
.log-racer .weight-chart-card, .log-racer .rec-card, .log-racer .ex-summary-card-wrap{margin:0 16px 12px;border-radius:var(--radius);}
.log-racer .weight-chart-range .chip{font-family:'JetBrains Mono',monospace;}
.log-racer .ex-type{color:var(--teal);font-family:'Oswald',sans-serif;letter-spacing:.05em;text-transform:uppercase;font-size:11px;}
.log-racer .ex-chip-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid #2a2e37;margin-bottom:10px;}
.log-racer .ex-chip{display:block;background:#14161a;border:1px solid #2a2e37;border-radius:0;padding:7px 9px;margin:-1px 0 0 -1px;}
.log-racer .ex-chip-icon{display:none;}
.log-racer .ex-chip-text{display:block;}
.log-racer .ex-chip-label{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;display:block;}
.log-racer .ex-chip-val{font-size:12px;margin-top:2px;display:block;font-family:'Oswald',sans-serif;}
.log-racer .rec-actions button, .log-racer .heat-time-row .edit, .log-racer .heat-time-row .edit-heat-group, .log-racer .heat-time-row .del{font-family:'Oswald',sans-serif;letter-spacing:.03em;font-size:10.5px;text-decoration:underline;}
.log-racer .heat-pb-star{display:inline-block;background:var(--teal);color:#1a1200;font-weight:700;padding:2px 7px;border-radius:10px;font-size:9.5px;margin-left:4px;letter-spacing:.02em;}
.log-racer .add-heat-btn, .log-racer .del-group-btn, .log-racer .del-meal-group-btn{border-radius:3px;font-family:'Oswald',sans-serif;letter-spacing:.03em;}
.log-racer .del-group-btn, .log-racer .del-meal-group-btn{border-radius:3px;}
.log-racer .fab button{background:var(--teal);color:#1a1200;font-family:'Oswald',sans-serif;font-weight:700;letter-spacing:.03em;box-shadow:0 6px 18px rgba(255,177,0,.3);}
.log-racer .empty{background:var(--surface-2);border:1px dashed var(--line);color:var(--muted);border-radius:var(--radius-sm);}
.log-racer .rec-card.plan-entered, .log-racer .rec-card.plan-not-entered, .log-racer .rec-card.med-warn-7, .log-racer .rec-card.med-warn-3, .log-racer .rec-card.med-overdue{background:var(--surface);border-color:var(--line);}
.log-racer .med-urgency-tag{border-radius:3px;font-family:'Oswald',sans-serif;letter-spacing:.03em;}
.log-racer .med-urgency-tag.entered{background:#1f3d2a;color:#6fdb9a;}
.log-racer .med-urgency-tag.not-entered{background:#3d1414;color:#ff8080;border:1px solid #5a1f1f;}
.log-racer .med-urgency-tag.warn-7{background:#3a2f10;color:#ffcf5c;}
.log-racer .med-urgency-tag.warn-3{background:#3d2410;color:#ffb266;}
.log-racer .med-urgency-tag.overdue{background:#3d1414;color:#ff8080;}

/* ---- スイス型 ---- */
.log-swiss{
  --bg:#fff;
  --surface:#fff;
  --surface-2:#f7f7f7;
  --ink:#0a0a0a;
  --ink-soft:#0a0a0a;
  --muted:#6e6e6e;
  --line:#ddd;
  --teal:#e8371c;
  --teal-dark:#e8371c;
  --amber:#e8371c;
  --blue:#0a0a0a;
  --red:#e8371c;
  --radius:0px;
  --radius-sm:0px;
  --shadow:none;
  --font-body:'Archivo', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  --chart-dot-stroke:#0a0a0a;
  --chart-tip-text:#fff;
  background:#fff;
  color:var(--ink);
  padding:0 0 24px;
}
.log-swiss .chiprow{padding:14px 18px 4px;}
.log-swiss .date-jump-row{position:relative;display:flex;align-items:center;gap:8px;margin:8px 18px 4px;}
.log-swiss .date-jump-btn{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #0a0a0a;color:#0a0a0a;border-radius:0;padding:6px 12px;font-size:11px;font-family:'Archivo',sans-serif;cursor:pointer;}
.log-swiss .date-jump-visually-hidden{position:absolute;inset:0;width:100%;height:100%;opacity:0;z-index:-1;font-size:16px;pointer-events:none;}
@keyframes sdDateJumpFlash{
  0%{box-shadow:0 0 0 0 rgba(232,55,28,.5);}
  30%{box-shadow:0 0 0 6px rgba(232,55,28,.3);}
  100%{box-shadow:0 0 0 0 rgba(232,55,28,0);}
}
.log-swiss .date-jump-highlight{animation:sdDateJumpFlash 1.5s ease-out 1;}
.log-swiss .chip{border:1px solid #0a0a0a;border-radius:0;font-size:11px;padding:6px 12px;margin-right:-1px;}
.log-swiss .chip.active{background:#e8371c;border-color:#e8371c;color:#fff;font-weight:700;position:relative;z-index:1;}
.log-swiss .weight-chart-card, .log-swiss .rec-card, .log-swiss .ex-summary-card-wrap{margin:0 18px 12px;border:2px solid #0a0a0a;border-radius:0;}
.log-swiss .ex-type{font-family:'Archivo Black';color:#e8371c;letter-spacing:.02em;text-transform:uppercase;font-size:11px;}
.log-swiss .ex-chip-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid #0a0a0a;margin-bottom:10px;}
.log-swiss .ex-chip{display:block;background:#fff;border:1px solid #0a0a0a;border-radius:0;padding:7px 9px;margin:-1px 0 0 -1px;}
.log-swiss .ex-chip-icon{display:none;}
.log-swiss .ex-chip-text{display:block;}
.log-swiss .ex-chip-label{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;display:block;color:#6e6e6e;}
.log-swiss .ex-chip-val{font-size:12px;margin-top:2px;display:block;font-family:'Archivo',sans-serif;font-weight:600;}
.log-swiss .chip-icon{display:none;}
.log-swiss .route-preview{border:1px solid #0a0a0a;border-radius:0;}
.log-racer .route-preview{border-radius:var(--radius-sm);}
.log-swiss .pb-icon{display:none;}
.log-racer .pb-icon{display:none;}
.log-racer .pb-section-head, .log-swiss .pb-section-head{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);}
.log-racer .pb-row, .log-swiss .pb-row{border-radius:var(--radius-sm);}
.log-racer .card, .log-swiss .card{margin:0 16px 14px;background:var(--surface);border-color:var(--line);box-shadow:none;}
.log-swiss .card{margin:0 18px 14px;border:2px solid #0a0a0a;border-radius:0;}
.log-racer .section-title, .log-swiss .section-title{margin:18px 16px 8px;color:var(--ink-soft);font-family:var(--font-body);font-size:13px;letter-spacing:.03em;}
.log-swiss .section-title{margin:18px 18px 8px;text-transform:uppercase;font-family:'Archivo Black';font-size:11px;}
.log-swiss .rec-actions button, .log-swiss .heat-time-row .edit, .log-swiss .heat-time-row .edit-heat-group, .log-swiss .heat-time-row .del{font-family:'Archivo',sans-serif;font-size:10.5px;text-decoration:underline;}
.log-swiss .heat-pb-star{display:inline-block;background:var(--teal);color:#fff;font-weight:700;padding:2px 7px;border-radius:10px;font-size:9.5px;margin-left:4px;letter-spacing:.02em;}
.log-swiss .add-heat-btn, .log-swiss .del-group-btn, .log-swiss .del-meal-group-btn{border-radius:0;font-family:'Archivo',sans-serif;}
.log-swiss .fab button{background:#e8371c;color:#fff;border:2px solid #0a0a0a;border-radius:0;font-family:'Archivo',sans-serif;font-weight:700;}
.log-swiss .empty{background:#f7f7f7;border:1px dashed #ddd;color:#6e6e6e;border-radius:0;}
.log-swiss .rec-card.plan-entered, .log-swiss .rec-card.plan-not-entered, .log-swiss .rec-card.med-warn-7, .log-swiss .rec-card.med-warn-3, .log-swiss .rec-card.med-overdue{background:#fff;border:2px solid #0a0a0a;}
.log-swiss .med-urgency-tag{border-radius:0;font-family:'Archivo',sans-serif;font-weight:700;}
.log-swiss .med-urgency-tag.entered{background:#0a0a0a;color:#fff;}
.log-swiss .med-urgency-tag.not-entered{background:#fff;color:#e8371c;border:1px solid #e8371c;}
.log-swiss .med-urgency-tag.warn-7{background:#f4c430;color:#0a0a0a;}
.log-swiss .med-urgency-tag.warn-3{background:#e8371c;color:#fff;}
.log-swiss .med-urgency-tag.overdue{background:#e8371c;color:#fff;}

/* ==========================================================
   2026-08-10追加：運動記録専用アコーディオンカード（ステップF・グループ1）
   renderGenericRecordList()とは独立した専用の見た目。
   ベースはCSS変数（--surface, --line, --radius-sm等）にまかせ、
   racer/swiss固有の角丸・枠線だけを個別に上書きする、既存の.rec-card等と同じ考え方。
   ========================================================== */
.ex-acc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);margin-bottom:10px;overflow:hidden;}
.ex-acc-head{padding:18px 18px 14px;cursor:pointer;text-align:center;}
.ex-acc-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;}
.ex-acc-date{font-size:12px;color:var(--muted);}
.ex-acc-type{font-size:12px;font-weight:700;color:var(--teal-dark);}
.ex-acc-hero-val{font-family:var(--font-mono);font-size:36px;font-weight:700;color:var(--ink);line-height:1;}
.ex-acc-hero-unit{font-size:14px;color:var(--muted);}
.ex-acc-chev{margin-top:10px;color:var(--muted);font-size:12px;}
.ex-acc-body{padding:0 18px 18px;border-top:1px dashed var(--line);}
.ex-acc-venue{font-size:12.5px;color:var(--ink-soft);margin-top:14px;margin-bottom:2px;}
.ex-acc-memo{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line);}
.ex-acc-memo-label{font-size:11px;color:var(--muted);margin-bottom:5px;}
.ex-acc-memo-text{font-size:13.5px;color:var(--ink);line-height:1.6;white-space:pre-wrap;}
.ex-acc-foot{display:flex;justify-content:center;padding:12px 0;cursor:pointer;border-top:1px dashed var(--line);}

.log-racer .ex-acc-card{border-radius:var(--radius);margin:0 16px 12px;}
.log-racer .ex-acc-type{color:#ffb100;}
.log-racer .ex-acc-hero-val{font-family:'Oswald',sans-serif;}

.log-swiss .ex-acc-card{border:2px solid #0a0a0a;border-radius:0;background:#fff;margin:0 18px 12px;}
.log-swiss .ex-acc-type{color:#e8371c;}
.log-swiss .ex-acc-hero-val{font-family:'Archivo',sans-serif;}
.log-swiss .ex-acc-body, .log-swiss .ex-acc-memo, .log-swiss .ex-acc-foot{border-top:1px dashed #0a0a0a;}

/* ==========================================================
   2026-08-11追加：運動記録の軌跡地図（ステップF・グループ2）
   ・Leafletが読み込むタイル画像より前に見える背景色（--surface-2）を敷いておき、
     読み込み中・オフライン時に不自然な白抜けにならないようにしている。
   ・著作権表記（© OpenStreetMap contributors）はLeafletの標準機能でmap右下に
     自動表示されるため、専用のCSSクラスは用意していない（文字サイズだけ調整）。
   ========================================================== */
.ex-acc-map{margin-top:14px;height:200px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line);background:var(--surface-2);
  /* 2026-08-17追加：Leafletの内部要素（ズームボタン等）はz-index:1000前後という
     高い数値を使っており、このアプリのモーダル（.overlay、z-index:50）より
     手前に表示されてしまい、記録の編集画面を開いた際に背後の地図が透けて見える
     不具合があった。position:relative + z-indexの指定により、この要素の内側だけで
     完結する新しい重なりの境界（スタッキングコンテキスト）を作ることで、
     Leaflet内部がどんなに大きいz-indexを使っていても、この枠の外（ページ全体）
     には一切影響しないようにする。 */
  position:relative;z-index:0;
}
.ex-acc-map .leaflet-control-attribution{font-size:9px;background:rgba(255,255,255,0.75);}

/* ==========================================================
   2026-08-11追加：運動記録の軌跡地図・Sportsテーマのダーク変換（ステップF・グループ3）
   D-013で確定した方式：CARTOの無料ダークタイルは実機で読み込み失敗したため不採用。
   標準のOpenStreetMapタイル（ライトカラー）を土台に、CSSのfilterでダーク配色に
   変換する。フィルターは「地図タイルの層（.leaflet-tile-pane）」だけに適用し、
   軌跡の線・開始/終了マーカー・ズームボタン・著作権表記には影響させない
   （地図全体にかけると、それらの色まで反転して逆に見づらくなるため）。
   Classicテーマ（.log-swiss）はフィルター無し＝無加工のまま。
   ========================================================== */
.log-racer .ex-acc-map .leaflet-tile-pane{
  filter:invert(1) hue-rotate(200deg) brightness(1.5) contrast(0.8) saturate(0.8);
}


   プロフィールタブのテーマ化
   LOGタブと同じ考え方：既存クラス（profile-card/acc/kv等）を
   .profile-racer / .profile-swiss スコープでCSS変数ごと上書きする
   ========================================================== */

/* ---- レーサー型 ---- */
.profile-racer{
  --bg:#14161a;
  --surface:#1d2026;
  --surface-2:#14161a;
  --ink:#eef0f2;
  --ink-soft:#b8bcc4;
  --muted:#8a8f9a;
  --line:#2a2e37;
  --teal:#ffb100;
  --teal-dark:#ffb100;
  --amber:#ffb100;
  --blue:#8a8f9a;
  --red:#ff6b6b;
  --radius:4px;
  --radius-sm:3px;
  --shadow:none;
  --font-body:'Oswald', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  background:#14161a;
  color:var(--ink);
  padding:14px 16px 24px;
}
.profile-racer .profile-card{border-radius:var(--radius);}
.profile-racer .profile-card h4{font-family:'Oswald',sans-serif;letter-spacing:.02em;}
.profile-racer .acc{border-radius:var(--radius);}
.profile-racer .doc-icon{display:none;}
.profile-racer .section-title{font-family:'Oswald',sans-serif;letter-spacing:.03em;font-size:13px;color:var(--ink-soft);}
.profile-racer .acc-status.doc-status-warn{color:#ffb266;}
.profile-racer .save-btn{background:var(--teal);color:#1a1200;font-family:'Oswald',sans-serif;font-weight:700;letter-spacing:.03em;border-radius:999px;}
.profile-racer .link-btn{font-family:'Oswald',sans-serif;letter-spacing:.03em;}
.profile-racer .acc-photo{border-radius:3px;}

/* ---- スイス型 ---- */
.profile-swiss{
  --bg:#fff;
  --surface:#fff;
  --surface-2:#f7f7f7;
  --ink:#0a0a0a;
  --ink-soft:#0a0a0a;
  --muted:#6e6e6e;
  --line:#ddd;
  --teal:#e8371c;
  --teal-dark:#e8371c;
  --amber:#e8371c;
  --blue:#0a0a0a;
  --red:#e8371c;
  --radius:0px;
  --radius-sm:0px;
  --shadow:none;
  --font-body:'Archivo', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  background:#fff;
  color:var(--ink);
  padding:14px 18px 24px;
}
.profile-swiss .profile-card{border:2px solid #0a0a0a;border-radius:0;}
.profile-swiss .profile-card h4{font-family:'Archivo Black';letter-spacing:.01em;}
.profile-swiss .acc{border:1px solid #0a0a0a;border-radius:0;}
.profile-swiss .doc-icon{display:none;}
.profile-swiss .section-title{font-family:'Archivo Black';letter-spacing:.02em;text-transform:uppercase;font-size:11px;color:var(--muted);}
.profile-swiss .acc-status.doc-status-warn{color:#c96a00;}
.profile-swiss .save-btn{background:#e8371c;color:#fff;border:2px solid #0a0a0a;font-family:'Archivo',sans-serif;font-weight:700;border-radius:0;}
.profile-swiss .link-btn{border-radius:0;font-family:'Archivo',sans-serif;}
.profile-swiss .acc-photo{border-radius:0;border:1px dashed #0a0a0a;}

/* ==========================================================
   設定タブのテーマ化
   LOG/PROFILEタブと同じ考え方：既存クラス（card/settings-list/rec-card/
   theme-choice-card等）を .settings-racer / .settings-swiss スコープで
   CSS変数ごと上書きする
   ========================================================== */

/* ---- レーサー型 ---- */
.settings-racer{
  --bg:#14161a;
  --surface:#1d2026;
  --surface-2:#14161a;
  --ink:#eef0f2;
  --ink-soft:#b8bcc4;
  --muted:#8a8f9a;
  --line:#2a2e37;
  --teal:#ffb100;
  --teal-dark:#ffb100;
  --amber:#ffb100;
  --blue:#8a8f9a;
  --red:#ff6b6b;
  --radius:4px;
  --radius-sm:3px;
  --shadow:none;
  --font-body:'Oswald', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  background:#14161a;
  color:var(--ink);
  padding:14px 16px 24px;
}
.settings-racer .doc-icon{display:none;}
.settings-racer .section-title{font-family:'Oswald',sans-serif;letter-spacing:.03em;font-size:13px;color:var(--ink-soft);}
.settings-racer .card{border-radius:var(--radius);}
.settings-racer .settings-list{border-radius:var(--radius);}
.settings-racer .link-btn, .settings-racer .save-btn{font-family:'Oswald',sans-serif;letter-spacing:.03em;}
.settings-racer .theme-choice-card{border-radius:var(--radius-sm);}
.settings-racer .theme-choice-card.selected{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal);}
.settings-racer .rec-card{border-radius:var(--radius-sm);}
.settings-racer input[type="text"], .settings-racer input[type="date"]{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);}

/* ---- スイス型 ---- */
.settings-swiss{
  --bg:#fff;
  --surface:#fff;
  --surface-2:#f7f7f7;
  --ink:#0a0a0a;
  --ink-soft:#0a0a0a;
  --muted:#6e6e6e;
  --line:#ddd;
  --teal:#e8371c;
  --teal-dark:#e8371c;
  --amber:#e8371c;
  --blue:#0a0a0a;
  --red:#e8371c;
  --radius:0px;
  --radius-sm:0px;
  --shadow:none;
  --font-body:'Archivo', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
  background:#fff;
  color:var(--ink);
  padding:14px 18px 24px;
}
.settings-swiss .doc-icon{display:none;}
.settings-swiss .section-title{font-family:'Archivo Black';letter-spacing:.02em;text-transform:uppercase;font-size:11px;color:var(--muted);}
.settings-swiss .card{border:2px solid #0a0a0a;border-radius:0;}
.settings-swiss .settings-list{border:2px solid #0a0a0a;border-radius:0;}
.settings-swiss .link-btn, .settings-swiss .save-btn{font-family:'Archivo',sans-serif;border-radius:0;}
.settings-swiss .theme-choice-card{border:1.5px solid #0a0a0a;border-radius:0;}
.settings-swiss .theme-choice-card.selected{border-color:#e8371c;box-shadow:0 0 0 1px #e8371c;}
.settings-swiss .rec-card{border:1px solid #0a0a0a;border-radius:0;}
.settings-swiss input[type="text"], .settings-swiss input[type="date"]{background:#fff;border:1px solid #0a0a0a;color:#0a0a0a;border-radius:0;}

/* 2026-08-16追加：下に引っ張って更新する機能（17-pull-refresh.js）のスピナー回転。
   #pullRefreshIndicatorはindex.html（アプリ版）にのみ存在するため、
   このアニメーション自体はサーバー版でも害はない（対象要素が無いだけ）。 */
@keyframes pullRefreshSpin{ from{transform:rotate(0deg);} to{transform:rotate(360deg);} }
