html,body,#root{height:100%;margin:0}body{background:#fff;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}.page{min-height:100%;display:grid;place-items:center;padding:calc(40px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) calc(64px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left))}.card{width:min(760px,92vw);display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.saveStatus{position:fixed;top:calc(46px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));padding:6px 14px;border-radius:999px;font-size:12px;font-family:inherit;letter-spacing:.01em;opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease;pointer-events:none;z-index:100}.saveStatus--saving,.saveStatus--processing{opacity:1;transform:translateY(0);background:#f3f4f6;color:#9ca3af}.saveStatus--saved{opacity:1;transform:translateY(0);background:#f0fdf4;color:#16a34a}.saveStatus--error,.saveStatus--full,.saveStatus--too-large{opacity:1;transform:translateY(0);background:#fef2f2;color:#dc2626}.thumbFrame{width:100%;position:relative;display:grid;place-items:center}.thumb{width:100%;aspect-ratio:16 / 9;border-radius:24px;overflow:hidden;cursor:pointer;position:relative}.thumb--empty{background:#d9d9d9;display:flex;align-items:center;justify-content:center;transition:background .2s}.thumb--empty:hover{background:#c8c8c8}.thumbEmpty{display:flex;flex-direction:column;align-items:center;gap:8px;color:#9ca3af;pointer-events:none;transition:color .2s}.thumb--empty:hover .thumbEmpty{color:#6b7280}.thumbEmptyIcon{font-size:36px;line-height:1}.thumbEmptyLabel{font-size:13px;font-weight:600;letter-spacing:.04em}.thumb--filled{background:#000}.thumbImg{width:100%;height:100%;object-fit:cover;display:block}.arrowBtn{position:absolute;top:50%;transform:translateY(-50%);border:none;background:#fff;cursor:pointer;width:44px;height:44px;border-radius:999px;display:grid;place-items:center;color:#111;box-shadow:0 6px 16px #00000014;transition:background .15s,box-shadow .15s;z-index:2}.arrowBtn.left{left:-10%}.arrowBtn.right{right:-10%}.arrowBtn:hover{background:#f9fafb;box-shadow:0 8px 20px #0000001f}@media(max-width:912px){.thumbFrame{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;row-gap:14px}.thumb{order:0;flex:0 0 100%}.arrowBtn{order:1;position:static;transform:none;width:40px;height:40px;background:#fff;border:1px solid #ececec;box-shadow:none}.arrowBtn:disabled{opacity:.35;cursor:default}}.fileInput{display:none}.titleField{width:100%;overflow-wrap:anywhere;background:transparent;border:none;outline:none;padding:0;margin:6px 0 0;text-align:center;font-weight:800;letter-spacing:-.03em;line-height:1.1;font-size:clamp(22px,3.5vw,40px);color:#0f0f0f;resize:none;overflow:hidden;font-family:inherit}.titleField::placeholder{color:#9ca3af}.titleField:focus::placeholder{color:transparent}.date{margin:0;color:#6b7280;font-size:clamp(14px,1.6vw,18px)}.todayLink{position:fixed;top:calc(18px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:none;border:none;font-family:inherit;font-size:13px;color:#c4c4c4;cursor:pointer;letter-spacing:.01em;padding:4px 8px;z-index:100;transition:color .15s;white-space:nowrap}.todayLink:hover{color:#888}.removeCoverBtn{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#00000059;border:none;color:#ffffffbf;font-family:inherit;font-size:11px;font-weight:500;padding:4px 12px;border-radius:999px;cursor:pointer;opacity:0;transition:opacity .2s,background .15s;pointer-events:none;z-index:3;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.removeCoverBtn--visible{opacity:1;pointer-events:auto}.removeCoverBtn:hover{background:#0000008c;color:#fff}.removeCoverBtn{display:flex;align-items:center;gap:5px}.viewToggleBtn{position:fixed;top:calc(18px + env(safe-area-inset-top));left:calc(20px + env(safe-area-inset-left));background:none;border:none;font-family:inherit;font-size:13px;font-weight:500;color:#9ca3af;cursor:pointer;padding:4px 8px;border-radius:6px;z-index:100;transition:color .15s,background .15s;white-space:nowrap}.viewToggleBtn:hover{color:#374151;background:#f3f4f6}.monthPage{min-height:100%;padding:calc(72px + env(safe-area-inset-top)) calc(40px + env(safe-area-inset-right)) calc(84px + env(safe-area-inset-bottom)) calc(40px + env(safe-area-inset-left));max-width:1400px;margin:0 auto}.monthHeader{display:flex;align-items:center;gap:20px;margin-bottom:36px}.monthTitle{font-size:22px;font-weight:700;letter-spacing:-.02em;color:#0f0f0f}.monthArrow{background:none;border:none;font-size:18px;color:#9ca3af;cursor:pointer;padding:4px 8px;border-radius:6px;transition:color .15s,background .15s}.monthArrow:hover{color:#111;background:#f3f4f6}.monthGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px 24px}@media(max-width:900px){.monthGrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.monthGrid{grid-template-columns:1fr}.monthPage{padding:calc(72px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) calc(84px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left))}}.monthCard{cursor:pointer;display:flex;flex-direction:column;gap:8px}.monthCard--today .monthThumb{outline:2px solid #0f0f0f;outline-offset:3px}.monthCard--future{cursor:default;opacity:.35}.monthCard--future:hover .monthThumb{opacity:1}.monthThumb{width:100%;aspect-ratio:16 / 9;border-radius:16px;background:#e5e7eb;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.monthCard:hover .monthThumb{opacity:.85}.monthThumb--filled{background:#000}.monthThumbImg{width:100%;height:100%;object-fit:cover;display:block}.monthThumbDay{font-size:28px;font-weight:700;color:#d1d5db;letter-spacing:-.02em}.monthCardTitle{overflow-wrap:anywhere;font-size:14px;font-weight:700;color:#0f0f0f;line-height:1.3;margin:0;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.monthCardEmpty{font-weight:400;color:#d1d5db}.monthCardDate{font-size:12px;color:#9ca3af;margin:0}.topRight{position:fixed;top:calc(14px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));display:flex;align-items:center;gap:2px;z-index:100}.topBtn{background:none;border:none;font-family:inherit;font-size:13px;font-weight:500;color:#9ca3af;cursor:pointer;padding:4px 8px;border-radius:6px;transition:color .15s,background .15s;white-space:nowrap}.topBtn:hover{color:#374151;background:#f3f4f6}.topBtn:disabled{opacity:.4;cursor:default}.modalBackdrop{position:fixed;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:200;padding:max(20px,env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:#fff;border-radius:20px;padding:36px;width:100%;max-width:420px;box-sizing:border-box;max-height:100%;overflow-y:auto;position:relative;box-shadow:0 24px 60px #0000001f}.modalClose{position:absolute;top:16px;right:16px;background:#f3f4f6;border:none;width:32px;height:32px;border-radius:999px;font-size:13px;color:#6b7280;cursor:pointer;display:grid;place-items:center;transition:background .15s}.modalClose:hover{background:#e5e7eb}.modalTitle{font-size:22px;font-weight:800;letter-spacing:-.02em;color:#0f0f0f;margin:0 0 24px}.modalSection{display:flex;flex-direction:column;gap:10px}.modalLabel{font-size:10px;font-weight:700;letter-spacing:.1em;color:#9ca3af;margin:0}.modalDesc{font-size:13px;color:#6b7280;line-height:1.5;margin:0}.modalDesc code{background:#f3f4f6;padding:1px 5px;border-radius:4px;font-size:12px;color:#374151}.modalDivider{border:none;border-top:1px solid #f3f4f6;margin:24px 0}.modalBtn{background:#0f0f0f;color:#fff;border:none;font-family:inherit;font-size:13px;font-weight:700;padding:10px 20px;border-radius:999px;cursor:pointer;align-self:flex-start;transition:background .15s}.modalBtn:hover{background:#333}.modalBtn:disabled{opacity:.4;cursor:default}.modalBtn--ghost{background:none;color:#9ca3af;font-weight:500;padding-left:8px;padding-right:8px}.modalBtn--ghost:hover{background:#f3f4f6;color:#374151}.modal--crop{max-width:640px;padding:28px}.cropCanvas{display:block;width:100%;aspect-ratio:16 / 9;border-radius:16px;background:#0f0f0f;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.cropCanvas:active{cursor:grabbing}.cropHint{font-size:11px;color:#c4c4c4;text-align:center;margin:10px 0 0}.cropTools{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.cropBtn{border:1.5px solid #e5e7eb;background:none;font-family:inherit;font-size:12px;font-weight:600;color:#374151;padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s,color .15s}.cropBtn:hover{background:#fafafa;border-color:#d1d5db}.cropBtn--active{border-color:#0f0f0f;background:#0f0f0f;color:#fff}.cropZoom{display:flex;align-items:center;gap:12px;margin-top:14px}.cropZoom span{font-size:10px;font-weight:700;letter-spacing:.1em;color:#9ca3af;text-transform:uppercase}.cropZoom input{flex:1;accent-color:#0f0f0f}.cropActions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:22px}.cropActions .modalBtn{align-self:auto}.modalRadioGroup{display:flex;gap:8px}.modalRadio{flex:1;border:1.5px solid #e5e7eb;border-radius:12px;padding:10px 14px;cursor:pointer;font-size:13px;font-weight:600;color:#374151;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,background .15s}.modalRadio input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.modalRadio:focus-within{border-color:#0f0f0f;outline:2px solid #0f0f0f;outline-offset:2px}.modalRadio span{font-size:11px;font-weight:400;color:#9ca3af}.modalRadio--active{border-color:#0f0f0f;background:#fafafa}.modalStatus{font-size:13px;font-weight:500;margin:0}.modalStatus--ok{color:#16a34a}.modalStatus--error{color:#dc2626}.modal--about .modalTitle{margin-bottom:6px}.aboutLead{font-size:14px;font-weight:600;color:#374151;letter-spacing:-.01em;margin:0 0 18px}.aboutText{font-size:13.5px;line-height:1.65;color:#4b5563;margin:0 0 12px}.aboutText:last-of-type{margin-bottom:0}.aboutText em{color:#6b7280;font-style:italic}.aboutNote{font-size:12.5px;line-height:1.6;color:#9ca3af;margin:0}.aboutNote strong{color:#6b7280;font-weight:600}.aboutMail{font-size:12.5px;color:#9ca3af;margin:14px 0 0;-webkit-user-select:all;user-select:all}.footer{position:fixed;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:7px;font-size:12px;z-index:100;white-space:nowrap}.footer:before{content:"";position:absolute;inset:-18px -40px -20px;background:linear-gradient(to top,#fff 55%,#fff0);z-index:-1;pointer-events:none}.footerLink{background:none;border:none;font-family:inherit;font-size:inherit;color:#c4c4c4;cursor:pointer;padding:2px;transition:color .15s}.footerLink:hover{color:#374151}.footerSep{color:#e5e7eb}.footerBy{color:#d1d5db;text-decoration:none;transition:color .15s}.footerBy:hover{color:#374151}.dbErrorBanner{position:fixed;top:0;left:0;right:0;background:#fef2f2;color:#b91c1c;font-size:13px;font-weight:500;text-align:center;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;z-index:300;border-bottom:1px solid #fecaca}.backupNudge,.installHint{position:fixed;bottom:calc(46px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:101;display:flex;align-items:center;gap:10px;max-width:min(92vw,460px);padding:9px 10px 9px 16px;border-radius:999px;background:#fff;border:1px solid #ececec;box-shadow:0 6px 24px #00000014;font-size:13px;color:#4b5563;line-height:1.35}.backupNudgeBtn{flex:0 0 auto;border:none;border-radius:999px;background:#0f0f0f;color:#fff;font-family:inherit;font-size:12px;font-weight:500;padding:6px 14px;cursor:pointer}.backupNudgeClose,.installHintClose{flex:0 0 auto;border:none;background:none;color:#c4c4c4;font-family:inherit;font-size:13px;cursor:pointer;padding:4px 6px;transition:color .15s}.backupNudgeClose:hover,.installHintClose:hover{color:#374151}@media(max-width:520px){.backupNudge,.installHint{font-size:12px;padding:8px 8px 8px 14px}}.aboutAside{color:#9ca3af;font-size:13px}.modal--confirm{max-width:400px}.modalBtn--danger{background:#dc2626}.modalBtn--danger:hover{background:#b91c1c}
