:root{--bg:#f7f8fa;--card:#fff;--border:#e2e5ea;--text:#1c2430;--text-muted:#6b7280;--accent:#2f5496;--accent-soft:#eaf0fb;--danger:#c0392b;--ok:#1f8a4c;--warn:#b8860b}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Segoe UI,Hiragino Kaku Gothic ProN,Meiryo,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.nav{background:var(--card);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:12px 24px;display:flex;overflow-x:auto}.nav .brand{color:var(--accent);white-space:nowrap;flex-shrink:0;font-size:18px;font-weight:700}.nav .brand small{color:var(--text-muted);letter-spacing:.05em;font-size:10px;font-weight:500;display:block}.nav a{color:var(--text);white-space:nowrap;flex-shrink:0;font-weight:500}.nav a.active{color:var(--accent)}.nav .nav-user{white-space:nowrap;color:var(--text-muted);flex-shrink:0;align-items:center;gap:12px;margin-left:auto;font-size:13px;display:flex}.container{max-width:1200px;margin:0 auto;padding:24px}.site-footer{text-align:center;color:var(--text-muted);padding:16px 8px;font-size:11px}.site-footer a{color:inherit}@media (max-width:640px){.nav{gap:16px;padding:10px 14px}.container{padding:14px}}h1{margin:0 0 16px;font-size:20px}h2{margin:24px 0 10px;font-size:16px}h3{margin:0 0 8px;font-size:14px}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;margin-bottom:20px;padding:20px}.card.compact{padding:14px 16px}table{border-collapse:collapse;width:100%}th,td{border:1px solid var(--border);text-align:center;padding:6px 8px;font-size:13px}th{white-space:nowrap;background:#f0f2f5;font-weight:600}td.name-cell,th.name-cell{text-align:left;white-space:nowrap;font-weight:600}td.left{text-align:left}.grid-scroll{border:1px solid var(--border);border-radius:6px;overflow-x:auto}.grid-scroll table{width:max-content;min-width:100%}.grid-scroll th.name-cell,.grid-scroll td.name-cell{background:var(--card);z-index:1;position:sticky;left:0}.grid-scroll th.name-cell{background:#f0f2f5}.grid-scroll tr:hover td,.grid-scroll tr:hover td.name-cell{background:#fafbfd}.btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500;line-height:1.4;display:inline-block}.btn:hover{background:#24406f;text-decoration:none}.btn:disabled{opacity:.6;cursor:default}.btn.secondary{color:var(--accent);border:1px solid var(--accent);background:#fff}.btn.danger{color:var(--danger);border:1px solid var(--danger);background:#fff}.btn.small{padding:4px 10px;font-size:12px}.btn-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.form-row{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:12px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--text-muted);font-size:12px}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-family:inherit;font-size:14px}.field .hint{color:var(--text-muted);font-size:11px}.field.w-sm input{width:110px}.field.w-md input{width:180px}.field.w-lg input{width:260px}.notice{border-radius:6px;margin-bottom:10px;padding:10px 14px;font-size:13px}.notice.warn{color:#7a5b00;background:#fff7e6;border:1px solid #f0d78c}.notice.ok{color:var(--ok);background:#eafaf0;border:1px solid #b6e6c8}.notice.danger{color:var(--danger);background:#fdeeee;border:1px solid #f0b8b3}.exp{white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:12px;display:inline-block}.exp.ok{color:var(--text)}.exp.warn{color:#7a5b00;background:#fff7e6;font-weight:600}.exp.danger{color:var(--danger);background:#fdeeee;font-weight:700}.exp.expired{color:#555;background:#e9ebef;text-decoration:line-through}.exp.none{color:var(--text-muted)}.tag{border-radius:10px;margin:2px;padding:2px 8px;font-size:12px;display:inline-block}.tag.on{background:var(--accent-soft);color:var(--accent)}.tag.off{color:var(--text-muted);background:#f0f2f5}.filter-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.filter-bar .seg{border:1px solid var(--accent);border-radius:6px;display:inline-flex;overflow:hidden}.filter-bar .seg a{color:var(--accent);padding:6px 12px;font-size:13px}.filter-bar .seg a.active{background:var(--accent);color:#fff}.filter-bar .seg a:hover{text-decoration:none}.cert-block{border:1px solid var(--border);background:var(--card);border-radius:8px;margin-bottom:12px;padding:14px 16px}.cert-block .cert-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.cert-block .cert-head h3{margin:0}.cert-block .cert-head .meta{color:var(--text-muted);font-size:12px}.cert-block .cert-head .spacer{flex:1}.cert-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 16px;display:grid}.cert-grid .kv label{color:var(--text-muted);font-size:11px;display:block}.cert-grid .kv div{font-size:14px}.cert-grid .kv .empty{color:#bbb}.history{color:var(--text-muted);margin-top:8px;font-size:12px}.history summary{cursor:pointer}.history table td,.history table th{padding:3px 6px;font-size:12px}.check-ok{color:var(--ok);font-size:11px}.check-ng{color:var(--danger);font-size:11px;font-weight:600}.modal-backdrop{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:var(--card);border-radius:8px;min-width:280px;max-width:520px;padding:24px 28px;box-shadow:0 8px 30px #00000040}.modal-box p{margin:0 0 18px;font-size:15px}.modal-actions{justify-content:flex-end;gap:10px;display:flex}@media print{.nav,.site-footer,.no-print{display:none!important}.container{max-width:none;padding:0}.card{border:none;padding:0}}.dropzone{border:2px dashed var(--accent);text-align:center;background:var(--accent-soft);cursor:pointer;border-radius:8px;padding:28px 16px}.dropzone:hover{background:#dfe8f9}.seg-btn{color:var(--accent);cursor:pointer;background:#fff;border:none;padding:6px 12px;font-size:13px}.seg-btn.active{background:var(--accent);color:#fff}.muted{color:var(--text-muted)}.center{text-align:center}.container.narrow{max-width:820px}.nav .nav-email{font-size:12px}.nav .link-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.center-page{justify-content:center;padding-top:48px;display:flex}.center-box{width:100%;max-width:420px}.brand-lg{text-align:center;color:var(--accent);letter-spacing:.04em;margin-bottom:4px;font-size:30px;font-weight:800}.input-lg{width:100%;padding:10px 12px!important;font-size:18px!important}.btn.btn-lg{padding:12px 20px;font-size:16px}.home-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:20px;display:grid}.tile{background:var(--card);border:1px solid var(--border);min-height:96px;color:var(--text);text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;gap:4px;padding:14px 16px;font-family:inherit;font-size:15px;font-weight:600;text-decoration:none;display:flex;box-shadow:0 1px 2px #0000000a}.tile:hover{border-color:var(--accent);text-decoration:none}.tile:active{background:var(--accent-soft)}.tile.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.tile.tile-muted{color:var(--text-muted);font-weight:500}.tile.tile-alt{border-style:dashed}.tile .tile-label{align-items:center;gap:8px;font-size:17px;display:flex}.tile .tile-desc{color:var(--text-muted);font-size:12px;font-weight:400}.tile .tile-count{color:var(--accent);font-size:13px;font-weight:500}.home-tiles .tile{min-height:110px}.badge{background:var(--danger);color:#fff;text-align:center;border-radius:11px;min-width:22px;padding:1px 7px;font-size:12px;font-weight:700;display:inline-block}.home-cols{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:800px){.home-cols{grid-template-columns:1fr}}.list-plain{margin:0;padding:0;list-style:none}.list-card{padding:4px 8px}.list-link{border-bottom:1px solid var(--border);color:var(--text);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:14px 10px;font-size:16px;text-decoration:none;display:flex}.list-plain li:last-child .list-link{border-bottom:none}.list-link:hover{background:#fafbfd;text-decoration:none}.list-link .list-date{color:var(--text-muted);white-space:nowrap;font-size:13px}.list-link .list-title{font-weight:600}.article-body{white-space:pre-wrap;margin-top:12px;font-size:16px;line-height:1.8}.article-img{border:1px solid var(--border);border-radius:8px;max-width:100%;height:auto}.seg-row{border:1px solid var(--accent);border-radius:6px;display:inline-flex;overflow:hidden}.check-inline{cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.row-hidden td{color:var(--text-muted);background:#fafafa}.uploader{display:inline-block}.btn.is-disabled{opacity:.6;pointer-events:none}label.btn{cursor:pointer}code{background:#f0f2f5;border-radius:4px;padding:2px 6px;font-size:13px}.family-wrap{min-height:70vh}.family-box{width:100%;max-width:480px;margin:0 auto;padding:24px 16px}.family-box.wide{max-width:720px}.family-header{background:var(--card);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:15px;display:flex}.family-header .family-brand{color:var(--accent);font-size:18px;font-weight:800}.family-header .family-back{font-size:16px}.family-header .family-user{color:var(--text-muted);align-items:center;gap:12px;font-size:14px;display:flex}.family-card{padding:22px 20px}.family-lead{margin:0 0 16px;font-size:17px;line-height:1.8}.family-title{text-align:center;margin:8px 0 4px;font-size:22px}.family-month{color:var(--text-muted);margin:24px 0 10px;font-size:16px}.input-xl{letter-spacing:.08em;width:100%;padding:12px 14px!important;font-size:24px!important}.btn.btn-xl{padding:16px 24px;font-size:19px}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.photo-card{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.photo-thumb{aspect-ratio:4/3;cursor:pointer;background:#eef0f3;border:none;width:100%;padding:0;display:block}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-link{aspect-ratio:4/3;background:var(--accent-soft);justify-content:center;align-items:center;font-size:15px;font-weight:600;display:flex}.photo-meta{flex-direction:column;gap:6px;padding:10px 12px 12px;display:flex}.photo-date{color:var(--text-muted);font-size:13px}.photo-caption{font-size:16px;line-height:1.6}.photo-read{margin-top:4px}.photo-full{border-radius:8px;max-width:96vw;max-height:92vh;box-shadow:0 8px 30px #0006}
