:root{
  --main:#3b6fd4;--main-d:#2c58b0;--accent:#f08a24;
  --bg:#f5f7fb;--card:#fff;--text:#1d2433;--sub:#667085;--line:#dfe4ee;
  --sun:#d6334a;--sat:#2f6fd6;--hol-bg:#fff1f3;--shadow:0 2px 10px rgba(30,50,90,.08);
  --r:14px;
}
@media(prefers-color-scheme:dark){
  :root{--main:#6b97f0;--main-d:#86aaf5;--accent:#ffa94d;--bg:#10141d;--card:#1a202c;--text:#e8ecf4;--sub:#9aa5b8;--line:#2b3446;--sun:#ff7b8e;--sat:#7fb0ff;--hol-bg:#2b1c24;--shadow:0 2px 10px rgba(0,0,0,.4)}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:"Hiragino Sans","Noto Sans JP","Yu Gothic",system-ui,sans-serif;line-height:1.7}
a{color:var(--main);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:960px;margin:0 auto;padding:0 16px}
header.site{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;flex-wrap:wrap}
.brand{font-weight:800;font-size:1.05rem;color:var(--text)}
.brand span{color:var(--accent)}
nav.top a{margin-left:14px;font-size:.92rem;color:var(--sub)}
nav.top a:hover{color:var(--main)}
.hero{padding:44px 0 28px;text-align:center}
.hero h1{font-size:clamp(1.7rem,5vw,2.5rem);line-height:1.3;margin:0 0 12px}
.hero h1 em{font-style:normal;color:var(--main)}
.hero p{color:var(--sub);margin:0 auto 20px;max-width:560px}
.badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.badge{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:.82rem;color:var(--sub)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin:20px 0 40px}
.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);color:var(--text);transition:transform .15s,box-shadow .15s,border-color .15s}
a.card:hover{transform:translateY(-3px);border-color:var(--main);text-decoration:none;box-shadow:0 8px 22px rgba(40,70,140,.16)}
a.card:active{transform:translateY(0) scale(.98)}
.card .ic{font-size:2rem;display:block;margin-bottom:6px}
.card h2{font-size:1.1rem;margin:0 0 4px}
.card p{margin:0;color:var(--sub);font-size:.9rem}
.card.soon{opacity:.6}
.tag{display:inline-block;font-size:.72rem;background:var(--accent);color:#fff;border-radius:6px;padding:0 8px;margin-left:6px;vertical-align:middle}
h2.sec{font-size:1.2rem;margin:32px 0 4px}
.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:18px 0}
.btn,select{font:inherit;font-size:.95rem;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text);padding:8px 14px;cursor:pointer;transition:background .15s,transform .1s,border-color .15s}
.btn:hover,select:hover{border-color:var(--main)}
.btn:active{transform:scale(.96)}
.btn.primary{background:var(--main);border-color:var(--main);color:#fff;font-weight:700}
.btn.primary:hover{background:var(--main-d)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{font:inherit;font-size:.9rem;border:0;background:var(--card);color:var(--text);padding:8px 12px;cursor:pointer}
.seg button.on{background:var(--main);color:#fff;font-weight:700}
.note{color:var(--sub);font-size:.85rem}
/* calendar */
.sheet{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin-bottom:24px}
.sheet h3{margin:0 0 10px;font-size:1.5rem;display:flex;align-items:baseline;gap:10px}
.sheet h3 small{font-size:.9rem;color:var(--sub);font-weight:400}
table.cal{width:100%;border-collapse:collapse;table-layout:fixed}
table.cal th{font-size:.85rem;padding:6px 0;border-bottom:2px solid var(--line)}
table.cal td{border:1px solid var(--line);vertical-align:top;height:84px;padding:4px 6px;font-size:.95rem}
table.cal td.out{background:transparent;border-color:transparent}
td .n{font-weight:700}
td .h{display:block;font-size:.68rem;line-height:1.25;color:var(--sun);margin-top:2px;word-break:break-all}
.sun,th.sun{color:var(--sun)}
.sat,th.sat{color:var(--sat)}
td.hol{background:var(--hol-bg)}
td.hol .n{color:var(--sun)}
.memo{margin-top:12px;border:1px solid var(--line);border-radius:8px;min-height:90px;padding:6px 10px;font-size:.85rem;color:var(--sub)}
.holiday-list{margin:8px 0 0;padding:0;list-style:none;font-size:.85rem;columns:2;color:var(--sub)}
/* year */
.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.mini{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--card)}
.mini h4{margin:0 0 4px;font-size:.95rem}
.mini table{width:100%;border-collapse:collapse;table-layout:fixed;text-align:center;font-size:.78rem}
.mini th{font-weight:600;padding:1px 0;color:var(--sub)}
.mini td{padding:2px 0;height:22px}
.mini td.hol{background:var(--hol-bg);color:var(--sun);font-weight:700;border-radius:4px}
.mini th.sun,.mini td.sun{color:var(--sun)}
.mini th.sat,.mini td.sat{color:var(--sat)}
.prose{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin:24px 0}
.prose h2{font-size:1.05rem;margin:0 0 6px}
.prose p,.prose li{font-size:.92rem;color:var(--sub)}
footer.site{border-top:1px solid var(--line);margin-top:40px;padding:24px 0 40px;color:var(--sub);font-size:.82rem;text-align:center}
footer.site p{margin:4px 0}
@media(max-width:600px){
  nav.top a{margin:0 10px 0 0}
  table.cal td{height:62px;padding:2px 3px;font-size:.85rem}
  td .h{font-size:.58rem}
  .sheet{padding:10px}
  .holiday-list{columns:1}
}
/* forms (household / habit / study) */
.sheet .ttl{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.sheet .ttl h3{margin:0}
.sheet .ttl .nm{font-size:.85rem;color:var(--sub)}
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.form{width:100%;border-collapse:collapse;font-size:.88rem}
table.form th{background:var(--hol-bg);background:color-mix(in srgb,var(--main) 12%,var(--card));border:1px solid var(--line);padding:4px 6px;font-weight:700;white-space:nowrap}
table.form td{border:1px solid var(--line);height:30px;padding:2px 6px}
table.form td.c,table.form th.c{text-align:center}
table.form td.lbl{background:color-mix(in srgb,var(--main) 6%,var(--card));font-weight:600;white-space:nowrap}
table.form tr.we td.lbl{color:var(--sat)}
table.form tr.su td.lbl,table.form tr.ho td.lbl{color:var(--sun)}
table.form td.ck{width:26px;min-width:26px;padding:0;text-align:center;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;transition:background .1s}
table.form td.ck:hover{background:color-mix(in srgb,var(--main) 18%,var(--card))}
table.form td.ck.on{background:var(--main);color:#fff;font-weight:700}
table.form td.ck.off{background:transparent;cursor:default;opacity:.35}
table.form th.sun{color:var(--sun)}table.form th.sat{color:var(--sat)}
table.form td.hl{background:var(--hol-bg)}
.sumbox{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 12px}
.sumbox div{border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:.8rem;color:var(--sub);min-height:46px}
.sumbox b{display:block;color:var(--text);font-size:.85rem}
.goalbox{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}
.goalbox div{border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:.8rem;color:var(--sub);min-height:54px}
.related{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.related a{border:1px solid var(--line);border-radius:999px;padding:3px 14px;font-size:.88rem;background:var(--card)}
.related a:hover{border-color:var(--main);text-decoration:none}
input[type=date],input[type=text]{font:inherit;font-size:.95rem;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text);padding:7px 12px}
@media(max-width:600px){.sumbox{grid-template-columns:1fr 1fr}.goalbox{grid-template-columns:1fr}table.form{font-size:.8rem}}
/* print */
@media print{
  table.form th{background:#e8edf8!important}
  table.form td.lbl{background:#f3f5fa!important}
  table.form td{height:var(--rh,7mm);padding:0 2mm;font-size:9pt}
  table.form td.ck.on{background:#333!important;color:#fff}
  .sumbox div,.goalbox div{border-color:#999}
  .tbl-scroll{overflow:visible}
  :root{--bg:#fff;--card:#fff;--text:#000;--sub:#444;--line:#999;--sun:#c00;--sat:#05a;--hol-bg:#fde8ea;--shadow:none}
  body{background:#fff}
  header.site,footer.site .no-print,.no-print,.hero,.prose{display:none!important}
  footer.site{border:0;margin:0;padding:4px 0;font-size:8pt}
  .wrap{max-width:none;padding:0}
  .sheet{border:0;box-shadow:none;padding:0;margin:0;page-break-after:always;break-after:page}
  .sheet:last-of-type{page-break-after:auto;break-after:auto}
  table.cal td{height:27mm}
  .mini{break-inside:avoid}
  * {-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
