*,*:before,*:after{box-sizing:border-box}:root{--bg: #0f1117;--surface: #1a1d27;--surface-2: #22263a;--border: #2a2e42;--text: #e8eaf0;--text-muted: #8b90a8;--accent: #6366f1;--accent-hover: #7577f3;--radius: 12px;--radius-sm: 8px}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.6;min-height:100vh}#root{min-height:100vh}input,select,button{font-family:inherit;font-size:inherit}.app{display:flex;flex-direction:column;min-height:100vh}.header{background:linear-gradient(135deg,#1a1d27,#151826);border-bottom:1px solid var(--border);padding:2.5rem 1.5rem}.header-inner{max-width:900px;margin:0 auto}.title{margin:0;font-size:2rem;font-weight:700;background:linear-gradient(90deg,#a5b4fc,#6366f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.subtitle{margin:.25rem 0 0;color:var(--text-muted);font-size:.95rem}.main{flex:1;max-width:900px;width:100%;margin:0 auto;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:2rem}.footer{border-top:1px solid var(--border);padding:1rem 1.5rem;text-align:center;color:var(--text-muted);font-size:.8rem}.footer p{margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem}.input-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1.25rem;margin-bottom:1.5rem}.field{display:flex;flex-direction:column;gap:.4rem}.label{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .9rem;color:var(--text);transition:border-color .15s;width:100%;-webkit-appearance:none}.input:focus{outline:none;border-color:var(--accent)}.input::placeholder{color:var(--text-muted)}select.input{cursor:pointer}.field-wide{grid-column:1 / -1}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:.75rem 1.5rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s;width:100%}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:active:not(:disabled){transform:scale(.99)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.select-hint{background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-sm);padding:.6rem 1rem;font-size:.85rem;color:#a5b4fc;margin-bottom:1rem}.select-hint.selecting{background:#6366f12e;border-color:#6366f199}.select-hint kbd{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:.1em .4em;font-family:inherit;font-size:.8em}.results-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.25rem}.results-summary{display:flex;gap:.5rem;flex-wrap:wrap}.summary-chip{padding:.3rem .75rem;border-radius:99px;font-size:.85rem;font-weight:600}.summary-chip.green{background:#4ade8026;color:#4ade80}.summary-chip.blue{background:#60a5fa26;color:#60a5fa}.summary-chip.orange{background:#fb923c26;color:#fb923c}.snackbar{position:fixed;bottom:1.75rem;left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:.75rem 1.25rem;border-radius:var(--radius);font-size:.9rem;white-space:nowrap;box-shadow:0 4px 16px #0006;animation:snackbar-in .2s ease;z-index:100}@keyframes snackbar-in{0%{opacity:0;transform:translate(-50%) translateY(.5rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}.btn-export{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.35rem .9rem;color:var(--text-muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:color .15s,border-color .15s}.btn-export:hover{color:var(--text);border-color:var(--accent)}.view-toggle{display:flex;background:var(--surface-2);border-radius:var(--radius-sm);padding:.2rem;gap:.2rem}.toggle-btn{padding:.35rem .9rem;border-radius:6px;border:none;background:transparent;color:var(--text-muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.toggle-btn.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0006}.period-list{display:flex;flex-direction:column;gap:1rem}.period-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem}.period-card-header{display:flex;align-items:center;justify-content:space-between}.period-number{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.btn-remove{background:none;border:none;color:var(--text-muted);font-size:.85rem;cursor:pointer;padding:.2rem .4rem;border-radius:4px;line-height:1;transition:color .15s,background .15s}.btn-remove:hover{color:#f87171;background:#f871711a}.period-dates{display:flex;align-items:center;gap:.75rem;font-size:1.05rem;font-weight:600;flex-wrap:wrap}.date-arrow{color:var(--text-muted)}.period-stats{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.stat{display:flex;flex-direction:column;align-items:flex-start}.stat-value{font-size:1.4rem;font-weight:700;color:var(--text);line-height:1}.stat-label{font-size:.75rem;color:var(--text-muted);margin-top:.15rem}.stat-divider{width:1px;height:2.5rem;background:var(--border)}.calendar-view{display:flex;flex-direction:column;gap:1.25rem}.calendar-legend{display:flex;gap:1rem;flex-wrap:wrap;font-size:.82rem;color:var(--text-muted)}.legend-item{display:flex;align-items:center;gap:.4rem}.legend-dot{width:10px;height:10px;border-radius:3px;display:inline-block}.free-dot{background:var(--surface-2);border:1px solid var(--border)}.calendar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.month-grid{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.month-name{font-weight:700;font-size:.9rem;margin-bottom:.75rem;color:var(--text)}.dow-row{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:.25rem}.dow-cell{font-size:.65rem;color:var(--text-muted);text-align:center;font-weight:600;letter-spacing:.04em}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.day-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.72rem;border-radius:4px;color:var(--text-muted);cursor:default}.day-cell.empty{visibility:hidden}.day-cell.free{color:var(--text-muted);background:var(--surface-2)}.day-cell.vacation{background:var(--day-color, var(--accent));color:#0f1117;font-weight:700;opacity:.9}.day-cell.vacation.free{opacity:.6;font-weight:400}.day-cell.clickable:hover{background:#6366f133;color:#c7d2fe;cursor:pointer}.day-cell.select-start{background:var(--accent)!important;color:#fff!important;font-weight:700;cursor:pointer}.day-cell.preview{background:#6366f140;color:#c7d2fe}.day-cell[data-tooltip]{position:relative}.day-cell[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%);background:#1e2130;color:#e8eaf0;border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-size:.7rem;white-space:nowrap;pointer-events:none;z-index:100;box-shadow:0 2px 8px #00000080}.day-cell.removable{cursor:pointer}.day-cell.remove-hover{background:#f8717159!important;color:#fca5a5!important}.day-cell.past{opacity:.25;text-decoration:line-through;text-decoration-color:var(--text-muted)}.past-dot{background:var(--surface-2);border:1px solid var(--border);opacity:.4;text-decoration:line-through}@media(max-width:600px){.header{padding:1.5rem 1rem}.title{font-size:1.5rem}.main{padding:1.25rem 1rem}.card{padding:1.25rem}.period-dates{font-size:.9rem}.stat-value{font-size:1.2rem}.calendar-grid{grid-template-columns:1fr 1fr}}
