@font-face {
  font-family: 'PisteNote Display';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/brand/pistenote-display-1.woff2) format('truetype');
}
@font-face {
  font-family: 'PisteNote Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/brand/pistenote-display-2.woff2) format('truetype');
}

/* PisteNote 2.0 - Salle & Carnet. Shared tokens for every product surface. */
:root {
  --ink:var(--ds-text-strong); --text:var(--ds-text-body); --sub:var(--ds-text-muted); --muted:var(--ds-text-muted);
  --blue:var(--ds-navy); --blue-strong:var(--ds-electric-strong); --blue-soft:var(--ds-blue-soft);
  --bg:var(--ds-canvas); --line:var(--ds-stroke); --card:var(--ds-surface);

  --ds-ink:var(--ds-text-strong);
  --ds-text:var(--ds-text-body);
  --ds-sub:var(--ds-text-muted);
  --ds-muted:#8b95a1;
  --ds-blue:var(--ds-electric);
  --ds-blue-strong:var(--ds-electric-strong);
  --ds-blue-soft:#e9edf0;
  --ds-green:#00a36c;
  --ds-green-soft:#e9fbf2;
  --ds-red:#f04452;
  --ds-red-soft:#fff1f2;
  --ds-yellow:#f59f00;
  --ds-yellow-soft:#fff7df;
  --ds-bg:var(--ds-canvas);
  --ds-card:#fffdf9;
  --ds-line:var(--ds-stroke);
  --ds-line-soft:rgba(217,225,232,.78);
  --ds-color-primary:var(--ds-blue);
  --ds-color-primary-strong:var(--ds-blue-strong);
  --ds-color-primary-soft:var(--ds-blue-soft);
  --ds-color-on-primary:#ffffff;
  --ds-color-success:var(--ds-green);
  --ds-color-danger:var(--ds-red);
  --ds-color-warning:var(--ds-yellow);
  --ds-color-text:var(--ds-text);
  --ds-color-heading:var(--ds-ink);
  --ds-color-subtle:var(--ds-sub);
  --ds-font:"Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  --ds-fs-xs:11px;
  --ds-lh-xs:1.4;
  --ds-fs-sm:12px;
  --ds-lh-sm:1.45;
  --ds-fs-base:13px;
  --ds-lh-base:1.5;
  --ds-fs-md:15px;
  --ds-lh-md:1.5;
  --ds-fs-lg:17px;
  --ds-lh-lg:1.4;
  --ds-fs-xl:20px;
  --ds-lh-xl:1.32;
  --ds-fs-2xl:24px;
  --ds-lh-2xl:1.24;
  --ds-fs-3xl:30px;
  --ds-lh-3xl:1.12;
  --ds-fw-regular:400;
  --ds-fw-medium:500;
  --ds-fw-semibold:600;
  --ds-fw-bold:700;
  --ds-fw-heavy:600;
  --ds-space-1:4px;
  --ds-space-2:8px;
  --ds-space-3:12px;
  --ds-space-4:16px;
  --ds-space-5:20px;
  --ds-space-6:24px;
  --ds-space-8:32px;
  --ds-space-10:40px;
  --ds-radius-sm:8px;
  --ds-radius-md:10px;
  --ds-radius-lg:14px;
  --ds-radius-pill:999px;
  --ds-shadow-sm:0 1px 2px rgba(16,36,63,.04);
  --ds-shadow-md:0 10px 28px rgba(16,36,63,.08);
  --ds-shadow-lg:0 24px 64px rgba(7,23,41,.16);
  --ds-duration-fast:120ms;
  --ds-duration:200ms;
  --ds-ease:cubic-bezier(.2,.8,.2,1);
  --ds-control-h:52px;
  --ds-control-h-sm:42px;
  --ds-z-nav:8;
  --ds-z-header:5;
  --ds-z-sheet:40;
  --ds-z-toast:60;
  --ds-navy:#142638;
  --ds-navy-deep:#0e1d2b;
  --ds-navy-soft:#e9edf0;
  --ds-electric:#142638;
  --ds-electric-strong:#213b50;
  --ds-sky:#bca281;
  --ds-ivory:#f5f1e8;
  --ds-canvas:#f8f5ef;
  --ds-surface:#fffdf9;
  --ds-stroke:#ded8ce;
  --ds-stroke-strong:#c4b8a7;
  --ds-text-strong:#142638;
  --ds-text-body:#35414c;
  --ds-text-muted:#656660;
  --ds-piste-line:rgba(150,118,75,.17);
  --ds-focus:0 0 0 3px rgba(132,103,69,.22);
  --ds-bronze:#846745;
  --ds-display:"PisteNote Display", "Noto Serif CJK KR", Batang, serif;
}
/* =====================================================================
   PisteNote component foundation
   Single source of truth for /web, /admin, landing, share.
   Strategy: token layer + component classes that RE-EXPRESS the existing
   class names (.primary/.secondary/.field/.card/.row-card/.nav/.segmented/
   .status-chip/.section...) through tokens, so migrating a screen =
   <link> this file + delete the local duplicate <style>. Markup unchanged.
   ===================================================================== */

/* ------------------------------ TOKENS ------------------------------ */


/* ------------------------------ BASE ------------------------------ */
.ds, .ds * { box-sizing:border-box; }
.ds {
  font-family:var(--ds-font);
  font-size:var(--ds-fs-md);
  line-height:var(--ds-lh-md);
  color:var(--ds-color-text);
  -webkit-font-smoothing:antialiased;
}
.ds h1,.ds h2,.ds h3,.ds h4 { margin:0; color:var(--ds-color-heading); font-weight:var(--ds-fw-heavy); }
.ds button,.ds input,.ds select,.ds textarea { font:inherit; color:inherit; }
.ds button { border:0; cursor:pointer; background:none; }

/* type helpers */
.ds-title    { font-size:var(--ds-fs-2xl); line-height:var(--ds-lh-2xl); font-weight:var(--ds-fw-heavy); color:var(--ds-ink); }
.ds-heading  { font-size:var(--ds-fs-lg);  line-height:var(--ds-lh-lg);  font-weight:var(--ds-fw-bold);  color:var(--ds-ink); }
.ds-body     { font-size:var(--ds-fs-md);  line-height:var(--ds-lh-md);  color:var(--ds-text); }
.ds-caption  { font-size:var(--ds-fs-base);line-height:var(--ds-lh-base);color:var(--ds-sub); }
.ds-overline { font-size:var(--ds-fs-base);font-weight:var(--ds-fw-bold);color:var(--ds-sub);
               letter-spacing:.01em; }

/* ------------------------------ BUTTONS ------------------------------ */
/* new .ds-btn API + back-compat with existing .primary/.secondary/.ghost */
.ds-btn, .primary, .secondary, .ghost {
  width:100%;
  min-height:var(--ds-control-h);
  padding:0 var(--ds-space-4);
  border-radius:var(--ds-radius-sm);
  font-size:var(--ds-fs-md);
  font-weight:var(--ds-fw-bold);
  display:inline-flex; align-items:center; justify-content:center;
  gap:var(--ds-space-2);
  transition:background var(--ds-duration) var(--ds-ease),
             transform var(--ds-duration-fast) var(--ds-ease),
             box-shadow var(--ds-duration) var(--ds-ease);
}
.ds-btn:active, .primary:active, .secondary:active, .ghost:active { transform:scale(.985); }
.ds-btn:disabled, .primary:disabled, .secondary:disabled { opacity:.42; cursor:not-allowed; transform:none; }

