:root{--bg:#171512;--panel:#211e1a;--panel-2:#2a2621;--border:#3b352e;--text:#f5f0e8;--muted:#aaa197;--accent:#e87451;--accent-soft:#4a2a20;--warn:#e0a458;--danger:#e06c75;--ok:#64c48a;--shadow:0 10px 30px #0000002e;font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif}@media (prefers-color-scheme:light){:root{--bg:#f5f0e8;--panel:#fffdf9;--panel-2:#eee7dc;--border:#ddd2c3;--text:#29231d;--muted:#796f65;--accent:#d95532;--accent-soft:#f8ded3;--shadow:0 10px 28px #4d392614}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-size:14px;line-height:1.6}.app{max-width:1040px;margin:0 auto;padding:28px 20px 72px}header.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}header.top h1{letter-spacing:-.02em;margin:0;font-size:22px}.brand-logo{width:clamp(168px,19vw,230px);height:auto;display:block}.brand-icon{object-fit:contain;width:52px;height:52px;display:block}.brand-art{display:block;position:relative}.brand-heart{pointer-events:none;width:4.1%;height:auto;position:absolute;top:54%;left:19.5%;transform:translate(-50%,-50%)}.brand-home{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0;display:block}.brand-home:focus-visible{outline:3px solid var(--accent);outline-offset:4px}nav.tabs{-webkit-overflow-scrolling:touch;border:1px solid var(--border);background:var(--panel-2);border-radius:14px;flex-wrap:nowrap;gap:6px;margin-bottom:22px;padding:5px;display:flex;overflow-x:auto}nav.tabs button{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:10px;flex:1;padding:9px 16px;font-size:14px}nav.tabs button:hover{color:var(--text)}nav.tabs button[aria-selected=true]{background:var(--panel);border-color:var(--border);color:var(--text);font-weight:700;box-shadow:0 3px 12px #00000014}.card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;margin-bottom:14px;padding:18px;transition:border-color .2s,transform .2s}.card:hover{border-color:color-mix(in srgb, var(--accent) 38%, var(--border))}.card-dismissed{opacity:.7}.row{align-items:flex-start;gap:12px;display:flex}.grow{flex:200px;min-width:0}.muted{color:var(--muted)}.small{font-size:12px}.stack{flex-direction:column;gap:8px;display:flex}.spread{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}button.btn{background:var(--accent);color:#fff;cursor:pointer;box-shadow:0 4px 12px color-mix(in srgb, var(--accent) 24%, transparent);border:none;border-radius:10px;padding:9px 15px;font-size:13px;font-weight:650}button.btn:disabled{opacity:.5;cursor:not-allowed}button.btn.ghost{background:var(--panel);border:1px solid var(--border);color:var(--text);box-shadow:none}button.btn.danger{border:1px solid var(--danger);color:var(--danger);background:0 0}.back-to-top{z-index:50;border-radius:999px;padding:10px 16px;position:fixed;bottom:16px;right:16px;box-shadow:0 4px 16px #00000040}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;width:100%;padding:8px 10px;font-family:inherit;font-size:14px}label.field,div.field{margin-bottom:10px;display:block}label.field>span,div.field>span{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.grid2{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:0 12px;display:grid}.genre-picker{border:1px solid var(--border);background:var(--panel-2);border-radius:8px;padding:8px 10px}.genre-picker summary{cursor:pointer;color:var(--text);font-size:14px;list-style:none}.genre-picker summary::-webkit-details-marker{display:none}.genre-picker summary:after{content:" ▾";color:var(--muted)}.genre-picker[open] summary:after{content:" ▴"}.genre-option{cursor:pointer;align-items:center;gap:6px;padding:3px 0;display:flex}.badge{border:1px solid var(--border);background:var(--panel-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:10px;display:inline-block}.badge.exact{border-color:var(--ok);color:var(--ok)}.badge.approx{border-color:var(--warn);color:var(--warn)}.badge.released{border-color:var(--border);color:var(--muted)}.badge.err{border-color:var(--danger);color:var(--danger)}.warn-badge{border-color:var(--warn);color:var(--warn);font-weight:600}.cover{object-fit:cover;background:var(--panel-2);border-radius:7px;flex:none;width:84px;height:114px;display:block;box-shadow:0 5px 14px #2c1f142e}.cover-link{flex:none;line-height:0}.cover-empty{border:1px dashed var(--border);box-sizing:border-box}.date-col{font-variant-numeric:tabular-nums;flex:none;width:60px}.date-col .d{letter-spacing:-.04em;font-size:20px;font-weight:800}.date-col .d-compact{white-space:nowrap;font-size:15px}.date-col .badge{width:fit-content;display:block}.nowrap-line{white-space:nowrap}.merged-list{flex-direction:column;flex:200px;gap:12px;min-width:0;display:flex}.merged-item{border-top:1px solid var(--border);padding-top:12px}.merged-item:first-child{border-top:none;padding-top:0}@media (width>=481px){.book-row>.grow,.merged-item>.grow{margin-left:28px}}@media (width<=480px){.app{padding-top:16px}header.top{flex-wrap:nowrap;gap:8px;margin-bottom:16px}header.top h1{white-space:nowrap;align-items:center;min-width:0;font-size:17px;line-height:1.35;display:flex}.brand-logo{width:156px}header.top h1 .warn-badge{margin-left:8px!important}header.top .btn{flex:none;padding-inline:10px}nav.tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:16px;display:grid;overflow:visible}nav.tabs button{width:100%;padding-inline:8px}.book-row{gap:10px}.book-row>.date-col{width:auto}.book-row>.cover-link{align-self:center}.cover{width:64px;height:87px}.dismiss-row{justify-content:flex-end}}.view-toggle-row{flex-wrap:nowrap}.view-toggle-row>button{white-space:nowrap;flex:1}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:12px;display:grid}.cal-weekday{text-align:center;color:var(--muted);padding-bottom:4px;font-size:11px}.cal-day{border:1px solid var(--border);border-radius:6px;min-height:64px;padding:3px;font-size:10px;overflow:hidden}.cal-day-empty{border-color:#0000}.cal-day-today{border-color:var(--accent);background:var(--accent-soft)}.cal-day-today .cal-day-num{color:var(--accent)}.cal-day-num{color:var(--muted);margin-bottom:2px;font-size:11px;font-weight:600}.cal-title{white-space:nowrap;text-overflow:ellipsis;width:100%;color:var(--text);text-align:left;line-height:1.5;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:none;display:block;overflow:hidden}.cal-title:hover{text-decoration:underline}.cal-week-list{flex-direction:column;gap:6px;margin-top:12px;display:flex}.cal-week-row{border:1px solid var(--border);border-radius:8px;align-items:flex-start;padding:8px 10px}.cal-week-row-today{border-color:var(--accent);background:var(--accent-soft)}.cal-week-row-today .cal-week-daylabel{color:var(--accent)}.cal-week-daylabel{text-align:center;width:40px;color:var(--muted);flex:none;font-size:12px}.cal-week-daylabel .cal-day-num{color:var(--text);margin:0;font-size:16px;font-weight:700;display:block}.cal-week-row-today .cal-week-daylabel .cal-day-num{color:var(--accent)}.cal-week-titles{flex-direction:column;gap:4px;display:flex}.cal-title-wide{text-align:left;white-space:normal;word-break:break-word;width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;display:block}.cal-title-wide:hover{text-decoration:underline}.banner{border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:13px}.banner.error{border:1px solid var(--danger);background:#e06c751f}.banner.info{background:var(--accent-soft);border:1px solid var(--accent)}.month-head{color:var(--text);border-bottom:1px solid var(--border);border-left:3px solid var(--accent);margin:24px 0 10px;padding:0 0 7px 10px;font-size:13px;font-weight:800}code.url{word-break:break-all;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px;font-size:12px;display:block}.center{text-align:center;padding:48px 16px}footer.credit{color:var(--muted);text-align:center;margin-top:40px;font-size:12px}footer.credit a{color:var(--muted)}.modal-backdrop{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:100%;max-width:400px;padding:20px}.modal p{white-space:pre-wrap;margin:0;font-size:14px}.toast-stack{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;padding:0 16px;display:flex;position:fixed;left:0;right:0}.toast-stack.bottom{bottom:16px}.toast-stack.top{top:16px}.toast{text-align:center;border-radius:999px;max-width:480px;padding:10px 18px;font-size:14px;font-weight:600;box-shadow:0 4px 16px #00000040}.toast.success{background:var(--ok);color:#06301b;animation:.2s ease-out toast-in,.2s ease-in 3.3s forwards toast-out}.toast.warn{background:var(--warn);color:#3a2405;animation:.2s ease-out toast-in-top,.2s ease-in 3.3s forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-in-top{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1}to{opacity:0}}.auth-screen{max-width:520px;color:var(--text);margin:0 auto;padding:36px 20px 48px}.auth-brand{justify-content:center;align-items:center;padding:8px 0;display:flex}.auth-brand .brand-logo{width:210px;max-width:100%}.auth-tagline{text-align:center;color:var(--muted);margin:8px 0 28px;font-size:14px}.auth-notice{border:1px solid var(--border);background:var(--accent-soft);border-radius:10px;margin-bottom:14px;padding:10px 14px;font-size:13px}.auth-panel{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px}.auth-title{color:var(--text);margin:0 0 8px;font-size:22px;font-weight:500;line-height:1.5}.auth-intro{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.7}.auth-fields{margin-top:24px}.auth-field{margin-bottom:18px}.auth-field label{margin:0 0 8px;font-size:14px;font-weight:500;display:block}.auth-field input{background:var(--panel);height:46px;padding:10px 12px;font-size:16px}.auth-field input:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.auth-field input[aria-invalid=true]{border-color:var(--danger)}.auth-hint{color:var(--muted);margin:6px 0 0;font-size:12px}.auth-error{color:var(--danger);margin:6px 0 0;font-size:13px}.auth-link{color:var(--accent);text-underline-offset:4px;min-height:44px;font:inherit;cursor:pointer;background:0 0;border:0;padding:10px 0;font-size:14px;text-decoration:underline}.auth-link:disabled{opacity:.5;cursor:not-allowed}.auth-reset-row{text-align:right;margin:-6px 0 4px}.auth-status{min-height:24px;color:var(--muted);margin-top:6px;font-size:13px}.auth-action,.auth-secondary{width:100%;min-height:46px;font:inherit;cursor:pointer;border-radius:8px;font-size:14px}.auth-action{background:var(--accent);color:#fff;border:0;margin-top:12px;font-weight:500}.auth-action:disabled,.auth-secondary:disabled{opacity:.6;cursor:not-allowed}.auth-secondary{background:var(--panel);color:var(--accent);border:1px solid var(--border);margin-top:12px}.auth-resend{margin-top:4px}.auth-separator{background:var(--border);height:1px;margin:16px 0 20px}.auth-other{text-align:center;color:var(--muted);font-size:14px}.auth-back{margin:12px auto 0;display:block}@media (width<=430px){.auth-screen{padding:20px 14px 32px}.auth-panel{border-radius:12px;padding:22px 18px}}
