:root{--blue: #2563eb;--blue-dark: #1d4ed8;--blue-soft: #eef3ff;--bg: #f4f5f8;--card: #ffffff;--text: #141a25;--muted: #6c7689;--line: #e8eaf0;--green: #0c8a43;--green-bg: #e6f6ec;--amber: #a96a06;--amber-bg: #fdf1da;--red: #d23b32;--red-bg: #fde8e6;--shadow-card: 0 1px 2px rgba(18, 28, 45, .04), 0 2px 8px rgba(18, 28, 45, .06);--shadow-pop: 0 6px 24px rgba(18, 28, 45, .14);--r-lg: 16px;--r-md: 12px;--r-sm: 9px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}.app{max-width:560px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.appbar{position:sticky;top:0;z-index:10;background:linear-gradient(135deg,#2f73ee,#1d4ed8);color:#fff;padding:13px 16px;padding-top:calc(13px + env(safe-area-inset-top));display:flex;align-items:center;gap:10px;box-shadow:0 2px 12px #1d4ed838}.appbar h1{font-size:17px;margin:0;font-weight:650;letter-spacing:-.2px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar .sub{font-size:12px;opacity:.82;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar button.link{background:#ffffff29;color:#fff;border:0;border-radius:var(--r-sm);padding:8px 13px;font-size:13px;font-weight:500}.appbar button.link:active{background:#ffffff47}.back{background:#ffffff29;color:#fff;border:0;border-radius:var(--r-sm);width:36px;height:36px;font-size:20px;line-height:1;flex:none}.back:active{background:#ffffff47}.content{flex:1;padding:14px 14px 84px}.card{background:var(--card);border-radius:var(--r-lg);padding:15px;margin-bottom:12px;box-shadow:var(--shadow-card)}.card.tap{cursor:pointer;transition:transform .08s ease,box-shadow .08s ease}.card.tap:active{transform:scale(.985);box-shadow:var(--shadow-card)}.row{display:flex;justify-content:space-between;gap:10px}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:11.5px}.title{font-weight:650;font-size:15px;letter-spacing:-.2px;margin-bottom:4px}.kv{margin:9px 0}.kv:first-of-type{margin-top:2px}.kv .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px;margin-bottom:1px}.kv .v{font-size:15px}.pill{display:inline-block;font-size:11.5px;padding:3px 10px;border-radius:999px;background:#eef0f4;color:var(--muted);font-weight:600;white-space:nowrap}.pill.green{background:var(--green-bg);color:var(--green)}.pill.amber{background:var(--amber-bg);color:var(--amber)}.pill.red{background:var(--red-bg);color:var(--red)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.overdue{color:var(--red);font-weight:600}.bottomnav{position:fixed;bottom:0;left:0;right:0;max-width:560px;margin:0 auto;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom)}.bottomnav a{flex:1;text-align:center;padding:9px 0 11px;color:var(--muted);text-decoration:none;font-size:11.5px;font-weight:500;transition:color .12s}.bottomnav a .ico{font-size:21px;display:block;margin-bottom:1px;filter:grayscale(.6) opacity(.7)}.bottomnav a.active{color:var(--blue);font-weight:650}.bottomnav a.active .ico{filter:none}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:500;color:var(--muted);margin-bottom:6px}input[type=text],input[type=tel],input[type=email],input[type=password],input[type=date],input[type=number],select{width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:var(--r-md);font-size:16px;background:#fff;color:var(--text);transition:border-color .12s,box-shadow .12s}input:focus,select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #2563eb21}.pw-wrap{position:relative}.pw-wrap input{padding-right:84px}.pw-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--blue);font-size:13px;font-weight:600;padding:8px 9px}.pw-toggle:active{opacity:.6}button.danger{width:100%;padding:13px;background:var(--red);color:#fff;border:0;border-radius:var(--r-md);font-size:16px;font-weight:650;transition:filter .12s,transform .06s}button.danger:active{filter:brightness(.92);transform:scale(.99)}button.danger:disabled{opacity:.5}.btn-row{display:flex;gap:10px}.btn-row>button{flex:1}.kv-row2{display:flex;gap:14px}.kv-row2>.kv{flex:1;min-width:0}.filerow{display:flex;align-items:center;gap:10px;width:100%;background:#f4f5f8;border:0;border-radius:var(--r-md);padding:11px 12px;margin-top:8px;text-align:left}.filerow:active{background:#e9ebf1}.filerow .filename{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-head .m{font-weight:650;font-size:15px;text-transform:capitalize}.cal-nav{background:var(--blue-soft);color:var(--blue);border:0;border-radius:var(--r-sm);width:34px;height:34px;font-size:18px;line-height:1}.cal-nav:active{background:#dde7fd}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-wd{text-align:center;font-size:10.5px;color:var(--muted);font-weight:600;padding:2px 0 4px}.cal-day{aspect-ratio:1;border:0;background:#f4f5f8;border-radius:var(--r-sm);font-size:14px;color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.cal-day.empty{background:transparent}.cal-day.today{outline:2px solid var(--blue);outline-offset:-2px}.cal-day.has{background:var(--blue-soft);color:var(--blue);font-weight:650}.cal-day.trip{box-shadow:inset 0 -3px 0 var(--green)}.cal-day.sel{background:var(--blue);color:#fff}.cal-legend{display:flex;gap:18px;justify-content:center;margin-top:10px;font-size:11.5px;color:var(--muted)}.cal-legend i.dot{display:inline-block;width:9px;height:9px;border-radius:999px;margin-right:5px;vertical-align:middle}.cal-legend i.dot.blue{background:var(--blue)}.cal-legend i.dot.green{background:var(--green)}.cal-day .cnt{font-size:9.5px;font-weight:700;background:currentColor;border-radius:999px;min-width:14px;height:14px;display:flex;align-items:center;justify-content:center}.cal-day .cnt span{color:#fff}.cal-day.sel .cnt span{color:var(--blue)}.cal-item{display:block;width:100%;text-align:left;background:#f4f5f8;border:0;border-radius:var(--r-md);padding:10px 12px;margin-top:8px}.cal-item:active{background:#e9ebf1}.cal-item .num{font-weight:650;font-size:14px}.cal-item .addr{font-size:13px;color:var(--muted);margin-top:2px}button.primary{width:100%;padding:13px;background:var(--blue);color:#fff;border:0;border-radius:var(--r-md);font-size:16px;font-weight:650;letter-spacing:-.1px;box-shadow:0 2px 8px #2563eb47;transition:background .12s,transform .06s}button.primary:active{background:var(--blue-dark);transform:scale(.99)}button.primary:disabled{opacity:.5;box-shadow:none}button.secondary-btn{background:var(--blue-soft);color:var(--blue);border:0;border-radius:var(--r-md);padding:12px 13px;font-size:15px;font-weight:600;transition:background .12s}button.secondary-btn:active{background:#dde7fd}button.secondary-btn:disabled{opacity:.5}button.link-danger{background:none;border:0;color:var(--red);font-size:13px;font-weight:500;padding:2px 4px}.error{background:var(--red-bg);color:var(--red);border-radius:var(--r-md);padding:11px 13px;font-size:14px;margin-bottom:12px;font-weight:500}.login-wrap{min-height:100%;display:flex;flex-direction:column;justify-content:center;padding:28px 22px;max-width:420px;margin:0 auto}.login-logo{text-align:center;margin-bottom:28px}.login-logo .badge{width:66px;height:66px;border-radius:19px;background:linear-gradient(135deg,#2f73ee,#1d4ed8);color:#fff;font-size:27px;font-weight:750;letter-spacing:.5px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:0 8px 22px #1d4ed857}.login-logo h2{margin:0;font-size:21px;font-weight:700;letter-spacing:-.3px}.login-logo p{margin:5px 0 0;color:var(--muted);font-size:13px}.login-wrap .card{box-shadow:var(--shadow-card)}altcha-widget{width:100%;margin-bottom:14px;--altcha-border-radius: 12px;--altcha-border-width: 1.5px;--altcha-max-width: 100%}.center-muted{text-align:center;color:var(--muted);padding:40px 16px}a.textlink{color:var(--blue);text-decoration:none;font-weight:600}a.textlink:active{opacity:.7}
