:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif;color:#111;background:#f3f4f6}*{box-sizing:border-box}body{margin:0}header{height:64px;background:#111;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:10}header strong{font-size:20px}.brand{display:flex;flex-direction:column;line-height:1.05}.brand-system{font-size:18px;font-weight:800;letter-spacing:.01em}.brand-company{font-size:10px;font-weight:700;letter-spacing:.18em;color:#aaa;margin-top:4px}.login-brand{margin-bottom:14px}.login-brand .brand-system{font-size:28px;color:#111}.login-brand .brand-company{font-size:12px;color:#666;margin-top:6px}nav{display:flex;gap:8px;flex-wrap:wrap}nav a{color:#ccc;text-decoration:none;padding:9px 12px;border-radius:8px;font-size:14px}nav a.active,nav a:hover{background:#333;color:#fff}.container{max-width:1050px;margin:26px auto;padding:0 16px}.narrow{max-width:760px}.panel{background:#fff;border-radius:18px;padding:24px;margin-bottom:20px;box-shadow:0 3px 16px rgba(0,0,0,.06)}h1{margin:5px 0 20px}.eyebrow{font-size:12px;letter-spacing:.15em;font-weight:800}.bib-input,.big-input{width:100%;font-size:42px;font-weight:700;padding:18px;border:2px solid #bbb;border-radius:14px;text-align:center;margin-bottom:12px}.primary,.secondary,.admin-actions button{border:0;border-radius:12px;padding:13px 18px;font-weight:700;cursor:pointer}.primary{background:#111;color:#fff}.secondary{background:#eee}.wide{width:100%}.huge{width:100%;font-size:22px;padding:18px}.input-actions{display:grid;grid-template-columns:minmax(0,2fr) minmax(150px,1fr);gap:10px}.clear-btn{font-size:20px}@media(max-width:520px){.input-actions{grid-template-columns:1fr 1fr}.clear-btn{font-size:18px}}.message{min-height:28px;padding-top:12px;font-weight:700}.message.ok{color:#146c2e}.message.error,.alert{color:#a11212}.queue-list{display:grid;gap:10px}.queue-row{display:flex;gap:14px;align-items:center;padding:14px;border:1px solid #e5e7eb;border-radius:12px}.queue-num{width:36px;height:36px;border-radius:50%;background:#111;color:#fff;display:grid;place-items:center;font-weight:800}.queue-main{font-size:20px}.queue-sub,.muted{color:#666;font-size:14px}.section-title{display:flex;align-items:center;justify-content:space-between}.empty{padding:24px;text-align:center;color:#777}.login-body{min-height:100vh;display:grid;place-items:center;background:#111}.login-card{width:min(420px,92vw);background:#fff;border-radius:20px;padding:30px}.announce-body{background:#0b0b0b;color:#fff}.announce-wrap{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:22px;padding:22px;min-height:calc(100vh - 64px)}.next-card{border:1px solid #333;border-radius:22px;padding:32px;display:flex;flex-direction:column;justify-content:center;text-align:center;background:#111}.next-label{font-size:22px;letter-spacing:.2em;color:#bbb;font-weight:800}.next-bib{font-size:clamp(64px,10vw,150px);font-weight:900;line-height:1}.next-name{font-size:clamp(38px,5vw,76px);font-weight:900;line-height:1.15;margin-top:16px}.next-kana{font-size:clamp(24px,2.6vw,40px);margin-top:12px;color:#ddd}.next-meta{font-size:24px;margin:18px 0;color:#bbb}.done-btn{font-size:30px;font-weight:900;padding:22px;border-radius:16px;border:0;background:#fff;color:#111;cursor:pointer}.coming-panel{border:1px solid #333;border-radius:22px;padding:22px;background:#111}.coming-list{display:grid;gap:10px}.coming-row{display:grid;grid-template-columns:30px 70px 1fr;gap:8px;padding:14px;border-bottom:1px solid #333}.coming-row span{color:#888}.coming-row b{font-size:20px}.coming-row strong{font-size:20px}.coming-row em{grid-column:3;font-style:normal;color:#ddd;writing-mode:horizontal-tb;white-space:normal;word-break:keep-all;overflow-wrap:normal;min-width:0}.coming-row small{grid-column:3;color:#aaa;min-width:0}.empty-big{font-size:52px;color:#777;padding:60px 0}.admin-list{display:grid;gap:8px}.admin-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid #e5e7eb;border-radius:10px}.admin-row small{display:block;color:#777}.admin-actions{display:flex;gap:6px}.admin-actions button{padding:9px 12px;background:#eee}.admin-actions .danger{background:#fee2e2;color:#991b1b}.history-row{display:grid;grid-template-columns:170px 80px 1fr 1fr;gap:10px;padding:9px 0;border-bottom:1px solid #eee;font-size:14px}@media(max-width:800px){header{height:auto;min-height:64px;align-items:flex-start;padding:12px 14px;gap:8px;flex-direction:column}.announce-wrap{grid-template-columns:1fr;padding:10px}.next-card{min-height:58vh;padding:20px}.coming-panel{min-height:30vh}.history-row{grid-template-columns:1fr 70px 1fr}.history-row small{display:none}}

