:root{--bg: #f6f6f3;--surface: #ffffff;--line: #e7e6e1;--line-soft: #efeeea;--ink: #0e1116;--ink-2: #3a4047;--ink-3: #6b7280;--accent: #2c5cff;--on-accent: #ffffff;--accent-2: #16a34a;--green: #16a34a;--green-soft: #e7f6ec;--amber: #b45309;--amber-soft: #fdf3e0;--red: #c0362c;--red-soft: #fbe9e6;--font: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}.screen{min-height:100vh;min-height:100dvh;width:100%;max-width:480px;margin:0 auto;padding:16px;padding-top:calc(16px + env(safe-area-inset-top,0px));padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:14px}.screen.center{justify-content:center}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}.card.narrow{width:100%}.card p{margin:0}.h1{font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0}.h2{font-size:16px;font-weight:600;margin:0}.greeting{padding:4px 2px}.muted{color:var(--ink-3)}.hint{color:var(--ink-3);font-size:13.5px;text-align:center}.brand{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding-bottom:4px}.gym-logo{border-radius:14px;object-fit:contain;background:var(--surface)}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;color:var(--ink-2)}.field small{font-weight:400}.field input{width:100%;min-height:48px;padding:10px 12px;font:inherit;font-size:16px;font-weight:400;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;outline:none}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.field input:disabled{background:var(--line-soft)}.input-row{display:flex;align-items:center;gap:8px}.input-row input{flex:1;min-width:0}.btn{min-height:48px;padding:0 16px;font:inherit;font-size:16px;font-weight:600;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);cursor:pointer}.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.btn.block{width:100%}.btn:disabled{opacity:.6;cursor:default}.link{min-height:44px;padding:0 4px;font:inherit;font-size:15px;font-weight:500;color:var(--accent);background:none;border:0;cursor:pointer}.center-link{align-self:center}.error{margin:0;padding:10px 12px;font-size:14.5px;color:var(--red);background:var(--red-soft);border-radius:10px}.notice{padding:10px 12px;font-size:14.5px;color:var(--amber);background:var(--amber-soft);border-radius:10px}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.topbar{display:flex;align-items:center;gap:10px;padding-bottom:4px}.topbar-name{flex:1;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap}.badge.green{color:var(--green);background:var(--green-soft)}.badge.amber{color:var(--amber);background:var(--amber-soft)}.badge.red{color:var(--red);background:var(--red-soft)}.dots{display:flex;gap:6px;margin-top:8px}.dot{flex:1;height:8px;border-radius:4px;background:var(--line)}.dot.on{background:var(--accent)}.spinner-wrap{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2.4s}}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;background:#000;color:#fff;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}.viewer-bar{display:flex;align-items:center;gap:10px;padding:6px 12px;padding-left:calc(12px + env(safe-area-inset-left,0px));padding-right:calc(12px + env(safe-area-inset-right,0px));background:#141414eb}header.viewer-bar{padding-top:calc(6px + env(safe-area-inset-top,0px))}footer.viewer-bar{padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));justify-content:space-between}.viewer-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;text-align:center}.viewer-count{font-variant-numeric:tabular-nums;color:#d1d5db;min-width:56px;text-align:right}.viewer-hint{color:#9ca3af;font-size:13px}.viewer-btn{min-height:44px;min-width:44px;padding:0 12px;font:inherit;font-size:15px;font-weight:600;color:#fff;background:transparent;border:1px solid #4b5563;border-radius:10px;cursor:pointer}.viewer-btn:disabled{opacity:.35;cursor:default}.viewer-rotate{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:14px;color:#111;background:#fde68a}.viewer-rotate span{flex:1}.viewer-x{min-width:44px;min-height:36px;font-size:22px;line-height:1;color:#111;background:none;border:0;cursor:pointer}.viewer-stage{position:relative;flex:1;min-height:0;overflow:hidden}.viewer-status{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center}.viewer-status p{margin:0;max-width:320px}.viewer-status .spinner-wrap .muted{color:#9ca3af}.zoom-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;cursor:grab}.zoom-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-origin:50% 50%;will-change:transform}.viewer-img{max-width:100%;max-height:100%;object-fit:contain;pointer-events:none;-webkit-user-drag:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media (orientation: landscape) and (max-height: 500px){.viewer-bar{padding-top:2px;padding-bottom:2px}header.viewer-bar{padding-top:calc(2px + env(safe-area-inset-top,0px))}footer.viewer-bar{padding-bottom:calc(2px + env(safe-area-inset-bottom,0px))}.viewer-btn{min-height:40px}.viewer-hint{display:none}}.routine-pages{font-weight:400;opacity:.85}