.ds-btn--primary, .primary { background:var(--ds-color-primary); color:var(--ds-color-on-primary); }
.ds-btn--primary:hover, .primary:hover { background:var(--ds-color-primary-strong); }
.ds-btn--secondary, .secondary { background:#fff; border:1px solid var(--ds-line); color:var(--ds-ink); }
.ds-btn--secondary:hover, .secondary:hover { background:#f8fafc; }
.ds-btn--ghost, .ghost { background:transparent; color:var(--ds-color-primary); }
.ds-btn--danger { background:var(--ds-color-danger); color:#fff; }
.ds-btn--sm { min-height:var(--ds-control-h-sm); font-size:var(--ds-fs-base); padding:0 var(--ds-space-3); }
.ds-btn--auto, .link-button, .text-button { width:auto; }
.link-button, .text-button { background:transparent; color:var(--ds-color-primary); font-weight:var(--ds-fw-bold); min-height:auto; }

/* ------------------------------ FIELDS ------------------------------ */
.ds-field, .field {
  width:100%;
  min-height:var(--ds-control-h);
  padding:0 var(--ds-space-4);
  border:1.5px solid var(--ds-line);
  border-radius:var(--ds-radius-sm);
  background:#fff;
  color:var(--ds-ink);
  outline:0;
  transition:border-color var(--ds-duration) var(--ds-ease),
             box-shadow var(--ds-duration) var(--ds-ease);
}
.ds-field::placeholder, .field::placeholder { color:var(--ds-muted); }
.ds-field:focus, .field:focus {
  border-color:var(--ds-color-primary);
  box-shadow:0 0 0 3px var(--ds-color-primary-soft);
}
textarea.ds-field, textarea.field { min-height:78px; padding:var(--ds-space-3) var(--ds-space-4); resize:none; line-height:1.5; }
.ds-label { display:block; margin-bottom:var(--ds-space-2); font-size:var(--ds-fs-base); font-weight:var(--ds-fw-bold); color:var(--ds-sub); }

/* --------------------------- SEGMENTED --------------------------- */
.ds-segmented, .segmented {
  padding:var(--ds-space-1);
  background:#edf1f5;
  border-radius:var(--ds-radius-sm);
  display:grid; gap:var(--ds-space-1);
}
.ds-segmented button, .segmented button {
  min-height:var(--ds-control-h-sm);
  border-radius:calc(var(--ds-radius-sm) - 2px);
  background:transparent; color:var(--ds-sub);
  font-size:var(--ds-fs-base); font-weight:var(--ds-fw-bold);
  display:flex; align-items:center; justify-content:center; gap:var(--ds-space-2);
  transition:background var(--ds-duration) var(--ds-ease), color var(--ds-duration) var(--ds-ease);
}
.ds-segmented button.active, .segmented button.active {
  background:#fff; color:var(--ds-ink); box-shadow:var(--ds-shadow-sm);
}

/* ------------------------------ CARDS ------------------------------ */
.ds-card, .card, .row-card {
  border-radius:var(--ds-radius-md);
  background:#fff;
  border:1px solid var(--ds-line-soft);
  box-shadow:var(--ds-shadow-sm);
}
.ds-card, .card { padding:var(--ds-space-4); }
.row-card {
  padding:var(--ds-space-4);
  display:flex; align-items:center; justify-content:space-between; gap:var(--ds-space-3);
}
.row-card + .row-card { margin-top:var(--ds-space-2); }
.ds-card h3, .card h3, .row-card h3 { font-size:var(--ds-fs-lg); line-height:var(--ds-lh-lg); font-weight:var(--ds-fw-bold); }
.ds-card p, .card p, .row-card p { margin:var(--ds-space-1) 0 0; color:var(--ds-sub); font-size:var(--ds-fs-base); line-height:var(--ds-lh-base); word-break:keep-all; }

/* ------------------------------ CHIPS ------------------------------ */
.ds-chip, .status-chip, .role-chip {
  min-height:28px;
  display:inline-flex; align-items:center; justify-content:center;
  padding:0 var(--ds-space-3);
  border-radius:var(--ds-radius-pill);
  background:#fff; border:1px solid var(--ds-line);
  color:var(--ds-sub);
  font-size:var(--ds-fs-sm); font-weight:var(--ds-fw-bold);
  gap:var(--ds-space-1);
}
.ds-chip--blue,  .chip-blue   { background:var(--ds-blue-soft);  color:var(--ds-blue-strong); border-color:transparent; }
.ds-chip--green, .chip-green  { background:var(--ds-green-soft); color:var(--ds-green);       border-color:transparent; }
.ds-chip--red,   .chip-red    { background:var(--ds-red-soft);   color:var(--ds-red);         border-color:transparent; }
.ds-chip--yellow,.chip-yellow { background:var(--ds-yellow-soft);color:#9a6400;               border-color:transparent; }

/* --------------------------- SECTIONS --------------------------- */
.ds-section, .section { margin-top:var(--ds-space-5); }
.ds-section-title, .section-title {
  margin:0 0 var(--ds-space-3);
  color:var(--ds-sub);
  font-size:var(--ds-fs-base); font-weight:var(--ds-fw-bold);
  display:flex; align-items:center; justify-content:space-between;
}
.ds-stack, .stack { display:grid; gap:var(--ds-space-3); }

/* --------------------------- BOTTOM NAV --------------------------- */
.ds-nav, .nav {
  min-height:72px;
  padding:var(--ds-space-2) var(--ds-space-3) calc(var(--ds-space-2) + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.96);
  border-top:1px solid var(--ds-line);
  backdrop-filter:blur(12px);
  display:grid; grid-template-columns:repeat(var(--nav-count,4),1fr); gap:var(--ds-space-1);
  z-index:var(--ds-z-nav);
}
.ds-nav button, .nav button {
  border-radius:var(--ds-radius-sm);
  background:transparent; color:var(--ds-muted);
  font-size:var(--ds-fs-xs); font-weight:var(--ds-fw-bold);
  display:grid; place-items:center; gap:var(--ds-space-1); min-height:54px;
  transition:color var(--ds-duration) var(--ds-ease), background var(--ds-duration) var(--ds-ease);
}
.ds-nav button.active, .nav button.active { color:var(--ds-color-primary); background:var(--ds-color-primary-soft); }

/* ------------------------------ SHEET/MODAL ------------------------------ */
.ds-scrim { position:fixed; inset:0; background:rgba(25,31,40,.44); z-index:var(--ds-z-sheet); }
.ds-sheet {
  background:#fff; border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0;
  padding:var(--ds-space-5); box-shadow:var(--ds-shadow-lg);
}
.ds-modal { background:#fff; border-radius:var(--ds-radius-lg); padding:var(--ds-space-5); box-shadow:var(--ds-shadow-lg); }

/* ------------------------------ TABLE (admin) ------------------------------ */
.ds-table { width:100%; border-collapse:collapse; font-size:var(--ds-fs-base); }
.ds-table th { text-align:left; color:var(--ds-sub); font-weight:var(--ds-fw-bold); padding:var(--ds-space-3); border-bottom:1px solid var(--ds-line); }
.ds-table td { padding:var(--ds-space-3); border-bottom:1px solid var(--ds-line-soft); color:var(--ds-text); }
.ds-table tr:hover td { background:#f8fafc; }

/* ------------------------------ MISC ------------------------------ */
.ds-empty { text-align:center; color:var(--ds-muted); padding:var(--ds-space-8) var(--ds-space-4); }
.ds-skeleton { background:linear-gradient(90deg,#eef1f5 25%,#f6f8fa 37%,#eef1f5 63%); background-size:400% 100%; animation:ds-shimmer 1.4s ease infinite; border-radius:var(--ds-radius-sm); }
@keyframes ds-shimmer { 0%{background-position:100% 0} 100%{background-position:-100% 0} }
.ds-divider { height:1px; background:var(--ds-line); border:0; margin:var(--ds-space-4) 0; }

/* =====================================================================
   PisteNote 2.0 product components
   Product layer: fencing rhythm + accessible parent/child reading.
   Material 3 interaction rules are used as a foundation; the visual
   language stays deliberately specific to PisteNote.
   ===================================================================== */


.pds-app,
.pds-admin,
.pds-landing,
.pds-share {
  color:var(--ds-text-body);
  font-family:var(--ds-font);
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}

.pds-app :focus-visible,
.pds-admin :focus-visible,
.pds-landing :focus-visible,
.pds-share :focus-visible {
  outline:3px solid var(--ds-electric);
  outline-offset:3px;
}

/* --------------------------- MOBILE APP --------------------------- */
body.pds-app {
  background:linear-gradient(180deg, #eee9df 0%, #f5f1e8 100%);
  color:var(--ds-text-strong);
  font-size:16px;
}

.pds-app .shell {
  background:var(--ds-canvas);
  box-shadow:0 0 0 1px rgba(16,36,63,.05), 0 24px 80px rgba(7,23,41,.10);
}

.pds-app .top { position:relative; padding:12px 18px; background:var(--ds-canvas); border-bottom:1px solid var(--ds-stroke); }

.pds-app .top::after { content:none; }

.pds-app .brand { color:var(--ds-navy); font:500 25px/1.2 Georgia, serif; letter-spacing:-.035em; }
.pds-app .brand .mark { width:28px; height:32px; border-radius:0; background:transparent; color:var(--ds-bronze); box-shadow:none; }

.pds-app .role-chip {
  min-height:38px;
  padding:0 13px;
  border:1px solid var(--ds-stroke);
  background:#fff;
  color:var(--ds-text-muted);
  font-size:13px;
}

.pds-app .icon-button,
.pds-app .back-icon-button {
  min-width:48px;
  min-height:48px;
  border-radius:14px;
  border:1px solid var(--ds-stroke);
  background:#fff;
  color:var(--ds-navy);
  box-shadow:none;
}

.pds-app .view { padding:20px 20px 32px; background:var(--ds-canvas); }

.pds-app .title,
.pds-app .home-greeting { padding:10px 2px 4px; }
.pds-app .title h1,
.pds-app .home-greeting h1 {
  color:var(--ds-navy);
  font-family:var(--ds-display);
  font-weight:500;
  font-size:29px;
  line-height:1.4;
  letter-spacing:-.035em;
}
.pds-app .title p,
.pds-app .home-greeting p {
  color:var(--ds-text-muted);
  font-size:15px;
  line-height:1.62;
}

.pds-app .section { margin-top:22px; }
.pds-app .section-title,
.pds-app .home-section-head h2 {
  color:var(--ds-navy);
  font-size:16px;
  line-height:1.4;
  letter-spacing:-.018em;
}

.pds-app .card,
.pds-app .row-card,
.pds-app .metric,
.pds-app .today-card,
.pds-app .home-record-card,
.pds-app .home-action-list,
.pds-app .home-metrics,
.pds-app .home-event-row,
.pds-app .home-person-row,
.pds-app .home-record-strip,
.pds-app .match-card,
.pds-app .record-item {
  border-color:var(--ds-stroke);
  border-radius:14px;
  box-shadow:none;
}

.pds-app .card,
.pds-app .row-card,
.pds-app .home-event-row,
.pds-app .home-person-row,
.pds-app .home-record-strip,
.pds-app .match-card,
.pds-app .record-item { background:#fff; }

.pds-app .card h3,
.pds-app .row-card h3,
.pds-app .match-main h3,
.pds-app .record-item h3 { color:var(--ds-navy); }
.pds-app .card p,
.pds-app .row-card p,
.pds-app .match-main p,
.pds-app .record-item p {
  color:var(--ds-text-muted);
  font-size:14px;
  line-height:1.62;
}

.pds-app .home-focus {
  position:relative;
  overflow:hidden;
  margin-top:18px;
  padding:20px;
  border:0;
  border-radius:20px;
  color:#fff;
  background:
    linear-gradient(90deg, transparent 0 11%, rgba(188,162,129,.28) 11% 11.4%, transparent 11.4% 88%, rgba(188,162,129,.28) 88% 88.4%, transparent 88.4%),
    linear-gradient(135deg, var(--ds-navy-deep), #263c4a);
  box-shadow:var(--ds-shadow-md);
}
.pds-app .home-focus::after {
  content:"";
  position:absolute;
  left:20px;
  right:20px;
  bottom:14px;
  height:2px;
  background:linear-gradient(90deg, var(--ds-sky), rgba(188,162,129,0));
  opacity:.75;
}
.pds-app .home-focus h2 { color:#fff; font-size:23px; line-height:1.34; }
.pds-app .home-focus p { color:rgba(255,255,255,.76); font-size:15px; line-height:1.62; }
.pds-app .home-focus .status-chip { background:#fff; color:var(--ds-navy); border-color:transparent; }

.pds-app .today-card {
  position:relative;
  padding:19px 18px 19px 22px;
  background:#fff;
  border:1px solid var(--ds-stroke);
}
.pds-app .today-card::before {
  content:"";
  position:absolute;
  left:0;
  top:16px;
  bottom:16px;
  width:4px;
  border-radius:0 4px 4px 0;
  background:var(--ds-electric);
}
.pds-app .today-card h3 { color:var(--ds-navy); font-size:20px; }
.pds-app .today-card p { font-size:14px; line-height:1.62; }

.pds-app .home-action-list { overflow:hidden; }
.pds-app .home-action-row {
  min-height:70px;
  padding:13px 14px;
  border-color:var(--ds-stroke);
}
.pds-app .home-action-icon {
  width:38px;
  height:38px;
  border-radius:11px;
  background:var(--ds-blue-soft);
  color:var(--ds-electric-strong);
}
.pds-app .home-action-row strong,
.pds-app .home-event-row strong,
.pds-app .home-person-row strong,
.pds-app .home-record-strip strong { font-size:16px; color:var(--ds-navy); }
.pds-app .home-action-row small,
.pds-app .home-event-row small,
.pds-app .home-person-row small,
.pds-app .home-record-strip small { font-size:13px; line-height:1.48; }

.pds-app .home-metrics { background:var(--ds-navy); border:0; }
.pds-app .home-metric { border-color:rgba(255,255,255,.16); padding:15px 11px; }
.pds-app .home-metric b { color:#fff; font-size:23px; }
.pds-app .home-metric span { color:rgba(255,255,255,.68); font-size:12px; }

.pds-app .primary,
.pds-app .secondary,
.pds-app .ghost,
.pds-app .field {
  min-height:52px;
  border-radius:12px;
}
.pds-app .primary { background:var(--ds-electric-strong); font-weight:600; }
.pds-app .primary:active { background:var(--ds-navy); }
.pds-app .secondary { border-color:var(--ds-stroke); box-shadow:none; }
.pds-app .field { border:1px solid var(--ds-stroke); background:#fff; font-size:16px; }
.pds-app .field:focus { border-color:var(--ds-electric); box-shadow:var(--ds-focus); }

.pds-app .segmented { border-radius:13px; background:#ece7df; }
.pds-app .segmented button { min-height:46px; border-radius:10px; font-size:14px; }

.pds-app .status-chip,
.pds-app .role-chip { font-weight:600; }

.pds-app .nav {
  min-height:76px;
  padding:7px 10px calc(8px + env(safe-area-inset-bottom));
  border-top:1px solid var(--ds-stroke);
  background:rgba(255,255,255,.98);
  backdrop-filter:saturate(160%) blur(18px);
}
.pds-app .nav button {
  position:relative;
  min-height:58px;
  border-radius:12px;
  color:#7b8997;
  font-size:12px;
  font-weight:600;
}
.pds-app .nav button::before {
  content:"";
  position:absolute;
  left:28%;
  right:28%;
  top:0;
  height:3px;
  border-radius:0 0 3px 3px;
  background:transparent;
}
.pds-app .nav button.active { color:var(--ds-navy); background:transparent; }
.pds-app .nav button.active::before { background:var(--ds-electric); }

.pds-app .record-detail-top { margin-bottom:16px; }
.pds-app .record-detail-actions button { min-height:48px; border-radius:13px; }
.pds-app #recordDetailScreen > .card:first-of-type {
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
.pds-app #recordDetailScreen > .card:first-of-type > h3 {
  font-size:24px;
  letter-spacing:-.025em;
}
.pds-app #recordDetailScreen > .card:first-of-type > p {
  margin-top:7px;
  font-size:16px;
}
.pds-app .detail-video-frame { margin-top:18px; border-radius:8px; border:0; box-shadow:none; }
.pds-app #reportBlock .section-title {
  margin-bottom:14px;
  font-size:21px;
  color:var(--ds-navy);
}
.pds-app #reportSummary {
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
.pds-app .parent-summary-hero { position:relative; overflow:hidden; padding:22px; border:1px solid var(--ds-stroke); border-radius:10px; background:var(--ds-ivory); box-shadow:none; }
.pds-app .parent-summary-hero::after {
  content:"";
  position:absolute;
  left:22px;
  right:22px;
  top:0;
  height:4px;
  background:linear-gradient(90deg, var(--ds-electric), var(--ds-sky), transparent);
}
.pds-app .parent-summary-hero .eyebrow { color:var(--ds-electric-strong); font-size:15px; }
.pds-app .parent-summary-hero h3 {
  color:var(--ds-navy);
  font-size:22px;
  line-height:1.66;
  letter-spacing:-.025em;
  word-break:keep-all;
}
.pds-app .parent-summary-card,
.pds-app .parent-term-card,
.pds-app .opponent-link-card,
.pds-app .head-history-card,
.pds-app .footwork-card,
.pds-app .evaluation-section {
  border-color:var(--ds-stroke);
  border-radius:15px;
  box-shadow:none;
  background:#fff;
}
.pds-app .parent-summary-point span,
.pds-app .report-text-block .report-paragraph,
.pds-app .evaluation-section p,
.pds-app .parent-term-card p {
  color:var(--ds-text-body);
  font-size:17px;
  line-height:1.74;
}
.pds-app .parent-summary-point b { font-size:14px; line-height:1.35; }
.pds-app .report-section-lead { color:var(--ds-navy); }
.pds-app .record-fab { display:flex; align-items:center; justify-content:center; width:auto; height:48px; padding:0 19px; gap:9px; border-radius:8px; background:var(--ds-navy); color:#fff; font:600 14px/1 var(--ds-font); box-shadow:0 5px 14px rgba(14,29,43,.16); }

/* --------------------------- SHARED REPORT --------------------------- */
body.pds-share { margin:0; min-height:100%; }
.pds-share .share-shell {
  width:min(100%,430px);
  min-height:100dvh;
  margin:0 auto;
  padding:0;
  overflow:hidden;
}
.pds-share .share-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.pds-share .share-brand {
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--ds-navy);
  text-decoration:none;
}
.pds-share .share-brand .mark {
  width:38px;
  height:38px;
  object-fit:cover;
  flex:0 0 auto;
}
.pds-share .share-brand > span { min-width:0; display:grid; gap:1px; }
.pds-share .share-brand strong { font-size:18px; line-height:1.25; letter-spacing:-.025em; }
.pds-share .share-brand small {
  color:var(--ds-text-muted);
  font-size:12px;
  line-height:1.35;
  font-weight:600;
}
.pds-share .share-chip {
  min-height:34px;
  padding:0 11px;
  white-space:nowrap;
}
.pds-share .share-view { min-height:calc(100dvh - 65px); }
.pds-share #recordDetailScreen { margin-top:0; }
.pds-share .detail-video-frame { overflow:hidden; background:#000; }
.pds-share .detail-video-frame video {
  width:100%;
  margin:0;
  border-radius:0;
}
.pds-share #reportSummary { margin:0; }

/* --------------------------- PUBLIC LANDING --------------------------- */
body.pds-landing { background:var(--ds-ivory); color:var(--ds-navy); font-family:var(--ds-font); }
.pds-landing .site-header { background:var(--ds-ivory); border-bottom:1px solid var(--ds-stroke); }
.pds-landing .brand { color:var(--ds-navy); font:500 30px/1.1 Georgia,serif; letter-spacing:-.035em; }
.pds-landing .brand-mark { width:34px; height:34px; border-radius:0; background:none; box-shadow:none; }
.pds-landing .nav-link,.pds-landing .button { width:auto; min-height:46px; border-radius:6px; font-weight:600; box-shadow:none; }
.pds-landing .nav-link.primary,.pds-landing .button.primary { background:var(--ds-navy); border-color:var(--ds-navy); color:#fff; }
.pds-landing .button.secondary { background:transparent; border-color:var(--ds-stroke-strong); color:var(--ds-navy); }
.pds-landing .header-actions { gap:18px; }
.pds-landing .hero { display:grid; grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr); gap:48px; align-items:center; width:min(1180px,calc(100% - 64px)); margin:0 auto; padding:68px 0 54px; border:0; border-radius:0; background:none; color:var(--ds-navy); overflow:visible; }
.pds-landing .hero h1 { margin:20px 0 24px; font:500 clamp(32px,3.55vw,51px)/1.55 var(--ds-display); letter-spacing:-.045em; word-break:keep-all; }
.pds-landing .hero h1 span { display:block; }
.pds-landing .eyebrow { padding:0; background:none; border:0; color:var(--ds-bronze); font-size:12px; font-weight:500; letter-spacing:.15em; }
.pds-landing .hero-copy { max-width:430px; color:var(--ds-text-body); font-size:17px; line-height:1.9; word-break:keep-all; }
.pds-landing .hero-actions { margin-top:30px; gap:12px; }
.pds-landing .hero-visual { margin:0; min-width:0; }
.pds-landing .hero-visual img { display:block; width:100%; aspect-ratio:4/5; object-fit:cover; object-position:65% center; border-radius:3px; }
.pds-landing .hero-visual figcaption { display:flex; justify-content:space-between; gap:12px; padding-top:14px; color:var(--ds-text-muted); font-size:12px; letter-spacing:.02em; }
.pds-landing .hero-note { margin-top:32px; border-top:1px solid var(--ds-stroke); padding-top:18px; color:var(--ds-text-muted); font-size:13px; letter-spacing:.03em; }
.pds-landing .section { padding:70px 0; }
.pds-landing .section + .section { border-top:1px solid var(--ds-stroke); }
.pds-landing .section-kicker { display:inline-block; margin-bottom:15px; padding:0; border:0; border-radius:0; background:none; color:var(--ds-bronze); font-size:12px; font-weight:500; letter-spacing:.08em; }
.pds-landing .section-head h2,.pds-landing .role-title { color:var(--ds-navy); font-size:30px; font-weight:600; letter-spacing:-.03em; line-height:1.5; }
.pds-landing .section-head p,.pds-landing .role-copy,.pds-landing .use-card p,.pds-landing .story-card p,.pds-landing .flow-card p { color:var(--ds-text-muted); line-height:1.8; }
.pds-landing .use-card,.pds-landing .story-card,.pds-landing .flow-card { padding:24px 0; border:0; border-top:1px solid var(--ds-stroke-strong); border-radius:0; background:none; box-shadow:none; }
.pds-landing .use-card h3,.pds-landing .story-card h3 { font-weight:600; }
.pds-landing .use-icon { border-radius:0; background:none; color:var(--ds-bronze); }
.pds-landing .number { border-radius:4px; background:var(--ds-ivory); color:var(--ds-bronze); font-weight:500; }
.pds-landing .role-panel { padding:0; border:0; background:none; box-shadow:none; }
.pds-landing .role-list div { border:0; border-bottom:1px solid var(--ds-stroke); border-radius:0; background:none; }
.pds-landing .phone-card { border:1px solid var(--ds-stroke); border-radius:10px; box-shadow:none; }
.pds-landing .phone-top { background:var(--ds-navy); }
.pds-landing .app-row { border-radius:4px; background:var(--ds-surface); }
.pds-landing .cta-band { border-radius:10px; background:var(--ds-navy); box-shadow:none; }
.pds-landing footer { background:var(--ds-ivory); border-color:var(--ds-stroke); }
@media(max-width:900px) {
 .pds-landing .hero { gap:28px; width:calc(100% - 40px); }
 .pds-landing .hero h1 { font-size:34px; }
 .pds-landing .header-actions { gap:8px; }
}
@media(max-width:640px) {
 .pds-landing .hero { grid-template-columns:1fr; gap:30px; padding:38px 0; width:calc(100% - 36px); }
 .pds-landing .hero h1 { font-size:33px; margin-top:14px; }
 .pds-landing .hero-visual img { aspect-ratio:5/4; object-position:65% center; }
 .pds-landing .hero-copy { font-size:16px; }
 .pds-landing .hero-note { margin-top:24px; }
 .pds-landing .hero-actions { display:grid; grid-template-columns:1fr 1fr; }
 .pds-landing .hero-actions .button { padding:12px; font-size:14px; }
 .pds-landing .brand { font-size:25px; }
 .pds-landing .header-actions .nav-link:not(.primary) { display:none; }
 .pds-landing .section { padding:44px 0; }
 .pds-landing .section-head h2,.pds-landing .role-title { font-size:25px; }
}

/* --------------------------- ADMIN / OPERATOR --------------------------- */
body.pds-admin { background:var(--ds-canvas); color:var(--ds-text-strong); }
.pds-admin .admin-shell { grid-template-columns:250px minmax(0,1fr); }
.pds-admin .sidebar {
  color:#fff;
  background:
    linear-gradient(180deg, rgba(188,162,129,.08), transparent 32%),
    var(--ds-navy-deep);
  border-right:0;
}
.pds-admin .side-brand .brand { color:#fff; }
.pds-admin .side-brand .mark { background:var(--ds-navy); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); }
.pds-admin .side-nav { gap:6px; }
.pds-admin .side-nav button {
  position:relative;
  min-height:48px;
  border-radius:10px;
  color:rgba(255,255,255,.67);
  font-size:15px;
}
.pds-admin .side-nav button:hover { color:#fff; background:rgba(255,255,255,.08); }
.pds-admin .side-nav button.active {
  color:#fff;
  background:rgba(132,103,69,.24);
  box-shadow:inset 3px 0 0 var(--ds-sky);
}
.pds-admin .side-footer { color:rgba(255,255,255,.58); border-color:rgba(255,255,255,.14); }
.pds-admin .main { background:var(--ds-canvas); }
.pds-admin .admin-topbar {
  border-bottom:1px solid var(--ds-stroke);
  background:rgba(247,245,239,.94);
  backdrop-filter:saturate(160%) blur(16px);
}
.pds-admin .top-title strong { color:var(--ds-navy); }
.pds-admin .admin-content {
  background:
    linear-gradient(90deg, transparent 0 23px, var(--ds-piste-line) 23px 24px, transparent 24px),
    var(--ds-canvas);
}
.pds-admin .page-head h1,
.pds-admin .detail-title h2 { color:var(--ds-navy); letter-spacing:-.035em; }
.pds-admin .page-head p,
.pds-admin .detail-title p { color:var(--ds-text-muted); }

.pds-admin .card,
.pds-admin .surface-card,
.pds-admin .operator-side,
.pds-admin .operator-main,
.pds-admin .operator-detail-card,
.pds-admin .operator-board-card,
.pds-admin .operator-match-card,
.pds-admin .group-card,
.pds-admin .player-card {
  border-color:var(--ds-stroke);
  border-radius:12px;
  box-shadow:none;
  background:#fff;
}
.pds-admin .card { padding:20px; }
.pds-admin .metric {
  position:relative;
  border:1px solid var(--ds-stroke);
  border-top:4px solid var(--ds-electric);
  border-radius:10px;
  background:#fff;
  box-shadow:none;
}
.pds-admin .metric:nth-child(2n) { border-top-color:var(--ds-navy); }
.pds-admin .metric b { color:var(--ds-navy); }
.pds-admin .section-title h2 { color:var(--ds-navy); }

.pds-admin .table {
  overflow:hidden;
  border:1px solid var(--ds-stroke);
  border-radius:12px;
  background:#fff;
}
.pds-admin .table > .row {
  margin:0;
  border:0;
  border-bottom:1px solid var(--ds-stroke);
  border-radius:0;
  background:#fff;
  box-shadow:none;
}
.pds-admin .table > .row:last-child { border-bottom:0; }
.pds-admin .row.clickable:hover { background:#f1f6fd; border-color:var(--ds-stroke); }

.pds-admin .primary,
.pds-admin .secondary,
.pds-admin .ghost,
.pds-admin .field,
.pds-admin .top-action { border-radius:10px; }
.pds-admin .primary { background:var(--ds-electric-strong); }
.pds-admin .primary:hover { background:var(--ds-navy); }
.pds-admin .field { border-color:var(--ds-stroke); background:#fff; }
.pds-admin .field:focus { border-color:var(--ds-electric); box-shadow:var(--ds-focus); }
.pds-admin .top-action { min-height:44px; border-color:var(--ds-stroke); }
.pds-admin .mini { width:auto; min-height:40px; border-radius:9px; }

.pds-admin .operator-tabs {
  padding:4px;
  border:1px solid var(--ds-stroke);
  border-radius:12px;
  background:#e7ecf1;
}
.pds-admin .operator-tabs button { min-height:44px; border-radius:9px; }
.pds-admin .operator-tabs button.active { color:#fff; background:var(--ds-navy); }

.pds-admin .schedule-board {
  border:1px solid var(--ds-stroke);
  border-radius:12px;
  box-shadow:none;
}
.pds-admin .board-cell.header {
  color:#fff;
  background:var(--ds-navy);
  border-color:rgba(255,255,255,.14);
}
.pds-admin .board-time { background:#f0f5fb; color:var(--ds-navy); }
.pds-admin .match-chip {
  border-radius:8px;
  border-color:#bfd4ef;
  background:#f2f7fe;
  box-shadow:none;
}
.pds-admin .match-chip.selected { color:#fff; background:var(--ds-electric-strong); border-color:var(--ds-electric-strong); }
.pds-admin .chip { border-radius:8px; }
.pds-admin .code-pill { border-radius:8px; color:var(--ds-navy); background:var(--ds-navy-soft); }

.pds-admin .login-card { border-radius:20px; border-color:var(--ds-stroke); box-shadow:var(--ds-shadow-lg); }
.pds-admin .login-intro {
  background:
    linear-gradient(90deg, transparent 0 10%, rgba(188,162,129,.20) 10% 10.5%, transparent 10.5% 89.5%, rgba(188,162,129,.20) 89.5% 90%, transparent 90%),
    linear-gradient(145deg, var(--ds-navy-deep), #263c4a),
    url("/fencingcoach/hero.jpg") center/cover no-repeat;
}

@media (max-width:980px) {
  .pds-landing .hero { padding:48px; }
  .pds-admin .admin-shell { grid-template-columns:1fr; }
  .pds-admin .sidebar { background:var(--ds-navy-deep); }
}

@media (max-width:640px) {
  .pds-landing .hero {
    width:calc(100% - 24px);
    margin-top:12px;
    padding:34px 20px 30px;
    border-radius:22px;
  }
  .pds-landing .hero h1 { font-size:40px; line-height:1.12; }
  .pds-landing .hero-actions .button,
  .pds-landing .cta-actions .button { width:100%; }
  .pds-landing .section { padding:58px 0; }
  .pds-landing .role-panel { padding-left:18px; }
  .pds-app .view { padding-left:16px; padding-right:16px; }
}

@media (prefers-reduced-motion:reduce) {
  .pds-app *, .pds-admin *, .pds-landing * {
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}

/* ========================= PDS 1.1: PRODUCT POLISH ========================= */
/* State language: calm neutral empty states, visible loading, actionable errors. */
.pds-app .soft-empty {
  position:relative;
  min-height:116px;
  display:grid;
  align-content:center;
  padding:22px 70px 22px 20px;
  overflow:hidden;
  text-align:left;
  border:1px solid #d9e3ef;
  border-left:4px solid var(--ds-sky);
  border-radius:12px;
  background:#f7f9fc;
}
.pds-app .soft-empty::before {
  content:"";
  position:absolute;
  right:20px;
  top:50%;
  width:34px;
  height:34px;
  transform:translateY(-50%);
  opacity:.34;
  background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231767dc' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M7.8 17.8 17.8 7M16.2 17.8 6.2 7'/%3E%3Ccircle cx='7.8' cy='17.8' r='1.7'/%3E%3Ccircle cx='16.2' cy='17.8' r='1.7'/%3E%3C/svg%3E");
}
.pds-app .soft-empty .title-with-icon { justify-content:flex-start; }
.pds-app .soft-empty h3 { color:var(--ds-navy); font-size:17px; }
.pds-app .soft-empty p { max-width:32em; color:var(--ds-text-muted); font-size:15px; line-height:1.62; }
.pds-app .soft-empty.soft-error {
  border-color:#f3c5ca;
  border-left-color:#d92d4c;
  background:#fff7f8;
}
.pds-app .soft-empty.soft-error::before {
  opacity:.65;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d92d4c' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 3 10 18H2Z'/%3E%3Cpath d='M12 9v5M12 17h.01'/%3E%3C/svg%3E");
}
.pds-app .soft-empty.soft-error h3 { color:#9d1630; }

.pds-app #recordHistoryList[aria-busy="true"] .record-empty {
  position:relative;
  overflow:hidden;
  border-color:#d9e3ef;
  background:#f7f9fc;
}
.pds-app #recordHistoryList[aria-busy="true"] .record-empty::after {
  content:"";
  position:absolute;
  inset:0;
  transform:translateX(-100%);
  background:linear-gradient(100deg, transparent 22%, rgba(255,255,255,.86) 48%, transparent 74%);
  animation:pds-state-sweep 1.35s ease-in-out infinite;
}
@keyframes pds-state-sweep { to { transform:translateX(100%); } }

/* Lightweight in-product feedback replaces browser alert chrome. */
.pds-toast-stack {
  position:fixed;
  z-index:4000;
  left:50%;
  bottom:calc(92px + env(safe-area-inset-bottom));
  width:min(390px, calc(100% - 32px));
  display:grid;
  gap:8px;
  transform:translateX(-50%);
  pointer-events:none;
}
.pds-toast {
  min-height:52px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:13px 16px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:12px;
  color:#fff;
  background:var(--ds-navy-deep);
  box-shadow:0 16px 38px rgba(7,23,41,.24);
  font-size:15px;
  font-weight:750;
  line-height:1.5;
  opacity:0;
  transform:translateY(10px);
  transition:opacity .18s ease, transform .18s ease;
}
.pds-toast.is-visible { opacity:1; transform:translateY(0); }
.pds-toast.is-success { background:#075d4d; }
.pds-toast.is-error { background:#8f1830; }
.pds-toast .ui-icon { width:20px; height:20px; flex:0 0 auto; }

/* Inline status messages reserve less space and announce their change. */
.pds-app #authMessage:empty,
.pds-app #oauthMessage:empty,
.pds-app #profileMessage:empty,
.pds-admin .message:empty { display:none; }
.pds-app #authMessage:not(:empty),
.pds-app #oauthMessage:not(:empty),
.pds-app #profileMessage:not(:empty) {
  margin-top:12px;
  padding:11px 13px;
  border-left:3px solid var(--ds-electric);
  border-radius:8px;
  color:var(--ds-text-body);
  background:#eef5fe;
  font-size:14px;
  line-height:1.5;
  text-align:left;
}

.pds-admin .empty {
  min-height:96px;
  display:grid;
  grid-template-columns:40px minmax(0,1fr);
  place-items:center start;
  gap:14px;
  padding:18px;
  border:1px solid #d9e3ef;
  border-left:4px solid var(--ds-sky);
  border-radius:10px;
  color:var(--ds-text-muted);
  background:#f7f9fc;
  text-align:left;
  font-size:14px;
  line-height:1.55;
}
.pds-admin .empty::before {
  content:"";
  width:36px;
  height:36px;
  border-radius:10px;
  background:#e5f0fd center/22px 22px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231767dc' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M7.8 17.8 17.8 7M16.2 17.8 6.2 7'/%3E%3Ccircle cx='7.8' cy='17.8' r='1.7'/%3E%3Ccircle cx='16.2' cy='17.8' r='1.7'/%3E%3C/svg%3E");
}
.pds-admin .message:not(:empty) {
  min-height:44px;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
  padding:10px 13px;
  border:1px solid #c7daf2;
  border-left:4px solid var(--ds-electric);
  border-radius:9px;
  color:var(--ds-text-body);
  background:#eef5fe;
  font-size:13px;
  line-height:1.5;
}
.pds-admin .message[data-tone="success"] {
  border-color:#a9d9c8;
  border-left-color:#0a7c65;
  color:#075d4d;
  background:#edf9f5;
}
.pds-admin .message[data-tone="error"] {
  border-color:#f3c5ca;
  border-left-color:#d92d4c;
  color:#8f1830;
  background:#fff7f8;
}

/* Landing iconography now uses the same 24px stroke language as the product. */
.pds-landing .use-icon svg {
  width:26px;
  height:26px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}

@media (max-width:640px) {
  /* PDS 1.2: compact phone geometry, verified against Galaxy A36 (384 CSS px). */
  .pds-app .shell { box-shadow:none; }
  .pds-app .top { padding:10px 16px 9px; }
  .pds-app .top::after {
    left:16px;
    right:16px;
    height:1px;
    background:linear-gradient(90deg, var(--ds-electric) 0 18%, rgba(132,103,69,.10) 18% 100%);
  }
  .pds-app .role-chip {
    min-height:34px;
    padding:0 11px;
    font-size:12px;
  }
  .pds-app .icon-button,
  .pds-app .back-icon-button {
    min-width:44px;
    min-height:44px;
    border-radius:12px;
  }
  .pds-app .view {
    padding:12px 16px 24px;
    background:linear-gradient(180deg, #fbf9f4 0, var(--ds-canvas) 180px, var(--ds-ivory) 100%);
  }
  .pds-app .title,
  .pds-app .home-greeting { padding:5px 0 0; }
  .pds-app .title h1,
  .pds-app .home-greeting h1 {
    font-size:25px;
    line-height:1.18;
    letter-spacing:-.03em;
  }
  .pds-app .title p,
  .pds-app .home-greeting p {
    margin-top:6px;
    font-size:15px;
    line-height:1.5;
  }
  .pds-app .section { margin-top:16px; }
  .pds-app .card { padding:15px; }
  .pds-app .row-card,
  .pds-app .match-card,
  .pds-app .record-item { padding:14px; }
  .pds-app .section-title,
  .pds-app .home-section-head h2 {
    margin-bottom:9px;
    font-size:15px;
  }
  .pds-app .segmented.section { margin-top:14px; }
  .pds-app .segmented button { min-height:42px; }
  .pds-app .nav {
    min-height:68px;
    padding:5px 8px calc(6px + env(safe-area-inset-bottom));
  }
  /* Android WebView already excludes the system navigation area from its viewport. */
  body.pds-app.native-app .nav { padding-bottom:6px; }
  .pds-app .nav button {
    min-height:54px;
    border-radius:10px;
  }
  .pds-app .nav button.active { background:#eee9df; }
  .pds-app .nav button.active::before {
    left:34%;
    right:34%;
  }
  .pds-app .record-detail-top { margin-bottom:12px; }
  .pds-app .record-detail-actions button {
    min-height:44px;
    border-radius:11px;
  }
  .pds-app #recordDetailScreen > .card:first-of-type > h3 { font-size:21px; }
  .pds-app #recordDetailScreen > .card:first-of-type > p {
    margin-top:5px;
    font-size:14px;
  }
  .pds-app .detail-video-frame {
    margin-top:14px;
    border-radius:14px;
    box-shadow:0 10px 24px rgba(7,23,41,.10);
  }
  .pds-app #reportBlock .section-title {
    margin-bottom:10px;
    font-size:19px;
  }
  .pds-app .parent-report { gap:12px; }
  .pds-app .parent-summary-hero {
    padding:19px 17px;
    border-radius:14px;
    background:linear-gradient(145deg, #faf7f0, #f1eadf 64%, #fbf9f4);
  }
  .pds-app .parent-summary-hero::after {
    left:17px;
    right:17px;
    height:3px;
  }
  .pds-app .parent-summary-hero .eyebrow { font-size:14px; }
  .pds-app .parent-summary-hero h3 {
    font-size:19px;
    line-height:1.58;
    letter-spacing:-.02em;
  }
  .pds-app .parent-summary-card,
  .pds-app .parent-term-card,
  .pds-app .opponent-link-card,
  .pds-app .head-history-card,
  .pds-app .footwork-card,
  .pds-app .evaluation-section { border-radius:12px; }
  .pds-app .parent-summary-card { padding:15px 14px; }
  .pds-app .parent-summary-card h4 {
    margin-bottom:10px;
    font-size:18px;
  }
  .pds-app .parent-summary-point span,
  .pds-app .report-text-block .report-paragraph,
  .pds-app .evaluation-section p,
  .pds-app .parent-term-card p {
    font-size:16px;
    line-height:1.65;
  }
  .pds-app .record-fab {
    width:54px;
    height:54px;
    border-radius:16px;
  }
  .pds-app .soft-empty { min-height:96px; padding:16px 54px 16px 15px; }
  .pds-app .soft-empty::before { right:15px; width:30px; height:30px; }
  .pds-app .soft-empty p { font-size:14px; }
  .pds-app .record-item { border-radius:12px; }
  .pds-app .record-detail-card { border-radius:14px; }
  .pds-admin .empty { min-height:88px; }
}

/* --------------------------- ATHLETE JOURNAL --------------------------- */
.pds-app .brand .mark svg,.pds-app .intro-brand .mark svg { stroke:currentColor; }
.pds-app .journal-heading { margin:10px 0 8px; font:500 27px/1.5 var(--ds-display); color:var(--ds-navy); letter-spacing:-.035em; }
.pds-app .journal-intro { margin:0 0 22px; color:var(--ds-text-muted); font-size:14px; line-height:1.7; }
.pds-app #recordHistoryBlock { margin-top:0; padding-bottom:70px; }
.pds-app .record-day-title { margin:26px 0 4px; padding:0 0 10px; border-bottom:1px solid var(--ds-stroke); color:var(--ds-text-muted); font-size:13px; font-weight:500; }
.pds-app .record-day-title b { font-weight:500; }
.pds-app .record-day-title .ui-icon { display:none; }
.pds-app .record-item { position:relative; display:grid; grid-template-columns:112px minmax(0,1fr); gap:15px; align-items:center; margin:0; padding:20px 0; border:0; border-bottom:1px solid var(--ds-stroke); border-radius:0; background:none; overflow:visible; cursor:default; }
.pds-app .record-item .record-thumb { width:100%; min-width:0; height:auto; aspect-ratio:4/3; border:0; border-radius:5px; overflow:hidden; }
.pds-app .record-thumb img { width:100%; height:100%; object-fit:cover; }
.pds-app .record-thumb-badge { padding:3px 7px; font-size:11px; font-weight:500; border-radius:3px; background:rgba(20,38,56,.86); }
.pds-app .record-info { min-width:0; }
.pds-app .record-open { display:block; width:100%; padding:0; text-align:left; background:none; border:0; cursor:pointer; }
.pds-app .record-open:disabled { cursor:default; }
.pds-app .record-title-line { display:flex; gap:6px; align-items:flex-start; }
.pds-app .record-title-line .record-name { display:block; margin:0; color:var(--ds-navy); font:600 16px/1.55 var(--ds-font); word-break:keep-all; overflow-wrap:anywhere; }
.pds-app .record-duration-line { margin-top:9px; display:flex; gap:8px; flex-wrap:wrap; color:var(--ds-text-muted); font-size:12px; font-variant-numeric:tabular-nums; }
.pds-app .record-duration-line strong { font-size:12px; font-weight:500; }
.pds-app .record-meta { display:flex; gap:5px; flex-wrap:wrap; margin-top:7px; color:var(--ds-text-muted); font-size:12px; line-height:1.6; }
.pds-app .record-meta span + span::before { content:'·'; margin-right:5px; color:var(--ds-stroke-strong); }
.pds-app .record-tools { position:relative; flex:0 0 44px; }
.pds-app .record-tools summary { display:grid; place-items:center; width:44px; height:44px; margin-top:-9px; border-radius:4px; color:var(--ds-text-muted); font-size:23px; cursor:pointer; list-style:none; }
.pds-app .record-tools summary::-webkit-details-marker { display:none; }
.pds-app .record-tools[open] summary { background:var(--ds-ivory); color:var(--ds-navy); }
.pds-app .record-tools .record-delete-button { position:absolute; z-index:6; top:38px; right:0; width:126px; min-height:44px; padding:10px; border:1px solid var(--ds-stroke); border-radius:7px; background:var(--ds-surface); color:var(--ds-color-danger); font:500 14px/1.3 var(--ds-font); box-shadow:var(--ds-shadow-md); }
.pds-app .record-tools .record-delete-button svg { width:17px; height:17px; }
.pds-app .record-pending { color:var(--ds-bronze); font-size:12px; }
.pds-app .record-detail-actions .record-tools { flex-basis:auto; }
.pds-app .record-detail-actions .record-tools summary { margin:0; min-width:44px; height:44px; }
.pds-app .record-detail-actions .record-share-button { min-height:44px; padding:8px 12px; color:var(--ds-navy); background:transparent; border:1px solid var(--ds-stroke); box-shadow:none; font-size:14px; font-weight:500; }
.pds-app .share-pictogram { background:none; width:22px; height:22px; }
.pds-app .record-detail-actions .record-tools button { min-height:44px; }
.pds-app .record-fab span:first-child { font-size:22px; font-weight:400; }
.pds-app .journal-next { display:block; width:100%; margin:20px 0 28px; padding:20px; text-align:left; border-radius:8px; background:var(--ds-navy); color:#fff; }
.pds-app .journal-next small { color:#d2c4b0; font-size:12px; letter-spacing:.04em; }
.pds-app .journal-next strong { display:block; margin:9px 0; font:500 30px/1.15 var(--ds-font); font-variant-numeric:tabular-nums; }
.pds-app .journal-next span { display:block; font-size:14px; line-height:1.6; overflow-wrap:anywhere; }
.pds-app .journal-next em { display:block; margin-top:12px; font-size:12px; color:#d2c4b0; font-style:normal; }
.pds-app .intro-brand { font:500 25px/1.2 Georgia,serif; }
.pds-app .intro-brand .mark { background:none; color:inherit; }
.pds-app .intro-copy h2 { font:500 28px/1.55 var(--ds-display); letter-spacing:-.035em; }
.pds-app .intro-copy p { font-size:15px; line-height:1.8; }
.pds-app .intro-cta { min-height:48px; border-radius:7px; background:var(--ds-ivory); color:var(--ds-navy); }
.pds-app .intro-dots button { position:relative; width:32px; height:44px; background:none; border-radius:0; }
.pds-app .intro-dots button::after { content:''; position:absolute; left:12px; top:20px; width:8px; height:4px; background:rgba(255,255,255,.5); border-radius:2px; }
.pds-app .intro-dots button.active::after { left:4px; width:24px; background:#fff; }
.pds-app .field,.pds-admin input,.pds-admin select { font-size:16px; }
.pds-admin .side-brand .brand,.pds-share .share-brand strong { font-family:Georgia,serif; font-weight:500; letter-spacing:-.025em; }
@media(max-width:640px) {
 .pds-app .record-fab { width:auto; height:46px; border-radius:8px; }
 .pds-app .record-item { padding:18px 0; border-radius:0; }
 .pds-app .top::after { background:var(--ds-stroke); }
 .pds-app .nav button.active { background:transparent; }
 .pds-app .record-detail-actions { gap:8px; }
 .pds-app .detail-video-frame { border-radius:7px; box-shadow:none; }
}
@media(max-width:360px) {
 .pds-app .record-item { grid-template-columns:94px minmax(0,1fr); gap:11px; }
 .pds-app .brand { font-size:23px; }
}

.pds-admin h1,.pds-admin h2,.pds-admin h3 { font-weight:600; }

/* Preserve readable actions over the dark closing panel and remove legacy plus. */
.pds-app .record-fab::before,.pds-app .record-fab::after { content:none; }
.pds-landing .cta-band .button.secondary { background:var(--ds-ivory); color:var(--ds-navy); border-color:var(--ds-ivory); }
.pds-landing .cta-band .button.primary { background:transparent; color:#fff; border:1px solid #8b969f; }
.pds-app .upload-sheet-modal { background:var(--ds-ivory); }
.pds-app .upload-sheet-card .card { box-shadow:none; border-radius:8px; }

/* Native upload sheets retain the same journal surface as the web shell. */
.pds-app .upload-sheet-modal .upload-sheet-card { background:var(--ds-ivory); }
.pds-app .upload-sheet-modal .upload-card { border-radius:8px; box-shadow:none; }
.pds-app .upload-sheet-modal .record-athlete-summary { background:var(--ds-ivory); border-color:var(--ds-stroke); }
.pds-app .upload-sheet-modal .target-mode-row button.active { background:var(--ds-ivory); border-color:var(--ds-bronze); color:var(--ds-navy); }

/* Navigation and profile overview / editor. */
.pds-app .nav button::before { content:none; }
.pds-app .nav button { gap:2px; align-content:center; }
.pds-app .nav button > .nav-icon { display:grid; place-items:center; width:50px; height:34px; border-radius:12px; background:transparent; transition:background .15s ease; }
.pds-app .nav .nav-icon svg { width:25px; height:25px; stroke-width:1.7; }
.pds-app .nav .nav-solid { display:none; fill:currentColor; stroke:none; }
.pds-app .nav button.active > .nav-icon { background:#e9decb; }
.pds-app .nav button.active .nav-outline { display:none; }
.pds-app .nav button.active .nav-solid { display:block; }
.pds-app .nav .nav-solid-line { stroke:currentColor; stroke-width:1.8; fill:none; }
.pds-app .nav .nav-cut { stroke:#e9decb; stroke-width:1.6; fill:none; }
.pds-app .profile-summary { padding:20px; border:1px solid var(--ds-stroke); border-radius:12px; background:var(--ds-surface); }
.pds-app .profile-summary-top { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.pds-app .profile-identity { display:flex; align-items:center; gap:12px; min-width:0; }
.pds-app .profile-avatar { display:grid; place-items:center; flex:0 0 48px; width:48px; height:48px; border-radius:50%; background:#e9decb; color:var(--ds-navy); font-size:22px; font-weight:600; }
.pds-app .profile-role { color:var(--ds-text-muted); font-size:12px; }
.pds-app .profile-identity h3 { margin:3px 0 0; font-size:20px; line-height:1.4; overflow-wrap:anywhere; }
.pds-app .profile-edit-link { display:flex; align-items:center; justify-content:center; gap:5px; min-width:84px; min-height:44px; padding:6px; background:none; color:var(--ds-navy); font-size:14px; font-weight:600; white-space:nowrap; }
.pds-app .profile-edit-link svg { width:16px; height:16px; }
.pds-app .profile-summary .settings-row { gap:16px; padding:13px 0; }
.pds-app .profile-summary .settings-row > span { flex-shrink:0; }
.pds-app .profile-summary .settings-row strong { min-width:0; text-align:right; font-weight:500; overflow-wrap:anywhere; }
.pds-app .profile-edit-toolbar button { min-height:44px; padding:8px 12px; background:transparent; }
.pds-app .profile-edit-form { padding:20px; border:1px solid var(--ds-stroke); border-radius:12px; background:var(--ds-surface); }
.pds-app .profile-edit-form fieldset { border:0; margin:0; padding:0; min-width:0; }
.pds-app .profile-edit-form label { display:block; margin-top:18px; color:var(--ds-text-body); font-size:14px; }
.pds-app .profile-edit-form label:first-child { margin-top:0; }
.pds-app .profile-edit-form .field { width:100%; min-height:46px; font-size:16px; }
.pds-app .profile-role-fields { margin-top:16px; }
.pds-app .profile-edit-actions { display:grid; grid-template-columns:1fr 1.5fr; gap:10px; margin-top:22px; }
.pds-app .profile-edit-actions button { min-height:48px; }
.pds-app .profile-saved-notice { margin:0; padding:12px 16px; border-radius:8px; background:#e8efe6; color:#34513b; font-size:14px; }

/* Google Identity branding: preserve the provider's colors and proportions. */
@font-face {
  font-family:'Google Sans';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/brand/google-sans-medium.ttf') format('truetype');
}
.pds-app .google-signin-button {
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  min-height:52px;
  padding:12px;
  border:1px solid #747775;
  border-radius:4px;
  background:#fff;
  color:#1f1f1f;
  font-family:'Google Sans',var(--ds-font);
  font-size:14px;
  font-weight:500;
  line-height:20px;
  letter-spacing:0;
  box-shadow:none;
  cursor:pointer;
  transition:box-shadow .15s ease;
}
.pds-app .google-signin-button:hover { box-shadow:0 1px 3px rgba(60,64,67,.2); }
.pds-app .google-signin-button:active { box-shadow:inset 0 0 0 1px #747775; }
.pds-app .google-signin-button:focus-visible { outline:3px solid #1a73e8; outline-offset:3px; }
.pds-app .google-signin-button:disabled { cursor:default; opacity:.5; }
.pds-app .google-signin-logo { display:block; width:20px; height:auto; flex:none; object-fit:contain; }
