:root{
  --bg:#eaf8fc;--paper:#fff;--ink:#17252b;--muted:#61767f;--line:#bddfe8;
  --soft:#e4f5fa;--accent:#087d96;--accentDark:#075b6c;--accentSoft:#d9f3f9;
  --focus:#083f4c;--warn:#8a5300;--warnBg:#fff7df;--missing:#5f6470;--complex:#5d3c82;
  --shadow:0 16px 50px rgba(20,75,89,.14)
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Sans","Noto Sans JP",sans-serif;background:linear-gradient(180deg,#dff5fb 0,#f8fdff 260px,var(--bg) 100%)}
button,input{font:inherit}button{touch-action:manipulation}.appShell{max-width:1560px;margin:0 auto;padding:18px 18px 44px}.hero{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.eyebrow{margin:0 0 3px;color:var(--accentDark);font-weight:800;font-size:12px;letter-spacing:.04em}.hero h1{font-size:24px;line-height:1.3;margin:0}.hero h1 span{font-size:13px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px 7px;vertical-align:3px}.lead{margin:7px 0 0;color:var(--muted);font-size:13px}.datasetBadge{background:rgba(255,255,255,.84);border:1px solid var(--line);border-radius:14px;padding:9px 12px;font-size:12px;white-space:nowrap;box-shadow:0 5px 18px rgba(20,75,89,.08)}
.controlDeck{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:18px 0 10px}.viewSwitch{display:flex;border:1px solid var(--line);background:var(--paper);border-radius:11px;overflow:hidden}.viewSwitch button{min-width:52px;min-height:42px;border:0;border-right:1px solid var(--line);background:transparent;font-weight:750;cursor:pointer}.viewSwitch button:last-child{border-right:0}.viewSwitch button.active{background:var(--accent);color:#fff}.dateNav{display:flex;align-items:stretch}.dateNav>button{width:42px;border:1px solid var(--line);background:var(--paper);cursor:pointer}.dateNav>button:first-child{border-radius:10px 0 0 10px}.dateNav>button:last-child{border-radius:0 10px 10px 0}.datePickerLabel{position:relative;display:flex;align-items:center;justify-content:center;min-width:164px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper);font-size:13px;font-weight:800}.datePickerLabel input{position:absolute;inset:0;opacity:0;cursor:pointer}.secondaryButton{min-height:42px;border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:0 12px;cursor:pointer}.searchBox{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:0 10px;min-height:42px;flex:1;min-width:220px}.searchBox span{font-size:11px;color:var(--muted)}.searchBox input{border:0;outline:0;background:transparent;min-width:0;flex:1}
.filterPanel{background:rgba(255,255,255,.86);border:1px solid var(--line);border-radius:14px;padding:0 13px;margin:10px 0;box-shadow:0 8px 24px rgba(20,75,89,.06)}.filterPanel summary{cursor:pointer;padding:12px 0;font-weight:850}.filterPanel summary span{font-weight:500;color:var(--muted);font-size:12px;margin-left:6px}.filterBlock{border-top:1px solid var(--line);padding:12px 0}.filterHeading{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}.filterHeading span{font-size:11px;color:var(--muted)}.filterActions{display:flex;gap:6px;margin:8px 0}.filterActions button{border:1px dashed var(--accent);color:var(--accentDark);background:#fff;border-radius:999px;padding:5px 9px;font-size:11px;cursor:pointer}.chipRow{display:flex;gap:6px;flex-wrap:wrap}.filterChip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 10px;font-size:12px;cursor:pointer}.filterChip.active{background:var(--accent);border-color:var(--accent);color:#fff}.attendanceOnly{display:flex;align-items:center;gap:7px;border-top:1px solid var(--line);padding:12px 0;font-weight:750}.attendanceOnly input{width:18px;height:18px}.statusLine{font-size:12px;color:var(--muted);margin:10px 2px}.calendar{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.dow,.monthGrid{display:grid;grid-template-columns:repeat(7,1fr)}.dow{background:var(--soft);border-bottom:1px solid var(--line)}.dow div{padding:9px;text-align:center;font-size:12px;color:var(--muted);font-weight:750}.dayCell{min-height:174px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px;overflow:hidden}.dayCell:nth-child(7n){border-right:0}.dayCell.out{background:#f9fbfc;color:#a5afb3}.dateHead{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px}.dateButton{border:0;background:transparent;padding:1px 2px;font-size:11px;font-weight:850;cursor:pointer;color:inherit}.count{font-size:9px;color:var(--muted)}
.eventCard{border:1px solid var(--line);border-radius:9px;padding:7px;background:#fff;margin-bottom:5px;cursor:pointer;position:relative}.eventCard:hover,.eventCard:focus-visible{border-color:var(--accent);outline:0}.eventCard.attending{background:#f2fcfe;border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.eventTitle{font-size:11px;font-weight:750;line-height:1.4}.timeChips,.groupChips,.stateChips{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}.timeChip,.groupChip,.stateChip{font-size:9px;border-radius:999px;padding:2px 5px}.timeChip{background:var(--soft)}.groupChip{border:1px solid var(--line)}.stateChip{border:1px solid currentColor}.stateChip.review{color:var(--warn);background:var(--warnBg)}.stateChip.missing{color:var(--missing);background:#f3f4f6}.stateChip.complex{color:var(--complex);background:#f5effb}.venue{font-size:10px;color:var(--muted);margin-top:4px}.attendanceBadge{display:inline-flex;margin-top:5px;border:1px solid var(--accent);background:#fff;color:var(--accentDark);border-radius:999px;padding:2px 6px;font-size:9px;font-weight:850}
.weekGrid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr))}.weekCol{min-height:570px;border-right:1px solid var(--line);padding:8px}.weekCol:last-child{border-right:0}.weekHead{font-size:12px;font-weight:850;margin-bottom:8px}.weekCol .eventCard{padding:9px}.weekCol .eventTitle{font-size:12px}
.dayTimeline{padding:14px}.dayHeader{font-size:19px;font-weight:900;margin-bottom:13px}.typeSection{border-top:1px solid var(--line);padding:15px 0}.typeSection:first-of-type{border-top:0}.typeHeading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px;font-size:15px}.typeHeading span{color:var(--muted);font-size:11px;font-weight:500}.dayEvent{border:1px solid var(--line);border-radius:13px;background:#fff;margin-bottom:10px;overflow:hidden}.dayEventHeader{padding:11px 12px;background:#f8fdff;border-bottom:1px solid var(--line);cursor:pointer}.dayEventTitle{font-size:14px;font-weight:850;line-height:1.45}.dayEventMeta{font-size:11px;color:var(--muted);margin-top:4px}.slotList{padding:4px 10px}.slotRow{display:grid;grid-template-columns:minmax(70px,auto) 1fr auto;gap:9px;align-items:center;border-top:1px solid #e6eef1;padding:9px 2px}.slotRow:first-child{border-top:0}.slotTime{font-weight:850;font-size:13px}.slotLabel{font-size:12px;line-height:1.35}.slotMeta{font-size:10px;color:var(--muted);margin-top:2px}.slotAttend{border:1px solid var(--accent);background:#fff;color:var(--accentDark);border-radius:8px;padding:7px 9px;font-size:11px;font-weight:800;cursor:pointer}.slotAttend.selected{background:var(--accentSoft)}.empty{padding:50px 18px;text-align:center;color:var(--muted)}
.mobileMonth{display:none}.miniMonth{padding:10px}.miniGrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.miniDow{font-size:10px;text-align:center;color:var(--muted);padding:4px}.miniDay{min-height:56px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:4px;cursor:pointer;text-align:left}.miniDay.out{opacity:.45}.miniDay.selected{border:2px solid var(--accent);background:var(--accentSoft)}.miniDayNum{font-size:11px;font-weight:850}.miniDots{display:flex;gap:2px;flex-wrap:wrap;margin-top:5px}.miniDot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.miniMore{font-size:9px;color:var(--muted);margin-top:3px}.mobileAgenda{border-top:1px solid var(--line);padding:12px}.mobileAgenda h2{font-size:15px;margin:0 0 10px}
.drawer{position:fixed;inset:0;z-index:20;display:none}.drawer.open{display:block}.drawerBackdrop{position:absolute;inset:0;border:0;background:rgba(0,31,38,.38);width:100%;height:100%}.detailPanel{position:absolute;right:0;top:0;bottom:0;width:min(620px,96vw);background:var(--paper);padding:20px;overflow:auto;box-shadow:-12px 0 40px rgba(0,31,38,.2)}.closeButton{float:right;border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 10px;cursor:pointer}.detailPanel h2{clear:both;font-size:20px;line-height:1.45;margin:42px 0 9px}.detailDateBox{border:1px solid var(--line);background:var(--accentSoft);border-radius:13px;padding:12px;margin:13px 0}.detailDate{font-weight:900;font-size:16px}.commonVenue{font-size:13px;color:var(--muted);margin-top:5px}.detailSlot{border-top:1px solid var(--line);padding:11px 0}.detailSlot:first-of-type{border-top:0}.detailSlotTop{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.detailTimes{font-weight:850;font-size:14px}.detailMeta{font-size:11px;color:var(--muted);margin-top:4px}.attendanceEditor{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.attendanceEditor button{border:1px solid var(--accent);background:#fff;color:var(--accentDark);border-radius:8px;min-height:36px;padding:6px 9px;cursor:pointer;font-size:11px;font-weight:800}.attendanceEditor button.selected{background:var(--accentSoft)}.ticketCounter{display:flex;align-items:center;gap:4px;font-size:11px}.ticketCounter button{width:32px;padding:0}.ticketCounter strong{min-width:42px;text-align:center}.section{border-top:1px solid var(--line);padding:14px 0}.section h3{font-size:14px;margin:0 0 8px}.detailRow{font-size:13px;line-height:1.55;margin:5px 0}.qualityGrid{display:grid;gap:7px}.qualityItem{border:1px solid var(--line);border-radius:10px;padding:9px}.qualityItem strong{display:block;font-size:12px}.qualityItem span{display:block;font-size:11px;color:var(--muted);margin-top:3px}.officialLink{display:inline-flex;border:1px solid var(--accent);color:var(--accentDark);border-radius:10px;padding:9px 12px;text-decoration:none;font-weight:850}.notice{border:1px solid #ead4a7;background:var(--warnBg);border-radius:11px;padding:10px;font-size:12px;color:#684000}.privacyNote{font-size:11px;color:var(--muted)}
@media(max-width:900px){.appShell{padding:12px 10px 38px}.hero{display:block}.datasetBadge{display:inline-flex;margin-top:10px}.controlDeck{position:sticky;top:0;z-index:8;background:rgba(245,252,254,.96);backdrop-filter:blur(10px);padding:8px 0;border-bottom:1px solid var(--line)}.monthGrid,.dow{min-width:1050px}.calendar.desktopMonth{overflow:auto}.weekGrid{min-width:1100px}.calendar.desktopWeek{overflow:auto}}
@media(max-width:720px){body{background:var(--paper)}.appShell{padding:8px 8px calc(28px + env(safe-area-inset-bottom))}.hero h1{font-size:19px}.lead{font-size:12px}.controlDeck{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.viewSwitch{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr)}.viewSwitch button{min-height:44px}.dateNav{grid-column:1/-1}.datePickerLabel{flex:1;min-width:0}.secondaryButton{min-height:44px}.searchBox{grid-column:1/-1;min-width:0}.filterPanel{margin:8px 0;padding:0 10px}.filterChip{min-height:39px}.calendar{border-radius:13px;box-shadow:none}.desktopMonth{display:none}.mobileMonth{display:block}.weekGrid{display:block;min-width:0}.weekCol{min-height:0;border-right:0;border-bottom:1px solid var(--line);padding:11px}.weekCol:last-child{border-bottom:0}.dayTimeline{padding:10px}.typeHeading{position:sticky;top:126px;background:rgba(255,255,255,.96);z-index:3;padding:7px 2px}.slotRow{grid-template-columns:70px 1fr}.slotAttend{grid-column:2;justify-self:start}.detailPanel{top:auto;left:0;right:0;bottom:0;width:100%;max-height:88vh;border-radius:18px 18px 0 0;padding:17px 14px calc(20px + env(safe-area-inset-bottom))}.detailSlotTop{display:block}.attendanceEditor{justify-content:flex-start;margin-top:9px}.officialLink{min-height:44px;align-items:center}.filterHeading span{width:100%}}
