*,*:before,*:after{box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--bg: #f0f4f8;--surface: #ffffff;--surface-2: #f5f5f5;--surface-3: #f0f4ff;--border: #ddd;--border-light: #eee;--text: #333;--text-muted: #888;--text-dark: #1a1a2e;--shadow: rgba(0,0,0,.06);--shadow-md: rgba(0,0,0,.1);--out-range-bg: #fafafa;--out-range-color: #ccc;--btn-bg: #4a5568;--btn-text: #ffffff}[data-theme=dark]{--bg: #1a1a1a;--surface: #242424;--surface-2: #2e2e2e;--surface-3: #333333;--border: #3d3d3d;--border-light: #303030;--text: #d4cfc8;--text-muted: #7a756e;--text-dark: #ede8e0;--shadow: rgba(0,0,0,.35);--shadow-md: rgba(0,0,0,.45);--out-range-bg: #1f1f1f;--out-range-color: #3a3a3a;--btn-bg: #4a4540;--btn-text: #ffffff}body{margin:0;min-height:100vh;overflow-x:hidden;background-color:var(--bg);color:var(--text)}#root{min-height:100vh}h1,h2,h3{margin:0}button{font-family:inherit}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--surface);border-radius:12px;padding:48px 40px;text-align:center;box-shadow:0 4px 24px var(--shadow-md);max-width:360px;width:100%}.login-card h1{font-size:2rem;font-weight:700;margin:0 0 8px;color:var(--text-dark)}.login-card p{color:var(--text-muted);margin:0 0 32px;font-size:.95rem;text-align:left}.google-btn{display:inline-flex;align-items:center;gap:10px;padding:12px 24px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;font-size:.95rem;font-weight:500;color:var(--text);transition:box-shadow .15s,background .15s}.google-btn:hover{box-shadow:0 2px 8px var(--shadow-md);background:var(--surface-2)}.date-range-picker{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-range-picker input{padding:0 8px;height:32px;box-sizing:border-box;border:1px solid var(--border);border-radius:6px;font-size:.85rem;outline:none;transition:border-color .15s;cursor:pointer;max-width:150px;vertical-align:middle;background:var(--surface);color:var(--text)}.date-range-picker input:focus{border-color:#4a90d9}.separator{color:var(--text-muted);font-size:.85rem}@media(max-width:600px){.date-range-picker input{font-size:.78rem;padding:5px 6px;max-width:130px}}.label-panel{background:var(--surface);border-radius:10px;padding:8px 12px;box-shadow:0 2px 12px var(--shadow);min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:7px}.label-panel h3,.label-hint{display:none}.label-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:row;flex-wrap:wrap;gap:7px}.clear-all-btn{padding:6px 10px;background:none;border:1px solid #e5a0a0;border-radius:8px;cursor:pointer;font-size:.78rem;line-height:1.5;color:#c0392b;transition:border-color .1s,background .1s}.clear-all-btn:hover{background:#fff5f5;border-color:#c0392b}.add-label-btn{padding:0 10px;background:none;border:1px dashed var(--border);border-radius:8px;cursor:pointer;font-size:.78rem;color:var(--text-muted);line-height:1;align-self:stretch;transition:border-color .1s,color .1s}.add-label-btn:hover{border-color:var(--text);color:var(--text)}.label-item{border-radius:8px;transition:background .1s;position:relative}.label-item.selected .label-row{background:var(--surface-3);outline:2px solid #4a90d9}.label-row{display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:8px;cursor:pointer;border:1px solid var(--border-light);transition:background .1s;user-select:none;-webkit-user-select:none}.label-row:hover{background:var(--surface-2)}.label-dot{width:14px;height:14px;border-radius:3px;flex-shrink:0}.label-name{flex:1;font-size:.78rem;color:var(--text);user-select:none;-webkit-user-select:none}.label-count{margin-left:4px;font-size:.72rem;color:var(--text-muted)}.total-count{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.label-edit-form{position:absolute;top:calc(100% + 6px);left:0;z-index:200;padding:10px 12px;display:flex;flex-direction:column;gap:10px;border:1px solid #4a90d9;border-radius:8px;background:var(--surface);box-shadow:0 4px 20px var(--shadow-md);min-width:200px}.label-name-input{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;outline:none;background:var(--surface);color:var(--text)}.label-name-input:focus{border-color:#4a90d9}.color-swatches{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform .1s}.swatch.active{border-color:var(--text-dark);transform:scale(1.2)}.swatch:hover{transform:scale(1.15)}.color-picker{width:28px;height:28px;border:none;border-radius:50%;cursor:pointer;padding:0;background:none}.edit-actions{display:flex;gap:8px}.move-btn{display:flex;align-items:center;justify-content:center;padding:5px 8px;background:var(--surface-2);color:var(--text-dark);border:1px solid var(--border);border-radius:5px;cursor:pointer;transition:background .1s}.move-btn:hover:not(:disabled){background:var(--border-light)}.move-btn:disabled{opacity:.3;cursor:not-allowed}.save-btn{padding:5px 14px;background:var(--surface-2);color:var(--text-dark);border:1px solid var(--border);border-radius:5px;cursor:pointer;font-size:.82rem;font-weight:600;transition:background .1s}.save-btn:hover{background:var(--border-light)}.cancel-btn{padding:5px 14px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:5px;cursor:pointer;font-size:.82rem}.cancel-btn:hover{background:var(--surface-2)}.delete-btn{padding:5px 14px;background:var(--surface);color:#e53e3e;border:1px solid #e53e3e;border-radius:5px;cursor:pointer;font-size:.82rem;margin-left:auto}.delete-btn:hover{background:#fff5f5}.calendar-month{background:var(--surface);border-radius:10px;padding:clamp(6px,3cqi,16px);box-shadow:0 2px 12px var(--shadow);min-width:0;width:100%;container-type:inline-size}.month-header{text-align:center;font-weight:700;font-size:clamp(.75rem,4cqi,1.1rem);color:var(--text-dark);margin-bottom:clamp(4px,2cqi,12px)}.day-names{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:clamp(.75rem,4cqi,1.1rem);font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-bottom:clamp(2px,1.5cqi,6px)}.day-grid{display:grid;grid-template-columns:repeat(7,1fr)}.day-cell-wrap{position:relative;width:100%;padding-bottom:100%}.day-cell{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(.75rem,4cqi,1.1rem);border:none;background:none;cursor:default;color:var(--text);transition:background .1s;padding:0;font-family:inherit;border-radius:0;user-select:none;-webkit-user-select:none}.day-cell.empty{background:none}.day-cell.out-range{color:var(--out-range-color);background:var(--out-range-bg)}.day-cell.clickable{cursor:pointer}.day-cell.clickable:hover:not([style*=background]){background:var(--surface-3)}.day-cell.clickable[style]:hover{opacity:.85}.calendar-picker{position:relative}.calendar-picker-btn{display:flex;align-items:center;gap:6px;padding:0 8px;height:32px;box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:.85rem;color:var(--text);font-weight:400;transition:border-color .15s;white-space:nowrap}.calendar-picker-btn:hover{border-color:var(--text-muted)}.calendar-caret{opacity:.5;flex-shrink:0}.calendar-dropdown{position:absolute;top:calc(100% + 6px);left:0;background:var(--surface);border:1px solid var(--border);border-radius:9px;box-shadow:0 4px 20px var(--shadow-md);min-width:280px;z-index:100;overflow:hidden}.calendar-list{list-style:none;margin:0;padding:6px;display:flex;flex-direction:column;gap:2px}.calendar-item{display:flex;align-items:center;gap:6px;border-radius:6px;padding:2px 4px;transition:background .1s}.calendar-item:hover{background:var(--surface-2)}.calendar-item.active{background:var(--surface-3)}.calendar-item-name{flex:1;padding:3px 8px;cursor:pointer;font-size:.88rem;color:var(--text);border-radius:5px;user-select:none;-webkit-user-select:none}.rename-input{flex:1;padding:5px 8px;border:1px solid #4a90d9;border-radius:5px;font-size:.88rem;outline:none;font-family:inherit;background:var(--surface);color:var(--text)}.cal-rename-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px 5px;border-radius:4px;display:flex;align-items:center;transition:color .1s;line-height:1}.cal-rename-btn:hover{color:var(--text-dark)}.cal-delete-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px 5px;border-radius:4px;display:flex;align-items:center;transition:color .1s;line-height:1}.cal-delete-btn:hover:not(:disabled){color:#e53e3e}.cal-delete-btn:disabled{opacity:.2;cursor:not-allowed}.new-calendar-btn{width:100%;padding:9px 14px;background:none;border:none;border-top:1px solid var(--border-light);cursor:pointer;font-size:.88rem;color:#4a90d9;text-align:left;font-weight:500;transition:background .1s;font-family:inherit}.new-calendar-btn:hover{background:var(--surface-2)}@media(max-width:600px){.calendar-picker-btn{font-size:.78rem;padding:5px 8px}}.app-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:1rem;color:var(--text-muted)}.app{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.sticky-top{position:sticky;top:0;z-index:10;background:var(--bg)}.app-header{background:var(--surface);box-shadow:0 1px 6px var(--shadow)}.header-inner{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px max(20px,4vw);box-sizing:border-box}.header-spacer{flex:1}.header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.app-title{font-size:1.6rem;font-weight:800;color:var(--text-dark);margin:0;letter-spacing:-.02em}.header-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:1;flex-shrink:0;position:relative}.download-btn{display:flex;align-items:center;gap:5px;background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 10px;line-height:1;color:var(--text-muted);transition:background .1s,color .1s,border-color .1s;font-family:inherit;white-space:nowrap}.download-btn:hover{background:var(--surface-2);color:var(--text);border-color:var(--text-muted)}.theme-toggle{display:flex;align-items:center;background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;padding:6px 8px;line-height:1;color:var(--text-muted);transition:background .1s}.theme-toggle:hover{background:var(--surface-2)}.avatar{width:30px;height:30px;border-radius:50%;border:2px solid var(--border);cursor:pointer;transition:opacity .15s}.avatar:hover{opacity:.85}.user-menu{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:9px;box-shadow:0 4px 20px var(--shadow-md);min-width:160px;overflow:hidden;z-index:100}.user-menu-name{padding:10px 14px;font-size:.82rem;color:var(--text-muted);border-bottom:1px solid var(--border-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-signout{width:100%;padding:10px 14px;background:none;border:none;cursor:pointer;font-size:.88rem;color:var(--text);text-align:left;transition:background .1s;font-family:inherit}.user-menu-signout:hover{background:var(--surface-2)}.app-main{display:flex;flex-direction:column;gap:8px;padding:10px max(10px,4vw);min-width:0;max-width:1000px;margin:0 auto;width:100%;box-sizing:border-box;overflow:visible}.sidebar{width:100%;max-width:1000px;margin:0 auto;padding:6px max(10px,4vw);box-sizing:border-box}.range-error{color:#e53e3e;font-size:.88rem;padding:12px 0;margin:0}.calendar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(180px,100%),1fr));gap:16px;min-width:0;overflow:hidden}@media(max-width:600px){.header-inner{padding:8px 14px}.app-title{font-size:1.1rem}}@media(max-width:500px){.app-main{padding:10px;gap:10px}.calendar-grid{grid-template-columns:1fr 1fr;gap:10px}}@media(max-width:360px){.calendar-grid{grid-template-columns:1fr}}
