:root{--blue-50: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-300: #93c5fd;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--blue-800: #1e40af;--blue-900: #1e3a8a;--white: #ffffff;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--green-500: #22c55e;--green-600: #16a34a;--amber-500: #f59e0b;--red-500: #ef4444;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(30, 58, 138, .08);--shadow-md: 0 4px 12px rgba(30, 58, 138, .1);--shadow-lg: 0 12px 32px rgba(30, 58, 138, .14)}*{box-sizing:border-box;margin:0;padding:0}html,body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--gray-50);color:var(--gray-800);line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none}a{color:var(--blue-600);text-decoration:none}a:hover{text-decoration:underline}.app-header{background:linear-gradient(135deg,var(--blue-700),var(--blue-500));color:var(--white);padding:1.75rem 1.25rem;text-align:center;box-shadow:var(--shadow-md)}.app-header h1{font-size:1.9rem;font-weight:700;letter-spacing:-.01em}.app-header p{margin-top:.4rem;font-size:.95rem;color:var(--blue-100);font-weight:400}.container{max-width:1120px;margin:0 auto;padding:1.5rem 1rem 4rem}.today-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;padding:1.1rem 1.35rem;background:var(--white);border:1px solid var(--blue-100);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.today-card-date{display:flex;flex-direction:column;gap:.2rem}.today-card-label{color:var(--blue-600);font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.today-card-date strong{color:var(--gray-900);font-size:1.1rem;text-transform:capitalize}.today-card-status{flex-shrink:0;padding:.45rem .8rem;border-radius:999px;background:var(--gray-100);color:var(--gray-600);font-size:.8rem;font-weight:600}.today-card-status.is-free{background:#dcfce7;color:var(--green-600)}.tabs{display:flex;gap:.25rem;background:var(--white);padding:.35rem;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:1.5rem;overflow-x:auto}.tab-btn{flex:1;padding:.65rem 1rem;border-radius:var(--radius-sm);font-size:.92rem;font-weight:500;color:var(--gray-600);white-space:nowrap;transition:background .2s,color .2s}.tab-btn:hover{background:var(--blue-50);color:var(--blue-700)}.tab-btn.active{background:var(--blue-600);color:var(--white);box-shadow:var(--shadow-sm)}.card{background:var(--white);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-md);margin-bottom:1.5rem}.card-title{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.section-subtitle{font-size:.85rem;color:var(--gray-500);margin-bottom:1rem}.nearest-list{display:flex;flex-direction:column;gap:.75rem}.nearest-item{display:flex;align-items:center;gap:1rem;padding:1rem;border-radius:var(--radius-md);background:var(--blue-50);border:1px solid var(--blue-100);transition:transform .15s,box-shadow .15s}.nearest-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.nearest-date-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:64px;padding:.5rem .6rem;border-radius:var(--radius-sm);background:var(--blue-600);color:var(--white);font-weight:600}.nearest-date-badge .day{font-size:1.4rem;line-height:1}.nearest-date-badge .mon{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;margin-top:.15rem}.nearest-info{flex:1}.nearest-info .name{font-weight:600;color:var(--gray-900);font-size:1rem}.nearest-info .meta{font-size:.82rem;color:var(--gray-500);margin-top:.15rem}.nearest-countdown{font-size:.8rem;font-weight:600;color:var(--blue-700);background:var(--white);padding:.3rem .6rem;border-radius:999px;border:1px solid var(--blue-200);white-space:nowrap}.badge-public{display:inline-block;font-size:.68rem;font-weight:600;padding:.15rem .5rem;border-radius:999px;background:var(--green-500);color:var(--white);margin-left:.4rem}.badge-free{background:var(--green-500)}.badge-observed{background:var(--amber-500)}.holiday-list{display:flex;flex-direction:column;gap:.5rem}.holiday-row{display:grid;grid-template-columns:90px 1fr auto;align-items:center;gap:1rem;padding:.85rem 1rem;border-radius:var(--radius-md);background:var(--gray-50);border:1px solid var(--gray-100);transition:background .15s,border-color .15s}.holiday-row:hover{background:var(--blue-50);border-color:var(--blue-200)}.holiday-row .date-col{font-weight:600;color:var(--blue-700);font-size:.9rem}.holiday-row .name-col .name{font-weight:600;color:var(--gray-900);font-size:.95rem}.holiday-row .name-col .type{font-size:.78rem;color:var(--gray-500)}.holiday-row .status-col{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.holiday-row .status-pill{font-size:.72rem;font-weight:600;padding:.25rem .6rem;border-radius:999px}.status-free{background:var(--green-500);color:var(--white)}.status-work{background:var(--gray-200);color:var(--gray-600)}.year-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.year-selector label{font-weight:600;color:var(--gray-700);font-size:.9rem}.year-selector select{padding:.4rem .7rem;border-radius:var(--radius-sm);border:1px solid var(--gray-300);background:var(--white);font-size:.9rem;color:var(--gray-800)}.filter-chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.chip{font-size:.8rem;font-weight:500;padding:.35rem .8rem;border-radius:999px;background:var(--gray-100);color:var(--gray-600);transition:background .15s,color .15s}.chip:hover{background:var(--blue-100)}.chip.active{background:var(--blue-600);color:var(--white)}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.cal-nav button{width:38px;height:38px;border-radius:var(--radius-sm);background:var(--blue-50);color:var(--blue-700);font-size:1.1rem;font-weight:600;transition:background .15s}.cal-nav button:hover{background:var(--blue-200)}.cal-heading{display:flex;align-items:center;justify-content:center;gap:.65rem;flex-wrap:wrap}.cal-nav .month-label{font-size:1.15rem;font-weight:700;color:var(--gray-900);text-transform:capitalize}.cal-nav .cal-today-btn{width:auto;min-width:54px;height:38px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:.82rem;line-height:1;color:var(--blue-700);padding:0 .7rem;border-radius:var(--radius-sm);background:var(--blue-100);font-weight:600}.cal-today-btn:hover{background:var(--blue-100)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-dow{text-align:center;font-size:.72rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;padding:.4rem 0}.cal-cell{min-height:82px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;padding:.45rem .25rem;border-radius:var(--radius-sm);background:var(--white);border:1px solid var(--gray-100);font-size:.9rem;color:var(--gray-700);position:relative;transition:background .15s,border-color .15s,transform .1s}.cal-cell.empty{min-height:82px;background:transparent;border:none}.cal-day-number{line-height:1.2}.cal-holiday-name{width:100%;font-size:.62rem;line-height:1.15;text-align:center;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;overflow-wrap:anywhere}.cal-cell.public-holiday .cal-holiday-name,.cal-cell.observed-holiday .cal-holiday-name{color:var(--white)}.cal-cell.weekend{background:var(--gray-100);color:var(--gray-500)}.cal-cell.today{border:2px solid var(--blue-600);font-weight:700;color:var(--blue-700)}.cal-cell.public-holiday{background:var(--green-500);color:var(--white);font-weight:600}.cal-cell.observed-holiday{background:var(--amber-500);color:var(--white);font-weight:600}.cal-cell.trading-sunday{border:2px solid var(--blue-500)}.cal-cell:hover:not(.empty){transform:scale(1.05);border-color:var(--blue-300)}.cal-dot{position:absolute;bottom:4px;width:5px;height:5px;border-radius:50%;background:var(--blue-500)}.cal-cell.trading-sunday .cal-dot{background:var(--blue-500)}.cal-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--gray-100)}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--gray-600)}.legend-swatch{width:14px;height:14px;border-radius:4px}.sw-free{background:var(--green-500)}.sw-observed{background:var(--amber-500)}.sw-trading{background:var(--white);border:2px solid var(--blue-500)}.sw-today{background:var(--white);border:2px solid var(--blue-600)}.sunday-list{display:flex;flex-direction:column;gap:.6rem}.sunday-item{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1rem;border-radius:var(--radius-md);background:var(--blue-50);border:1px solid var(--blue-100)}.sunday-item .date{font-weight:600;color:var(--gray-900);text-transform:capitalize}.sunday-item .countdown{font-size:.82rem;font-weight:600;color:var(--blue-700)}.info-box{background:var(--blue-50);border-left:4px solid var(--blue-500);padding:1rem 1.1rem;border-radius:var(--radius-sm);font-size:.88rem;color:var(--gray-700);margin-bottom:1.5rem;line-height:1.6}.cookie-banner{position:fixed;bottom:0;left:0;right:0;background:var(--white);border-top:1px solid var(--gray-200);box-shadow:0 -4px 16px #00000014;padding:1.25rem;z-index:100;animation:slideUp .35s ease}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.cookie-banner-inner{max-width:1120px;margin:0 auto;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.cookie-banner p{flex:1;font-size:.88rem;color:var(--gray-600);min-width:250px}.cookie-actions{display:flex;gap:.6rem}.btn{padding:.55rem 1.2rem;border-radius:var(--radius-sm);font-size:.88rem;font-weight:600;transition:background .15s,transform .1s}.btn-primary{background:var(--blue-600);color:var(--white)}.btn-primary:hover{background:var(--blue-700)}.btn-secondary{background:var(--gray-100);color:var(--gray-700)}.btn-secondary:hover{background:var(--gray-200)}.modal-overlay{position:fixed;inset:0;background:#1e3a8a73;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--white);border-radius:var(--radius-lg);max-width:640px;width:100%;max-height:80vh;overflow-y:auto;padding:2rem;box-shadow:var(--shadow-lg)}.modal h2{font-size:1.4rem;font-weight:700;color:var(--gray-900);margin-bottom:1rem}.modal h3{font-size:1.05rem;font-weight:600;color:var(--blue-700);margin:1.25rem 0 .5rem}.modal p,.modal li{font-size:.9rem;color:var(--gray-700);line-height:1.65}.modal ul{padding-left:1.25rem;margin:.5rem 0}.modal-close{margin-top:1.5rem;width:100%;padding:.7rem;border-radius:var(--radius-sm);background:var(--blue-600);color:var(--white);font-weight:600;font-size:.95rem}.modal-close:hover{background:var(--blue-700)}footer.app-footer{text-align:center;padding:1.5rem 1rem;color:var(--gray-500);font-size:.82rem;border-top:1px solid var(--gray-200);background:var(--white)}footer.app-footer a{color:var(--blue-600);margin:0 .4rem}@media(max-width:640px){.app-header h1{font-size:1.4rem}.today-card{align-items:flex-start;flex-direction:column;gap:.75rem}.today-card-date strong{font-size:1rem}.holiday-row{grid-template-columns:70px 1fr}.holiday-row .status-col{grid-column:1 / -1;flex-direction:row;justify-content:flex-start}.cal-cell{min-height:68px;font-size:.78rem;padding-inline:.15rem}.cal-cell.empty{min-height:68px}.cal-holiday-name{font-size:.5rem;-webkit-line-clamp:4}.nearest-item{flex-wrap:wrap}}
