:root{
  --bg:#f3f6fb;
  --card:#ffffff;
  --ink:#1f2937;
  --muted:#64748b;
  --line:#d9e2ef;
  --line-strong:#c4d3e7;
  --brand:#0b69d1;
  --brand-dark:#0a56ac;
  --shadow:0 8px 22px rgba(18,37,63,.1);
  --img-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='%23ffffff' fill-opacity='.16'%3E%3Ccircle cx='12' cy='14' r='1'/%3E%3Ccircle cx='46' cy='30' r='1'/%3E%3Ccircle cx='75' cy='18' r='1'/%3E%3Ccircle cx='112' cy='26' r='1'/%3E%3Ccircle cx='145' cy='14' r='1'/%3E%3Ccircle cx='23' cy='64' r='1'/%3E%3Ccircle cx='57' cy='78' r='1'/%3E%3Ccircle cx='93' cy='66' r='1'/%3E%3Ccircle cx='126' cy='80' r='1'/%3E%3Ccircle cx='18' cy='118' r='1'/%3E%3Ccircle cx='63' cy='132' r='1'/%3E%3Ccircle cx='101' cy='122' r='1'/%3E%3Ccircle cx='141' cy='136' r='1'/%3E%3C/g%3E%3C/svg%3E");
}

*{box-sizing:border-box}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(1100px 360px at 10% -5%, #dcecff 0%, transparent 58%),
    radial-gradient(900px 320px at 90% -5%, #e7f7f4 0%, transparent 55%),
    var(--bg);
}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}

.container{max-width:1200px;margin:0 auto;padding:16px}
.nav a{margin-right:12px;font-weight:700}
.nav a.active{text-decoration:underline;text-underline-offset:3px}

