:root{
  --bg:#071021;
  --bg2:#0d1730;
  --card:rgba(20,31,58,.86);
  --card2:rgba(14,23,43,.92);
  --text:#eef5ff;
  --muted:#aebcdc;
  --line:rgba(147,169,217,.22);
  --accent:#63e6be;
  --accent2:#79a8ff;
  --pink:#fb7aa9;
  --warn:#fbbf24;
  --danger:#fb7185;
  --shadow:0 18px 45px rgba(0,0,0,.34);
  --r:22px;
  --sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Yu Gothic",sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100svh;
  font-family:var(--sans);
  color:var(--text);
  background:
    radial-gradient(850px 620px at 12% -10%, rgba(121,168,255,.25), transparent 60%),
    radial-gradient(750px 560px at 94% 5%, rgba(99,230,190,.18), transparent 56%),
    radial-gradient(720px 500px at 50% 110%, rgba(251,122,169,.14), transparent 60%),
    linear-gradient(180deg,#081123 0%,#0a1020 100%);
}
button,input,select,textarea{font:inherit}
a{color:inherit}
.app-shell{width:min(1120px,calc(100% - 24px));margin:0 auto;padding:16px 0 90px}
.hero-card,.card{
  border:1px solid var(--line);
  border-radius:var(--r);
  background:linear-gradient(180deg,rgba(20,31,58,.88),rgba(13,22,43,.86));
  box-shadow:var(--shadow);
  backdrop-filter:blur(12px);
}
.hero-card{padding:16px;display:flex;align-items:center;justify-content:space-between;gap:14px;position:sticky;top:10px;z-index:20}
.hero-main{display:flex;gap:12px;align-items:center;min-width:0}
.hero-icon{width:50px;height:50px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(99,230,190,.24),rgba(121,168,255,.22));border:1px solid rgba(99,230,190,.32);font-size:26px;flex:0 0 auto}
.eyebrow,.section-kicker{margin:0 0 4px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.06em}
h1{margin:0;font-size:clamp(20px,3.8vw,34px);line-height:1.08}
.hero-sub{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.65}
.hero-nav{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.hero-nav a{padding:10px 12px;border-radius:999px;border:1px solid var(--line);background:rgba(9,17,34,.66);text-decoration:none;color:var(--muted);font-size:12px;font-weight:700}
.layout-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);gap:14px;margin-top:14px;align-items:start}
.card{padding:16px}
.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
h2{margin:0;font-size:18px;line-height:1.3}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 11px;border-radius:999px;border:1px solid rgba(99,230,190,.26);background:rgba(99,230,190,.1);color:#cbfff0;font-size:12px;font-weight:800;white-space:nowrap}
.now-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.setting-card{padding:16px;border-radius:20px;border:1px solid var(--line);background:linear-gradient(135deg,rgba(121,168,255,.12),rgba(255,255,255,.04));min-height:112px;display:flex;flex-direction:column;justify-content:space-between;gap:8px}.setting-card span{color:var(--muted);font-size:13px;font-weight:700}.setting-card strong{font-size:clamp(28px,5.2vw,44px);line-height:1.05;letter-spacing:.02em}.teacher-card{border-color:rgba(121,168,255,.36)}.student-card{border-color:rgba(99,230,190,.34)}
.one-liner-box{margin-top:10px;border:1px dashed rgba(147,169,217,.28);border-radius:18px;padding:12px;background:rgba(9,17,34,.55)}.tiny-label{display:block;color:var(--muted);font-size:12px;font-weight:800;margin-bottom:5px}.one-liner-box p,.notice p{margin:0;line-height:1.65}.quick-actions{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:10px;margin-top:12px}.big-action,.btn{border:1px solid var(--line);border-radius:16px;min-height:48px;padding:0 14px;background:rgba(255,255,255,.055);color:var(--text);font-weight:850;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 10px 24px rgba(0,0,0,.22);touch-action:manipulation}.big-action.primary,.btn.primary{border-color:rgba(99,230,190,.56);background:linear-gradient(135deg,rgba(99,230,190,.23),rgba(121,168,255,.15))}.big-action.danger{border-color:rgba(251,113,133,.45);background:rgba(251,113,133,.12)}.btn.ghost{box-shadow:none;background:rgba(9,17,34,.55);color:var(--muted)}.btn.small{min-height:38px;padding:0 10px;font-size:12px}.big-action:active,.btn:active,.tab:active,.mobile-bar button:active{transform:translateY(1px)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid.compact{margin-top:12px}.field{display:flex;flex-direction:column;gap:7px;border:1px solid var(--line);border-radius:18px;background:rgba(9,17,34,.52);padding:10px}.field.no-border{border:0;background:transparent;padding:0}.field span,label{font-size:12px;color:var(--muted);font-weight:800}input,select,textarea{width:100%;border:1px solid rgba(147,169,217,.25);background:#0a1328;color:var(--text);border-radius:14px;padding:12px;outline:none}select{min-height:48px}textarea{min-height:112px;resize:vertical;line-height:1.65}.share-text{min-height:158px;font-size:15px}.accordion{margin-top:12px;border:1px solid var(--line);border-radius:18px;background:rgba(9,17,34,.44);padding:10px}.accordion summary{cursor:pointer;font-weight:850;color:var(--text);padding:4px}.accordion[open] summary{margin-bottom:10px}.inline-actions,.share-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.tab{min-height:44px;border-radius:999px;border:1px solid var(--line);background:rgba(9,17,34,.58);color:var(--muted);font-weight:850;cursor:pointer}.tab.is-active{color:var(--text);border-color:rgba(99,230,190,.55);background:rgba(99,230,190,.14)}.counter-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;color:var(--muted);font-size:12px}.warn-text{color:var(--warn);font-weight:800}.hint{margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.7}.qr-inline{margin-top:12px;display:grid;grid-template-columns:240px minmax(0,1fr);gap:12px;align-items:center}.qr-card{display:grid;place-items:center;background:#fff;border-radius:20px;padding:10px}.qr-card img{display:block;width:220px;height:220px}.qr-inline p{margin:0;color:var(--muted);font-size:13px;line-height:1.75}.info-panel{grid-column:2}.notice{border:1px dashed rgba(147,169,217,.28);border-radius:18px;padding:13px;background:rgba(9,17,34,.48);color:var(--muted)}.notice b{color:var(--text)}.notice ul{margin:8px 0 0;padding-left:1.25em;line-height:1.75}.site-footer{margin-top:16px;text-align:center;color:var(--muted);font-size:12px;line-height:1.7}.toast{position:fixed;left:50%;bottom:calc(82px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:80;display:none;padding:11px 14px;border-radius:999px;border:1px solid rgba(99,230,190,.4);background:rgba(9,17,34,.96);box-shadow:var(--shadow);font-weight:800;font-size:13px}.mobile-bar{display:none}
[hidden]{display:none!important}
@media (max-width:900px){.hero-card{position:relative;top:auto;align-items:flex-start;flex-direction:column}.hero-nav{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr}.hero-nav a{text-align:center}.layout-grid{grid-template-columns:1fr}.info-panel{grid-column:auto}.share-panel{order:2}.info-panel{order:3}.qr-inline{grid-template-columns:1fr}.qr-card{width:min(260px,100%);margin:auto}.qr-inline p{text-align:center}}
@media (max-width:640px){.app-shell{width:min(100% - 16px,1120px);padding-top:8px}.hero-card,.card{border-radius:20px;padding:12px}.hero-sub{font-size:12px}.hero-nav{grid-template-columns:1fr 1fr}.hero-nav a:last-child{grid-column:1/-1}.now-grid{grid-template-columns:1fr}.setting-card{min-height:96px}.quick-actions{grid-template-columns:1fr 1fr}.quick-actions .primary{grid-column:1/-1;min-height:58px;font-size:18px}.form-grid{grid-template-columns:1fr}.share-actions{display:grid;grid-template-columns:1fr 1fr}.share-actions .primary{grid-column:1/-1}.mobile-bar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(6,13,27,.92);border-top:1px solid var(--line);backdrop-filter:blur(12px)}.mobile-bar button{min-height:46px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--text);font-weight:900}.mobile-bar .main{background:linear-gradient(135deg,rgba(99,230,190,.28),rgba(121,168,255,.18));border-color:rgba(99,230,190,.52)}}

