*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#fafafa;color:#111}a{color:inherit}input,select,button,textarea{font:inherit;padding:10px 12px;border:1px solid #dcdcdc;border-radius:12px;background:#fff}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.ui-shell{min-height:100dvh;background:#f6f7fb;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.ui-range{display:inline-block;margin:0 0 14px;padding:6px 14px;border-radius:999px;background:#1118270f;font-size:13px;font-weight:600;color:#334155;letter-spacing:.2px}.ui-topbar{position:sticky;top:0;z-index:10;padding:12px 16px;background:#fffc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid #e9e9ef;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.ui-topbar-center{justify-self:center}.ui-topbar-right{justify-self:end;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.room-seg{display:flex;gap:10px;padding:6px;border-radius:16px;background:#f3f4f6;border:1px solid #e5e7eb}.room-btn{min-width:150px;padding:12px 18px;border-radius:14px;border:1px solid #e5e7eb;background:#fff;font-size:14px;font-weight:900;color:#111827;cursor:pointer;transition:all .15s ease}.room-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px #1118271a}.room-btn.on{color:#fff!important;border-color:transparent;box-shadow:0 14px 34px #1118272e}.room-a.on{background:#3b82f6f2}.room-b.on{background:#22c55eeb}.ui-nav{display:flex;gap:8px;align-items:center}.nav-btn{height:44px;min-width:50px;padding:0 14px;border-radius:14px;border:1px solid #ddd;background:#fff;font-weight:900;display:flex;align-items:center;justify-content:center;white-space:nowrap}.nav-today{min-width:110px;padding:0 22px;font-size:14px}.ui-main{padding:16px}.grid-wrap{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 8px 30px #11182714;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.grid2{display:grid;grid-template-columns:56px repeat(5,1fr);grid-template-rows:56px repeat(var(--rows),42px);position:relative;min-width:520px}.corner2,.day-head2,.time-cell2{background:#fff;border-bottom:1px solid #eef0f3}.corner2{border-right:1px solid #eef0f3}.day-head2{border-left:1px solid #eef0f3;padding:8px 10px}.day-name{font-weight:800;font-size:14px}.day-date{font-size:11px;color:#6b7280;margin-top:2px}.time-cell2{display:flex;align-items:center;justify-content:center;padding:0;border-right:1px solid #eef0f3;font-size:11px;color:#475569;line-height:1}.slot2{border:1px solid #eef0f3;border-left:none;border-top:none;background:transparent;cursor:pointer}.slot2.free:hover{background:#f3f4f6}.slot2.busy{cursor:not-allowed}.event2{z-index:5;width:calc(100% - 8px);height:calc(100% - 8px);margin:4px;border-radius:10px;border:1px solid rgba(17,24,39,.12);padding:6px 8px;display:flex;align-items:center;cursor:pointer;font-size:10px}.block-title{font-weight:800;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-personal{background:#3b82f629;border-color:#3b82f652}.cat-lab{background:#22c55e29;border-color:#22c55e52}.event-skeleton{border:0;background:linear-gradient(90deg,#e2e8f0b3,#f1f5f9f2,#e2e8f0b3);background-size:200% 100%;animation:skeleton-shimmer 1.2s linear infinite}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172a2e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.loading-card{min-width:160px;padding:18px 20px;border-radius:18px;background:#fffffff5;border:1px solid rgba(226,232,240,.95);box-shadow:0 18px 50px #0f172a29;display:flex;flex-direction:column;align-items:center;gap:12px}.loading-spinner{width:34px;height:34px;border-radius:999px;border:3px solid rgba(148,163,184,.28);border-top-color:#2563eb;animation:spin .8s linear infinite}.loading-text{font-size:14px;font-weight:800;color:#0f172a;letter-spacing:.1px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.seg2{display:flex;gap:8px;width:100%}.seg2 button{flex:1;padding:10px 12px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;font-weight:800;transition:all .15s ease}.seg2 button:hover{transform:translateY(-1px);box-shadow:0 6px 18px #11182714}.seg2 button.on{border-color:transparent;color:#fff;box-shadow:0 10px 28px #0000002e}.seg2 button.on:first-child{background:#3b82f6f2}.seg2 button.on:last-child{background:#22c55ef2}.seg2 button.on:after{content:" ✓";font-size:12px}.panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;justify-content:center;align-items:flex-end;padding:14px;z-index:50}.panel{width:min(520px,100%);background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 16px 40px #00000040}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid #eee}.panel-title{font-weight:800}.panel-x{border:0;background:transparent;cursor:pointer}.panel-body{padding:14px;display:flex;flex-direction:column;gap:12px}.panel-row{display:grid;grid-template-columns:80px 1fr;gap:10px;align-items:center}.label{font-size:12px;color:#666}.field{width:100%;border:1px solid #ddd;border-radius:12px;padding:10px 12px}.panel-actions{display:flex;justify-content:flex-end;gap:8px}.ui-btn{border:1px solid #ddd;background:#fff;border-radius:12px;padding:8px 12px;font-weight:800}.ui-btn.primary{background:#111827;color:#fff;border-color:#111827}.ui-alert{margin:12px 16px;padding:10px 12px;border:1px solid #ffd4d4;background:#fff5f5;border-radius:12px;color:#8a0000}@media (max-width:520px){.ui-topbar{grid-template-columns:1fr;justify-items:center;text-align:center}.ui-topbar-center,.ui-topbar-right{justify-self:center}.room-btn{width:50%;min-width:0;font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}.grid2{min-width:0;width:100%;grid-template-columns:52px repeat(5,minmax(56px,1fr))}.time-cell2{font-size:10px}.day-name{font-size:13px}.day-date{font-size:10px}.ui-range{font-size:12px;padding:5px 12px}}