.event-bar{display:flex;align-items:center;gap:12px;padding:10px 22px;background:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:64px;z-index:9}.event-bar span{font-size:10px;font-weight:900;letter-spacing:.16em;color:#777}.event-bar strong{font-size:16px;line-height:1.3}.event-bar-dark{background:#181818;border-bottom-color:#333;color:#fff}.event-bar-dark span{color:#888}.event-import-form{display:grid;gap:12px}.field-label{font-size:13px;font-weight:800}.text-input{width:100%;font-size:18px;padding:13px 14px;border:1px solid #bbb;border-radius:10px;background:#fff}.event-import-form input[type=file]{margin:3px 0}@media(max-width:800px){.event-bar{top:88px;padding:9px 14px}.event-bar strong{font-size:14px}}


/* v0.9 */
.csv-event-preview{
  margin:10px 0 18px;
  padding:12px 14px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:10px;
  background:rgba(255,255,255,.05);
}
.csv-event-preview strong{font-size:1.05em}
.error-text{color:#ff8a8a}
.login-event{font-weight:700;margin:8px 0 18px}


/* v0.9.1 login password field */
.login-card .big-input{
  font-size: clamp(18px, 3.2vw, 28px);
  line-height: 1.25;
  padding: 18px 20px;
  letter-spacing: .02em;
  text-align: left;
  box-sizing: border-box;
  width: 100%;
}

.login-card .big-input::placeholder{
  font-size: clamp(16px, 2.6vw, 22px);
  color: #777;
  opacity: 1;
}


/* v0.10 admin authentication */
.login-links{
  margin-top:16px;
  text-align:center;
}
.login-links a{
  color:#666;
  font-size:14px;
  text-decoration:none;
}
.login-links a:hover{text-decoration:underline}
.admin-login-note{
  margin:10px 0 18px;
  font-size:14px;
  color:#666;
}
.auth-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 9px;
  margin-left:8px;
  border-radius:999px;
  background:rgba(255,255,255,.08);
  font-size:11px;
  letter-spacing:.08em;
  vertical-align:middle;
}

/* v0.11 finish message */
.message-body{min-height:100vh;background:#111;padding:32px 16px}.message-card{width:min(620px,100%);margin:0 auto;background:#fff;border-radius:22px;padding:32px;box-sizing:border-box}.message-card h1{margin:22px 0 10px;font-size:30px}.message-event{font-weight:800;margin:18px 0 0}.message-lead{font-size:17px;line-height:1.7;margin-bottom:6px}.message-note{font-size:14px;color:#666;line-height:1.6}.message-form{display:grid;gap:10px;margin-top:24px}.message-form label{font-weight:800;margin-top:8px}.message-form input,.message-form textarea{width:100%;box-sizing:border-box;border:1px solid #bbb;border-radius:12px;padding:14px 16px;font:inherit;background:#fff}.message-form textarea{resize:vertical;font-size:17px;line-height:1.6}.message-counter{text-align:right;color:#666;font-size:13px}.message-result{padding:12px 14px;border-radius:10px;margin:18px 0}.message-result.ok{background:#eef8f0;color:#176b2c}.message-result.error{background:#fff0f0;color:#a40000}.next-message{width:min(720px,88%);margin:20px auto 4px;padding:16px 20px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:rgba(255,255,255,.06);text-align:left}.next-message-label{font-size:13px;font-weight:800;letter-spacing:.14em;color:#aaa;margin-bottom:8px}.next-message-text{font-size:clamp(22px,2.3vw,34px);font-weight:800;line-height:1.45;color:#fff}.msg-badge{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;background:#fff;color:#111;font-size:10px;font-style:normal;vertical-align:middle;letter-spacing:.08em}.message-admin-list{display:grid;gap:10px}.message-admin-row{display:grid;grid-template-columns:180px 1fr auto;gap:16px;align-items:center;padding:12px 0;border-bottom:1px solid #e5e5e5}.message-admin-text{line-height:1.55}.message-admin-row .danger{border:0;border-radius:9px;padding:9px 12px;background:#fee;color:#a00;font-weight:700}@media(max-width:760px){.message-admin-row{grid-template-columns:1fr}.message-card{padding:24px 20px}}


/* v0.12 mobile-first announcer layout */
@media (max-width: 820px){

  body.announce-body,
  body:has(.announce-grid){
    overflow:auto;
  }

  .announce-grid{
    display:block;
    min-height:auto;
    padding:10px;
  }

  .announce-next,
  .announce-coming{
    width:100%;
    min-height:auto;
    box-sizing:border-box;
    margin:0 0 10px;
    border-radius:16px;
  }

  .announce-next{
    padding:18px 14px 16px;
  }

  .next-label{
    font-size:13px;
    letter-spacing:.18em;
    margin-bottom:4px;
  }

  .next-bib{
    font-size:clamp(58px,20vw,92px);
    line-height:.95;
    margin:4px 0 8px;
  }

  .next-name{
    font-size:clamp(34px,10vw,54px);
    line-height:1.05;
    margin:0 0 6px;
  }

  .next-kana{
    font-size:clamp(20px,5.8vw,30px);
    line-height:1.2;
    margin-bottom:8px;
  }

  .next-meta{
    font-size:16px;
    line-height:1.35;
    margin:8px 0 10px;
  }

  .next-message{
    width:100%;
    box-sizing:border-box;
    margin:10px 0 12px;
    padding:16px 16px 18px;
    min-height:126px;
    border-radius:14px;
  }

  .next-message-label{
    font-size:12px;
    margin-bottom:8px;
  }

  .next-message-text{
    font-size:clamp(22px,6.4vw,31px);
    line-height:1.45;
    font-weight:800;
  }

  #announceBtn{
    display:block;
    width:auto;
    min-width:138px;
    max-width:190px;
    margin:0 auto;
    padding:12px 20px;
    font-size:18px;
    border-radius:12px;
  }

  .announce-coming{
    padding:16px 14px 8px;
  }

  .announce-coming h2{
    font-size:22px;
    margin:0 0 10px;
  }

  .coming-row{
    grid-template-columns:28px 64px 1fr;
    gap:6px 8px;
    padding:11px 0;
  }

  .coming-row > span{
    font-size:13px;
  }

  .coming-row > b{
    font-size:20px;
  }

  .coming-row > strong{
    font-size:19px;
    line-height:1.2;
  }

  .coming-row em{
    grid-column:3;
    font-size:15px;
    line-height:1.2;
    white-space:normal;
  }

  .coming-row small{
    grid-column:3;
    font-size:13px;
    line-height:1.3;
  }

  .msg-badge{
    font-size:9px;
    padding:2px 6px;
  }
}

/* v0.12 desktop: message gets more visual weight, action button gets less */
@media (min-width: 821px){
  .next-message{
    width:min(760px,90%);
    min-height:120px;
    padding:18px 22px;
  }

  .next-message-text{
    font-size:clamp(26px,2.4vw,38px);
  }

  #announceBtn{
    width:auto;
    min-width:180px;
    padding:14px 26px;
    font-size:24px;
  }
}


/* v0.14 message confirmation */
.current-message-box{
  margin:22px 0 18px;
  padding:16px;
  border-radius:14px;
  background:#f4f4f4;
  border:1px solid #ddd;
}
.current-message-title{
  font-size:13px;
  font-weight:800;
  color:#666;
  letter-spacing:.04em;
  margin-bottom:8px;
}
.current-message-text{
  font-size:20px;
  line-height:1.55;
  font-weight:800;
  color:#111;
}
.current-message-empty{
  color:#777;
  font-size:15px;
}
.identified-runner{
  display:flex;
  flex-wrap:wrap;
  gap:8px 12px;
  align-items:center;
  padding:10px 0 4px;
}
.identified-runner span{
  font-size:14px;
  color:#666;
}
.identified-runner strong{
  font-size:19px;
}


/* v0.15 privacy */
.current-message-status{
  font-size:18px;
  font-weight:800;
  line-height:1.45;
  color:#333;
  margin-bottom:6px;
}
.current-message-status.registered{
  color:#176b2c;
}