form,table{
  background:
    var(--img-noise) center/220px 220px repeat,
    #fff;
  border-radius:14px;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
}
form{padding:16px}
label{display:block;margin:10px 0 6px;font-weight:700}
input,select,textarea,button{font:inherit}
input,select,textarea{
  width:100%;
  padding:10px 12px;
  border:1px solid var(--line-strong);
  border-radius:10px;
  background:#fff;
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:#79aff2;
  box-shadow:0 0 0 3px rgba(11,105,209,.16);
}
textarea{min-height:90px}
button{
  padding:10px 16px;
  border:1px solid #2c75cf;
  border-radius:10px;
  background:linear-gradient(180deg,#3384e7,#0b69d1);
  color:#fff;
  font-weight:700;
  cursor:pointer;
}
button:hover{filter:brightness(.97)}
.btn2{background:linear-gradient(180deg,#818b9a,#667085);border-color:#667085}
.btn2:hover{filter:brightness(.97)}

table{width:100%;border-collapse:collapse;margin-top:12px}
th,td{border:1px solid #dde6f2;padding:8px;vertical-align:top}
th{background:#f3f8ff}

.alert{padding:10px 14px;border-radius:10px;margin:12px 0}
.err{background:#ffe9e9;color:#8f1d1d}
.ok{background:#e7f8ef;color:#12663d}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;background:#e5eefb}
.badge.ok{background:#16a34a;color:#fff}
.badge.ng{background:#dc2626;color:#fff}

.auth-card{max-width:430px;margin:20px auto}
.auth-card form{box-shadow:0 12px 28px rgba(0,0,0,.12)}

.site-mascot{
  position:fixed;
  z-index:30;
  width:92px;
  height:92px;
  pointer-events:none;
  opacity:.95;
}
.site-mascot.is-br{right:12px;bottom:10px}
.site-mascot.is-bl{left:12px;bottom:10px}
.site-mascot.is-tr{right:12px;top:20px}
.site-mascot img{
  width:100%;
  height:100%;
  object-fit:contain;
  filter:drop-shadow(0 8px 12px rgba(15,23,42,.24));
}

.admin-hero{
  margin:0 0 18px 0;
  padding:18px 20px;
  border:1px solid var(--line);
  border-radius:18px;
  background:
    linear-gradient(135deg, rgba(11,105,209,.08), rgba(22,163,74,.06)),
    #fff;
  box-shadow:var(--shadow);
}
.admin-hero-lead{margin:0 0 8px 0;font-size:18px;font-weight:700}
.admin-hero-meta{margin:0;color:var(--muted)}
.admin-menu-sections{display:grid;gap:14px}
.admin-menu-section{
  border:1px solid var(--line);
  border-radius:18px;
  background:
    var(--img-noise) center/220px 220px repeat,
    #fff;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.admin-menu-section summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:20px 22px;
  background:
    linear-gradient(135deg, rgba(11,105,209,.16), rgba(11,105,209,.04)),
    linear-gradient(180deg, #ffffff, #eef5fd);
  border-bottom:1px solid #d4e1f2;
  transition:background .18s ease, transform .18s ease, box-shadow .18s ease;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
.admin-menu-section summary::-webkit-details-marker{display:none}
.admin-menu-section summary span{font-size:24px;font-weight:900;letter-spacing:.02em}
.admin-menu-section summary small{color:var(--muted);font-size:14px;font-weight:700}
.admin-menu-section summary::after{
  content:"開く";
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:74px;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid #9dbce3;
  background:linear-gradient(180deg, #ffffff, #edf4fc);
  color:#2b4b72;
  font-size:13px;
  font-weight:800;
}
.admin-menu-section[open] summary::after{
  content:"閉じる";
}
.admin-menu-section summary:hover{
  background:
    linear-gradient(135deg, rgba(11,105,209,.2), rgba(11,105,209,.06)),
    linear-gradient(180deg, #ffffff, #e9f2fc);
}
.admin-menu-section summary:active{
  transform:translateY(1px);
}
.admin-menu-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:14px;
  padding:16px;
}
.admin-menu-card{
  display:block;
  padding:16px;
  border:1px solid var(--line);
  border-radius:14px;
  background:linear-gradient(180deg, #ffffff, #f9fbfe);
  box-shadow:0 6px 16px rgba(18,37,63,.08);
}
.admin-menu-card:hover{
  text-decoration:none;
  border-color:#9cc0ed;
  transform:translateY(-1px);
}
.admin-menu-title{
  display:block;
  margin:0 0 6px 0;
  color:var(--ink);
  font-weight:800;
}
.admin-menu-desc{
  display:block;
  color:var(--muted);
  line-height:1.5;
  font-size:14px;
}
.attendance-quick-grid{
  display:grid;
  gap:10px;
  margin-top:12px;
}
.attendance-quick-row{
  display:grid;
  grid-template-columns:minmax(120px, 180px) minmax(180px, 1fr);
  gap:12px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(180deg, #ffffff, #f8fbff);
}
.attendance-quick-field{display:block}
.attendance-quick-label{
  display:block;
  margin:0 0 6px 0;
  font-size:13px;
  font-weight:800;
}
.attendance-quick-name{
  background:#f7f9fc;
  color:var(--muted);
}

@media (max-width: 780px){
  .container{padding:12px}
  .nav{
    display:flex;
    gap:10px;
    overflow-x:auto;
    padding-bottom:4px;
    scrollbar-width:none;
  }
  .nav::-webkit-scrollbar{display:none}
  .nav a{white-space:nowrap}
  input,select,textarea,button{font-size:16px}
  button{min-height:44px}
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px}
  th,td{white-space:nowrap}
  .auth-card{margin:10px auto}
  .auth-card button{width:100%}
  .site-mascot{
    width:72px;
    height:72px;
    opacity:.88;
  }
  .admin-menu-section summary{
    display:block;
    padding:14px 16px;
  }
  .admin-menu-section summary small{
    display:block;
    margin-top:4px;
  }
  .admin-menu-grid{
    grid-template-columns:1fr;
    padding:12px;
  }
  .attendance-quick-row{
    grid-template-columns:1fr;
  }
  .site-mascot.is-br{right:8px;bottom:8px}
  .site-mascot.is-bl{left:8px;bottom:8px}
  .site-mascot.is-tr{right:8px;top:10px}
}

@media print{
  .site-mascot{display:none!important}
}
