:root{--bg:#f8f9fb;--card:#fff;--text:#1f2937;--muted:#6b7280;--primary:#2563eb;--primary-text:#fff;--danger:#dc2626;--success:#16a34a;--warning:#f59e0b;--border:#e5e7eb;--radius:.75rem;--shadow:0 1px 3px #00000014}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}.auth-screen{background:linear-gradient(135deg,#eff6ff 0%,#f3f4f6 100%);justify-content:center;align-items:center;min-height:100vh;padding:1.25rem;display:flex}.auth-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow);padding:2rem}.auth-card h1{text-align:center;margin:0 0 .25rem;font-size:1.5rem}.auth-subtitle{color:var(--muted);text-align:center;margin:0 0 1.5rem;font-size:.9375rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.field{flex-direction:column;gap:.375rem;display:flex}.field label{color:var(--muted);font-size:.8125rem}.field input,.field select{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:.5rem;padding:.5rem .75rem;font-size:.9375rem}.field input:focus,.field select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2563eb1f}.btn{background:var(--primary);color:var(--primary-text);cursor:pointer;border:none;border-radius:.5rem;justify-content:center;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.9375rem;transition:opacity .15s;display:inline-flex}.btn:hover{opacity:.9}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:.375rem .75rem;font-size:.875rem}.btn-full{width:100%}.auth-error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;margin:0;padding:.625rem .75rem;font-size:.875rem}.auth-loading{text-align:center;color:var(--muted);margin:0}.calendar-app{max-width:1400px;min-height:100vh;margin:0 auto;padding:1.25rem}.calendar-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.calendar-title h1{margin:0;font-size:1.5rem}.calendar-title p{color:var(--muted);margin:.25rem 0 0;font-size:.875rem}.calendar-controls{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.calendar-controls select,.calendar-picker summary{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:.5rem;padding:.375rem .5rem}.calendar-picker{position:relative}.calendar-picker summary{cursor:pointer;list-style:none}.calendar-picker summary::-webkit-details-marker{display:none}.calendar-options{background:var(--card);border:1px solid var(--border);min-width:140px;box-shadow:var(--shadow);z-index:10;border-radius:.5rem;flex-direction:column;gap:.375rem;padding:.5rem;display:flex;position:absolute;top:calc(100% + .25rem);right:0}.calendar-options label{cursor:pointer;align-items:center;gap:.375rem;font-size:.875rem;display:flex}.calendar-options input{margin:0}.status{color:var(--primary);background:#eff6ff;border:1px solid #bfdbfe;border-radius:.5rem;margin-bottom:1rem;padding:.75rem}.status.error{color:var(--danger);background:#fef2f2;border-color:#fecaca}.calendar-body{grid-template-columns:1fr 360px;gap:1.25rem;display:grid}.calendar-main{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.weekdays{grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:.5rem;display:grid}.weekday{text-align:center;color:var(--muted);padding:.5rem;font-size:.875rem;font-weight:500}.month-grid{grid-template-columns:repeat(7,1fr);gap:.5rem;display:grid}.day-cell{border:1px solid var(--border);background:var(--card);cursor:pointer;text-align:left;border-radius:.5rem;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:.125rem;min-height:92px;padding:.5rem;transition:border-color .15s,background .15s;display:flex}.day-cell:hover{border-color:var(--primary)}.day-cell.other-month{color:#9ca3af;background:#f9fafb}.day-cell.today{border-color:var(--primary);background:#eff6ff}.day-cell.selected{outline:2px solid var(--primary);outline-offset:-2px}.day-cell.holiday{background:#fef2f2}.day-cell.workday-shift{background:#fff7ed}.day-number{font-size:1.125rem;font-weight:600}.lunar-text{color:var(--muted);font-size:.75rem}.badge{white-space:nowrap;text-overflow:ellipsis;border-radius:9999px;max-width:100%;padding:.125rem .375rem;font-size:.6875rem;overflow:hidden}.badge.term{color:#166534;background:#dcfce7}.badge.holiday-badge{color:#991b1b;background:#fee2e2}.badge.work-badge{color:#9a3412;background:#ffedd5}.extra-calendars{flex-wrap:wrap;gap:.125rem;margin-top:auto;display:flex}.extra-cal{color:var(--muted);background:#f3f4f6;border-radius:.25rem;padding:0 .25rem;font-size:.625rem;line-height:1.4}.calendars-list{background:#f9fafb;border-radius:.5rem;gap:.375rem;margin-bottom:.75rem;padding:.75rem;display:grid}.cal-row{justify-content:space-between;gap:.75rem;font-size:.875rem;display:flex}.cal-row span{color:var(--muted)}.cal-row b{text-align:right;font-weight:500}.calendar-detail{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);height:fit-content;padding:1rem}.detail-card h2{margin:0 0 .5rem;font-size:1.25rem}.lunar-title{color:var(--text);margin:0 0 .5rem;font-size:1rem}.lunar-title .meta{color:var(--muted);margin-left:.5rem;font-size:.875rem}.ganzhi,.solar-term{color:var(--muted);margin:.25rem 0;font-size:.9375rem}.solar-term{color:var(--success);font-weight:500}.holiday-row{border-radius:.5rem;margin:.75rem 0;padding:.5rem .75rem;font-size:.9375rem;font-weight:500}.holiday-row.holiday{color:#991b1b;background:#fee2e2}.holiday-row.work{color:#9a3412;background:#ffedd5}.yi-ji{grid-template-columns:1fr 1fr;gap:.75rem;margin:1rem 0;display:grid}.yi,.ji{border-radius:.5rem;padding:.75rem}.yi{background:#f0fdf4}.ji{background:#fef2f2}.yi h3,.ji h3{margin:0 0 .5rem;font-size:.9375rem}.yi h3{color:var(--success)}.ji h3{color:var(--danger)}.tags{flex-wrap:wrap;gap:.375rem;display:flex}.tags span{background:var(--card);border:1px solid var(--border);border-radius:.375rem;padding:.125rem .5rem;font-size:.8125rem}.almanac-list{gap:.5rem;display:grid}.almanac-list>div{border-bottom:1px solid var(--border);justify-content:space-between;gap:.75rem;padding:.5rem 0;font-size:.875rem;display:flex}.almanac-list>div:last-child{border-bottom:none}.almanac-list span{color:var(--muted);white-space:nowrap}.almanac-list b{text-align:right;word-break:break-all;font-weight:500}@media (width<=900px){.calendar-body{grid-template-columns:1fr}.day-cell{min-height:64px;padding:.25rem}.day-number{font-size:.9375rem}.lunar-text,.badge{font-size:.625rem}}
