:root{--bg:#0f1419;--surface:#1a2332;--border:#2d3a4f;--text:#e7ecf3;--muted:#8b9cb3;--accent:#4a9eff;--both-free:#2d6a4f;--only2-busy:#3d7ab8;--only1-busy:#b8860b;--both-busy:#6b3a3a;--single-free:#1e3a2f;--single-busy:#5c3d6e}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}#app{max-width:1200px;margin:0 auto;padding:1.5rem 1rem 3rem}.top-bar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.lang-toggle{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.lang-btn{background:var(--surface);border:none;border-radius:0;justify-content:center;align-items:center;min-width:2.5rem;padding:.35rem .5rem;display:flex}.lang-btn:not(:last-child){border-right:1px solid var(--border)}.lang-btn.active{background:var(--accent);outline:2px solid var(--accent);outline-offset:-2px}.flag-icon{border-radius:2px;width:28px;height:18px;display:block;box-shadow:0 0 0 1px #0003}.top-nav{gap:.5rem;display:flex}.link-btn{color:var(--accent);background:0 0;border:none;padding:.25rem .5rem;text-decoration:underline}.link-btn:hover{color:#7eb8ff}.help-page{max-width:42rem}.help-content h2{margin:1.25rem 0 .5rem;font-size:1rem}.help-lead{color:var(--text);font-size:1.05rem}.help-privacy{border:1px solid var(--both-free);background:#2d6a4f26;border-radius:8px;margin-top:1.5rem;padding:1rem}.help-privacy h2{color:#7dcea0;margin-top:0}.help-legend-list{margin:0;padding:0;list-style:none}.help-legend-list li{align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}#view-help .load-btn{margin-top:1.5rem}.header h1{margin:0 0 .25rem;font-size:1.75rem;font-weight:600}.subtitle{color:var(--muted);margin:0;font-size:.95rem}.inputs{gap:1rem;margin-top:1.5rem;display:grid}@media (width>=700px){.inputs{grid-template-columns:1fr 1fr}}.cal-input{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem}.cal-input h2{margin:0 0 .75rem;font-size:1rem;font-weight:600}.optional{color:var(--muted);font-size:.85rem;font-weight:400}.cal-input label{color:var(--muted);margin-bottom:.5rem;font-size:.8rem;display:block}.cal-input input[type=url],.cal-input input[type=file]{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:4px;margin-top:.25rem;padding:.5rem;font-size:.9rem;display:block}.input-actions{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}button{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:4px;padding:.5rem 1rem;font-size:.9rem}button:hover{border-color:var(--accent);color:var(--accent)}.load-btn{background:var(--accent);border-color:var(--accent);color:#fff}.load-btn:hover{filter:brightness(1.1);color:#fff}.status{color:var(--muted);margin:1rem 0 0;font-size:.9rem}.status.error{color:#f08080}.period-nav{flex-direction:column;gap:.75rem;margin:1.25rem 0 .75rem;display:flex}.view-toggle{border:1px solid var(--border);border-radius:6px;width:fit-content;display:inline-flex;overflow:hidden}.view-btn{background:var(--surface);border:none;border-radius:0;padding:.45rem 1rem}.view-btn:not(:last-child){border-right:1px solid var(--border)}.view-btn.active{background:var(--accent);color:#fff}.view-btn.active:hover{color:#fff}.period-controls{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.period-label{color:var(--muted);margin-left:.5rem;font-size:.9rem}.legend{margin-bottom:1rem}.legend h3{color:var(--muted);margin:0 0 .5rem;font-size:.85rem;font-weight:600}.legend-items{flex-wrap:wrap;gap:.75rem 1.25rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.legend-items li{align-items:center;gap:.4rem;display:flex}.swatch{border:1px solid #ffffff26;border-radius:2px;width:14px;height:14px;display:inline-block}.swatch.both-free{background:var(--both-free)}.swatch.only2-busy{background:var(--only2-busy)}.swatch.only1-busy{background:var(--only1-busy)}.swatch.both-busy{background:var(--both-busy)}.swatch.single-free{background:var(--single-free)}.swatch.single-busy{background:var(--single-busy)}.swatch.mutual-free-day-swatch{background:var(--both-free);box-shadow:0 0 0 2px #4ade80}.grid-container{overflow-x:auto}.empty-hint{color:var(--muted);font-size:.95rem}.grid-wrapper{min-width:640px}.week-grid{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.75rem}.week-grid th,.week-grid td{border:1px solid var(--border);padding:0}.week-grid th{background:var(--surface);text-align:center;padding:.4rem .25rem;font-weight:500}.week-grid th .day-name{display:block}.week-grid th .day-date{color:var(--muted);font-size:.7rem;display:block}.time-col{text-align:right;width:3rem;color:var(--muted);vertical-align:top;background:var(--surface);font-size:.7rem;padding:0 .35rem!important}.week-grid td.slot{height:6px;min-height:6px}.slot.both-free{background:var(--both-free)}.slot.only2-busy{background:var(--only2-busy)}.slot.only1-busy{background:var(--only1-busy)}.slot.both-busy{background:var(--both-busy)}.slot.single-free{background:var(--single-free)}.slot.single-busy{background:var(--single-busy)}.slot:hover{outline:1px solid var(--accent);outline-offset:-1px;z-index:1;position:relative}.month-wrapper{min-width:560px}.month-grid{border-collapse:collapse;table-layout:fixed;width:100%}.month-grid th{background:var(--surface);border:1px solid var(--border);text-align:center;color:var(--muted);padding:.4rem;font-size:.75rem;font-weight:500}.month-day{border:1px solid var(--border);vertical-align:top;height:100px;padding:.25rem}.month-day.other-month{opacity:.45}.month-day.today .day-num{color:var(--accent);font-weight:700}.day-num{color:var(--text);margin-bottom:.2rem;font-size:.8rem}.day-mini{flex-direction:column;gap:1px;min-height:64px;display:flex}.mini-slot{border-radius:1px;flex:1;min-height:1px}.mini-slot:hover{outline:1px solid var(--accent);outline-offset:-1px;z-index:1;position:relative}.mini-slot.both-free{background:var(--both-free)}.mini-slot.only2-busy{background:var(--only2-busy)}.mini-slot.only1-busy{background:var(--only1-busy)}.mini-slot.both-busy{background:var(--both-busy)}.mini-slot.single-free{background:var(--single-free)}.mini-slot.single-busy{background:var(--single-busy)}.mutual-free-day-header{box-shadow:inset 0 0 0 2px #4ade80;background:#2d6a4f59!important}.week-grid td.mutual-free-day,.month-day.mutual-free-day{background:#2d6a4f33;box-shadow:inset 0 0 0 2px #4ade80}.week-grid td.mutual-free-day{background:var(--both-free)!important}.month-day.mutual-free-day .day-num{color:#4ade80;font-weight:700}.month-day.mutual-free-day .mini-slot{background:var(--both-free)!important}