/* v2: QRの初期空白対策。初期状態では完全に非表示にし、表示時だけ開く */
.qr-inline{
  display:none;
  margin-top:12px;
  grid-template-columns:220px minmax(0,1fr);
  gap:12px;
  align-items:center;
}
.qr-inline.is-visible{display:grid}
.qr-copy{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.qr-copy p{margin:0;color:var(--muted);font-size:13px;line-height:1.75}

.qr-modal{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;padding:18px}
.qr-modal.is-open{display:flex}
.qr-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.58);backdrop-filter:blur(8px)}
.qr-modal-card{position:relative;width:min(92vw,390px);border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,rgba(20,31,58,.98),rgba(10,19,40,.98));box-shadow:var(--shadow);padding:16px}
.qr-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.qr-close{width:42px;height:42px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.06);color:var(--text);font-size:24px;line-height:1;cursor:pointer}
.modal-qr-card{width:292px;max-width:100%;margin:0 auto}
.modal-qr-card img{width:260px;height:260px;max-width:100%}
.qr-modal-help{margin:12px 0 0;color:var(--muted);font-size:13px;line-height:1.7;text-align:center}
.qr-modal-close-btn{width:100%;margin-top:12px}

@media (max-width:900px){
  .qr-inline{grid-template-columns:1fr}
  .qr-copy{align-items:center;text-align:center}
}
@media (max-width:640px){
  .share-panel,.info-panel{margin-top:0}
  .share-text{min-height:118px}
  .qr-modal-card{border-radius:20px;padding:14px}
}


/* v3: 2カラム時の空白対策。
   左の「いまの学園設定」が縦長でも、右側は「共有」→「参加者向け説明」を詰めて配置する。 */
@media (min-width:901px){
  .layout-grid{
    align-items:start;
    grid-auto-flow:row;
  }
  .now-panel{
    grid-column:1;
    grid-row:1 / span 2;
  }
  .share-panel{
    grid-column:2;
    grid-row:1;
  }
  .info-panel{
    grid-column:2;
    grid-row:2;
    margin-top:0;
  }
}

@media (max-width:900px){
  .layout-grid{
    display:flex;
    flex-direction:column;
    gap:10px;
  }
  .now-panel,
  .share-panel,
  .info-panel{
    order:initial;
    grid-column:auto;
    grid-row:auto;
    margin-top:0;
  }
  .now-panel{order:1}
  .share-panel{order:2}
  .info-panel{order:3}
}

@media (max-width:640px){
  .layout-grid{gap:8px;margin-top:8px}
  .share-panel + .info-panel{margin-top:0}
  .share-text{min-height:104px}
}

/* v4: 履歴セクション削除。参加者向け説明を共有セクション直下へ詰める。 */
