:root{--navy:#071426;--navy2:#102741;--gold:#c79a3b;--gold2:#e2bd67;--bg:#f4f3ef;--ink:#17202b}
*{box-sizing:border-box}html,body{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;background:var(--bg);color:var(--ink)}
a{text-decoration:none;color:inherit}
.header{background:var(--navy);color:#fff;border-bottom:1px solid rgba(199,154,59,.4)}
.nav{max-width:1080px;height:70px;margin:auto;padding:0 18px;display:flex;align-items:center}
.brand{font-family:serif;font-weight:700;letter-spacing:.06em}
.home{margin-left:auto;border:1px solid rgba(199,154,59,.55);padding:9px 13px;border-radius:6px;font-size:12px;color:var(--gold2);font-weight:700}
.hero{background:linear-gradient(135deg,var(--navy),#162d47);color:#fff}
.hero>div{max-width:1080px;margin:auto;padding:38px 18px 34px}
.eyebrow{font-size:11px;letter-spacing:.24em;color:var(--gold2)}
h1{font-family:serif;font-weight:500;letter-spacing:.08em;margin:8px 0 6px;font-size:34px}
.crumb{font-size:11px;color:#c9d0d9}
.wrap{max-width:900px;margin:auto;padding:28px 16px 60px}
.lead{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid #ddd9d0;border-left:4px solid var(--gold);padding:16px 18px;line-height:1.75;font-size:13px;margin-bottom:20px;box-shadow:0 5px 18px rgba(7,20,38,.04)}
.lead strong{flex:0 0 auto;color:var(--navy);font-family:serif;font-size:17px}
.lead span{color:#69737f}
.grid{display:grid;grid-template-columns:minmax(0,760px);justify-content:center;gap:18px}
.latest-update{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:8px 12px;padding:16px 20px;border:2px solid #b8892f;border-radius:12px;background:#fffdfa;color:var(--navy);box-shadow:0 8px 20px rgba(7,20,38,.06);cursor:pointer;-webkit-tap-highlight-color:transparent}
.latest-update:focus-visible{outline:3px solid rgba(199,154,59,.35);outline-offset:3px}
.latest-update[hidden]{display:none}
.latest-update-heading{white-space:nowrap}
.latest-update-kicker{display:none}
.latest-update-title{color:#a97922;font-size:12px;font-weight:900;letter-spacing:.06em}
.latest-update-content{min-width:0;display:contents;font-size:13px;line-height:1.65}
.latest-update-date{white-space:nowrap;color:#7f8287;font-size:12px;font-weight:700}
.latest-update-category{white-space:nowrap;color:#a97922;font-size:12px;font-weight:900}
.latest-update-message{grid-column:1/-1;min-width:0;color:var(--navy);font-size:14px;font-weight:700;overflow-wrap:anywhere}
.latest-update-hint{grid-column:1/-1;justify-self:end;color:#947126;font-size:10px;font-weight:800;line-height:1}
.update-history{margin-top:-8px;padding:5px 18px 2px;border:1px solid #ded7c6;border-top:0;border-radius:0 0 12px 12px;background:#fff;box-shadow:0 10px 24px rgba(7,20,38,.06)}
.update-history[hidden]{display:none}
.update-history-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0 11px;border-bottom:1px solid #e7e3da;color:var(--navy)}
.update-history-head strong{font-size:14px}.update-history-head span{color:#8a7350;font-size:10px;font-weight:800}
.update-history-list{display:grid}
.update-history-item{position:relative;display:grid;grid-template-columns:auto auto 1fr;gap:5px 9px;padding:12px 28px 12px 0;border-bottom:1px solid #ece9e2;border-radius:7px;transition:background-color .18s ease,transform .18s ease}
.update-history-item:hover{background:#fff9ea}
.update-history-item:active{transform:scale(.995)}
.update-history-item:focus-visible{outline:3px solid rgba(199,154,59,.32);outline-offset:2px}
.update-history-item:last-child{border-bottom:0}
.update-history-date{white-space:nowrap;color:#7f8287;font-size:11px;font-weight:700}
.update-history-category{white-space:nowrap;color:#a97922;font-size:11px;font-weight:900}
.update-history-message{grid-column:1/-1;color:var(--navy);font-size:12px;font-weight:700;line-height:1.6;overflow-wrap:anywhere}
.update-history-arrow{position:absolute;right:5px;top:50%;color:#a97922;font-size:25px;font-weight:500;line-height:1;transform:translateY(-50%)}
.history-focus-target{animation:historyTargetFlash 2.5s ease}
@keyframes historyTargetFlash{0%,30%{border-color:#c79a3b;box-shadow:0 0 0 5px rgba(199,154,59,.23),0 10px 28px rgba(7,20,38,.06)}100%{border-color:#d8dce1;box-shadow:0 10px 28px rgba(7,20,38,.06)}}
@media(max-width:600px){.latest-update{gap:6px 10px;padding:14px 16px}.latest-update-message{font-size:13px}.update-history{padding:5px 14px 2px}}
.card{position:relative;overflow:hidden;background:#fff;border:1px solid #d8dce1;border-radius:12px;padding:26px 22px 22px;box-shadow:0 10px 28px rgba(7,20,38,.06)}
.card::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,var(--gold),var(--gold2))}
.card-kicker{font-size:10px;letter-spacing:.18em;color:#a27927;font-weight:800;margin-bottom:9px}
.card h2{font-family:serif;margin:0 0 10px;font-size:25px;color:var(--navy)}
.card p{font-size:13px;line-height:1.8;color:#69737f;min-height:70px;margin:0}
.attendance-card{display:block;background:linear-gradient(180deg,#fffdfa 0%,#fbf7ed 100%);border-color:#d8c79f}
.attendance-card.disabled{background:#ececea;border-color:#d3d3d0;box-shadow:none;filter:grayscale(1);opacity:.72}.attendance-card.disabled::before{background:#aaa}.attendance-card.disabled .card-kicker,.attendance-card.disabled h2,.attendance-card.disabled p,.attendance-card.disabled .attendance-note{color:#777}
.densuke-card{background:linear-gradient(180deg,#fffdfa 0%,#fbf7ed 100%);border-color:#d8c79f}
.densuke-card .card-kicker{color:var(--gold)}
.tournament-card{background:linear-gradient(180deg,#fff 0%,#fbfbfa 100%)}
.tournament-list{display:grid;gap:12px;margin-top:18px}
.tournament-item{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid #e1ded6;border-radius:10px;background:#faf9f6}
.tournament-info{min-width:0;flex:1}.tournament-grade{display:inline-flex;align-items:center;margin-bottom:8px;padding:5px 12px;border-radius:999px;background:var(--gold);color:#fff;font-size:13px;font-weight:900;line-height:1.2}.tournament-title{font-weight:800;color:var(--navy);line-height:1.5}.tournament-meta{margin-top:3px;font-size:11px;color:#7b8490;overflow-wrap:anywhere}
.tournament-open{flex:0 0 auto;padding:10px 14px;border:1px solid var(--gold);border-radius:8px;background:var(--gold);color:#fff;font-size:12px;font-weight:800}
.tournament-empty{margin-top:16px;padding:16px;border:1px dashed #d6d2c8;border-radius:10px;color:#7b8490;font-size:13px;text-align:center}
.rules-card{background:linear-gradient(180deg,#fffdfa 0%,#fbf7ed 100%);border-color:#d8c79f}
.duty-roster-card{background:linear-gradient(180deg,#fffdfa 0%,#fbf7ed 100%);border-color:#d8c79f}
.duty-roster-list{display:grid;gap:16px;margin-top:16px}
.duty-roster-image{display:block;width:100%;height:auto;border:1px solid #d8dce1;border-radius:10px;background:#fff}
.duty-roster-note{margin-top:14px!important;min-height:0!important;color:#69737f!important;font-size:12px!important;line-height:1.7!important}
.duty-roster-loading{padding:14px;border:1px dashed #d6d2c8;border-radius:10px;color:#7b8490;font-size:13px;text-align:center}
.duty-change-section{margin-top:16px;padding:13px;border:1px solid #dfc982;border-radius:10px;background:#fffaf0}
.duty-change-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px;color:#071426}.duty-change-heading strong{font-size:14px}.duty-change-heading span{color:#857348;font-size:10px;font-weight:700}
.duty-change-list{display:grid;gap:7px}.duty-change-item{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:7px;padding:8px 9px;border-left:4px solid #b74751;border-radius:0 7px 7px 0;background:#fff;color:#17202b;font-size:12px}.duty-change-date{font-weight:900;color:#071426}.duty-change-grade{padding:2px 5px;border-radius:999px;background:#e6edf4;color:#30455c;font-size:9px;font-weight:800}.duty-change-names{min-width:0;overflow-wrap:anywhere}.duty-change-before{color:#858b92;text-decoration:line-through}.duty-change-arrow{margin:0 4px;color:#b74751;font-weight:900}.duty-change-after{color:#8d2830;font-weight:900}
.rules-text{white-space:pre-wrap;line-height:1.9;font-size:14px;color:#46515e}
.rules-text.empty{padding:14px;border:1px dashed #d6d2c8;border-radius:10px;color:#7b8490;text-align:center}
.rules-pdf-list{display:grid;gap:12px;margin-top:18px}
.rules-pdf-item{padding:14px;border:1px solid #e1ded6;border-radius:10px;background:#faf9f6}
.rules-pdf-name{font-weight:800;color:var(--navy);line-height:1.5;overflow-wrap:anywhere}
.rules-pdf-open{display:block;margin-top:10px;padding:11px 14px;border:1px solid var(--gold);border-radius:8px;background:var(--gold);color:#fff;text-align:center;font-size:12px;font-weight:800}
.board-meeting-card{background:linear-gradient(180deg,#fffdfa 0%,#fbf7ed 100%);border-color:#d8c79f}
.board-meeting-section{margin-top:22px;padding-top:20px;border-top:1px solid #e4dcc9}
.board-meeting-section:first-of-type{margin-top:16px}
.board-meeting-heading{margin:0 0 11px;font-size:16px;color:var(--navy);font-weight:900}
.board-meeting-help{margin:0 0 12px!important;min-height:0!important;font-size:11px!important;line-height:1.65!important}
.board-meeting-help span{display:block}
.meeting-admin-panel[hidden],.meeting-admin-open[hidden]{display:none!important}
.meeting-action.meeting-admin-open{width:100%;border-color:#d8d9dc;background:#e5e3de;color:#8a8f96}
.meeting-admin-panel{display:grid;gap:12px;margin-top:10px}
.meeting-upload{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center}
.meeting-upload input{min-width:0;width:100%;padding:10px;border:1px solid #e1e3e6;border-radius:8px;background:#f7f7f5;color:#858c95;font-size:13px}
.meeting-action{min-height:43px;padding:10px 16px;border:1px solid var(--gold);border-radius:8px;background:var(--gold);color:#fff;font:inherit;font-size:13px;font-weight:900;cursor:pointer}
.meeting-upload .meeting-action{border-color:var(--gold);background:var(--gold);color:#fff}
.meeting-action:disabled{opacity:.55;cursor:wait}
.meeting-upload .meeting-action-cancel{border-color:#dfe1e4;background:#fafafa;color:#9aa1a8}
.meeting-document-list{display:grid;gap:9px;margin-top:13px}
.meeting-document-library-link{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:12px 16px;border:1px solid var(--navy);border-radius:8px;background:var(--navy);color:var(--gold2);font:inherit;font-size:13px;font-weight:900;text-align:center;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.meeting-document-library-link:active{transform:translateY(1px)}
.meeting-document-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px;align-items:center;padding:10px;border:1px solid #e1ded6;border-radius:9px;background:#fff}
.meeting-document-name{min-width:0;overflow-wrap:anywhere;font-size:12px;font-weight:800;color:var(--navy)}
.meeting-document-open,.meeting-document-delete{padding:8px 10px;border-radius:7px;font-size:11px;font-weight:800;text-align:center;cursor:pointer}
.meeting-document-open{border:1px solid var(--gold);background:var(--gold);color:#fff}
.meeting-document-delete{border:1px solid #d6bcbc;background:#fff;color:#9b2727}
.meeting-admin-document-list{display:grid;gap:8px}
.meeting-admin-document-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid #e1ded6;border-radius:9px;background:#fff}
.meeting-admin-document-name{min-width:0;overflow-wrap:anywhere;font-size:12px;font-weight:800;color:var(--navy)}
.meeting-admin-document-actions{display:flex;align-items:center;gap:6px}
.meeting-admin-document-rename{min-height:38px;padding:8px 10px;border:1px solid var(--gold);border-radius:7px;background:#fff;color:#9a7123;font:inherit;font-size:11px;font-weight:900;cursor:pointer}
.meeting-admin-document-row.is-renaming{grid-template-columns:minmax(0,1fr) auto}
.meeting-admin-document-name:has(.meeting-admin-document-name-input){display:flex;align-items:center;gap:3px}
.meeting-admin-document-name-input{width:100%;min-width:0;padding:9px 10px;border:1px solid var(--gold);border-radius:7px;background:#fff;color:var(--navy);font:inherit;font-size:12px;font-weight:800}
.meeting-admin-document-extension{flex:0 0 auto;color:#6f7882;font-size:11px;font-weight:800}
.meeting-admin-document-save,.meeting-admin-document-cancel{min-height:38px;padding:8px 10px;border-radius:7px;font:inherit;font-size:11px;font-weight:900;cursor:pointer}
.meeting-admin-document-save{border:1px solid var(--gold);background:var(--gold);color:#fff}
.meeting-admin-document-cancel{border:1px solid #c9c9c9;background:#fff;color:#5f6872}
.meeting-admin-document-delete{min-height:38px;padding:8px 12px;border:1px solid #d6bcbc;border-radius:7px;background:#fff;color:#9b2727;font:inherit;font-size:11px;font-weight:900;cursor:pointer}
@media(max-width:520px){.meeting-admin-document-row.is-renaming{grid-template-columns:1fr}.meeting-admin-document-row.is-renaming .meeting-admin-document-actions{justify-content:flex-end}}
.meeting-empty{padding:13px;border:1px dashed #d6d2c8;border-radius:9px;color:#7b8490;font-size:12px;text-align:center}
.meeting-calendar-toolbar{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:8px;margin-bottom:12px}
.meeting-calendar-nav{width:42px;height:42px;border:1px solid #d8dce1;border-radius:50%;background:#fff;color:var(--navy);font-size:24px;cursor:pointer}
.meeting-calendar-title{text-align:center;color:var(--navy);font-size:19px;font-weight:900}
.meeting-calendar-week,.meeting-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #dfe3e8}
.meeting-calendar-week{border-top:1px solid #dfe3e8}
.meeting-calendar-week div{padding:7px 1px;border-right:1px solid #dfe3e8;border-bottom:1px solid #dfe3e8;background:#f6f7f9;text-align:center;font-size:10px;font-weight:800}
.meeting-calendar-week .sun{color:#b82929}.meeting-calendar-week .sat{color:#245da8}
.meeting-calendar-day{min-width:0;min-height:65px;padding:5px 3px;border:0;border-right:1px solid #dfe3e8;border-bottom:1px solid #dfe3e8;background:#fff;color:var(--navy);text-align:left;overflow:hidden;cursor:pointer}
.meeting-calendar-day.muted{background:#f5f5f2;color:#9da2a7}.meeting-calendar-day.today{box-shadow:inset 0 0 0 2px var(--gold)}
.meeting-calendar-day.sun .meeting-day-number,.meeting-calendar-day.holiday .meeting-day-number{color:#b82929}.meeting-calendar-day.sat .meeting-day-number{color:#245da8}
.meeting-day-number{display:block;font-size:11px;font-weight:900}
.meeting-day-event{display:block;margin-top:4px;padding:3px 4px;border-radius:4px;background:var(--navy);color:#fff;font-size:8px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meeting-calendar-note{margin-top:9px!important;min-height:0!important;text-align:right;font-size:10px!important}
.meeting-calendar-note span{display:block}
.meeting-editor{display:none;position:fixed;inset:0;z-index:12000;padding:14px;background:rgba(3,12,24,.74);align-items:center;justify-content:center}
.meeting-editor.show{display:flex}
.meeting-editor-box{position:relative;width:min(520px,100%);max-height:90vh;overflow:auto;padding:22px 17px;border-radius:12px;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.meeting-editor-close{position:absolute;top:10px;right:10px;width:38px;height:38px;border:0;border-radius:50%;background:#eef0f3;font-size:23px;cursor:pointer}
.meeting-editor-date{margin:0 44px 14px 0;color:var(--navy);font-size:20px}
.meeting-day-list{display:grid;gap:8px;margin-bottom:16px}
.meeting-day-list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px;border:1px solid #e0e3e7;border-radius:8px;background:#f8f9fa}
.meeting-day-list-row strong,.meeting-day-list-row span{display:block;overflow-wrap:anywhere}.meeting-day-list-row span{margin-top:3px;color:#69737f;font-size:11px;line-height:1.5}
.meeting-day-list-actions{display:flex;min-width:58px;flex-direction:column;align-items:stretch;justify-content:center;gap:6px}
.meeting-day-list-row button{align-self:center;padding:8px;border-radius:7px;background:#fff;font-weight:800;cursor:pointer}
.meeting-day-list-actions button{width:100%;align-self:stretch}
.meeting-event-edit{border:1px solid #c79a3b;color:#7b5b16}
.meeting-event-delete{border:1px solid #d6bcbc;color:#9b2727}
.meeting-add-event{width:100%;min-height:46px;margin-top:2px;border:1px solid var(--gold);border-radius:8px;background:var(--gold);color:#fff;font:inherit;font-weight:900;cursor:pointer}
.meeting-form{padding-top:14px;border-top:1px solid #e0e3e7}
.meeting-form[hidden]{display:none}
.meeting-form label{display:block;margin:0 0 11px;color:#263344;font-size:12px;font-weight:800}
.meeting-form input,.meeting-form textarea{display:block;width:100%;margin-top:5px;padding:11px;border:1px solid #cfd5dc;border-radius:7px;background:#fff;color:#172233;font:inherit;font-size:16px}
.meeting-form textarea{min-height:76px;resize:vertical}
.meeting-grade-field{margin:0 0 11px;padding:0;border:0}
.meeting-grade-field legend{margin-bottom:7px;color:#263344;font-size:12px;font-weight:800}
.meeting-grade-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.meeting-form .meeting-grade-option{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;margin:0;padding:10px 5px;border:1px solid #cfd5dc;border-radius:7px;background:#fff;color:#263344;font-size:13px;font-weight:800;cursor:pointer}
.meeting-form .meeting-grade-option input{display:block;width:17px;height:17px;flex:0 0 auto;margin:0;padding:0;accent-color:var(--grade-accent,#176cd3)}
.meeting-form .meeting-grade-option:has(input:checked){border-color:var(--grade-accent,#176cd3);background:var(--grade-bg,#eef5ff);color:var(--grade-text,#124e96)}
.meeting-form-actions{display:grid;grid-template-columns:1fr;gap:8px}
.meeting-form-actions.editing{grid-template-columns:1fr 1.35fr}
.meeting-form-save,.meeting-form-cancel{width:100%;min-height:46px;border-radius:8px;font:inherit;font-weight:900;cursor:pointer}
.meeting-form-save{border:1px solid var(--navy);background:var(--navy);color:#fff}
.meeting-form-cancel{border:1px solid #9aa5b1;background:#fff;color:var(--navy)}
@media(max-width:520px){.meeting-upload{grid-template-columns:1fr}.meeting-action{width:100%}.meeting-document-row{grid-template-columns:minmax(0,1fr) auto}.meeting-document-name{grid-column:1/-1}.meeting-calendar-day{min-height:62px}}
.btn{display:block;text-align:center;background:var(--navy);color:var(--gold2);border:1px solid var(--gold);padding:14px 16px;border-radius:8px;font-weight:800;margin-top:18px;transition:.18s ease}
.btn:active{transform:translateY(1px)}
.btn.gold{background:var(--gold);color:#fff}.btn.densuke-btn{background:var(--gold);color:#fff;border-color:var(--gold)}
.btn.gold.disabled{background:#e3e3e0;border-color:#d3d3cf;color:#a2a6aa;pointer-events:none;cursor:not-allowed}
.btn.gold.disabled.admin-gated{pointer-events:auto;cursor:pointer}
.note{font-size:11px;color:#7b8490;margin-top:10px}
.attendance-note{color:#9298a0}
.footer{background:var(--navy);color:#9aa5b1;text-align:center;padding:28px 15px;font-size:11px}
@media(max-width:650px){.grid{grid-template-columns:1fr;gap:14px}.card p{min-height:0}.lead{display:block}.lead strong{display:block;margin-bottom:5px}h1{font-size:29px}.card{padding:24px 19px 20px}.card h2{font-size:24px}.tournament-item{align-items:stretch;flex-direction:column}.tournament-open{width:100%;text-align:center}}

.densuke-subtitle{
  font-size:14px;
  font-family:inherit;
  font-weight:700;
  letter-spacing:0;
  white-space:nowrap;
}
@media(max-width:380px){
  .densuke-subtitle{font-size:13px}
}
