:root{--bg:#edf5f4;--surface:#f7fcfbe0;--surface-strong:#fcfffe;--text:#18313a;--muted:#68808a;--line:#4f748029;--accent:#4d9d96;--accent-soft:#4d9d9624;--danger:#e08d7e;--danger-soft:#e08d7e24;--shadow:0 24px 80px #6f9aa524;--radius-lg:28px;--radius-md:18px;--radius-sm:12px;--font-body:"Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-display:"Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif}*{box-sizing:border-box}html{background:radial-gradient(circle at 0 0,#81cbc247,#0000 30%),radial-gradient(circle at 100% 100%,#c5e0e857,#0000 28%),linear-gradient(#f5fbfb 0%,#e8f1f2 100%);min-height:100%}body{color:var(--text);font-family:var(--font-body);min-height:100vh;margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}.shell{min-height:100vh;padding:32px;overflow-x:clip}.panel{background:var(--surface);width:min(1100px,100%);box-shadow:var(--shadow);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffffb8;margin:0 auto}.hero{gap:24px;padding:32px;display:grid}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:12px}.title{font-family:var(--font-display);margin:0;font-size:clamp(2.4rem,5vw,4.8rem);font-weight:600;line-height:.95}.subtitle{max-width:52ch;color:var(--muted);margin:0;font-size:1rem;line-height:1.7}.grid{gap:24px;display:grid}.auth-layout{place-items:center;min-height:100vh;padding:32px;display:grid}.auth-card,.card{background:var(--surface-strong);border:1px solid var(--line);border-radius:var(--radius-md);padding:24px;box-shadow:0 12px 40px #6f9aa51a}.auth-card{width:min(520px,100%)}.auth-card form,.stack{gap:16px;display:grid}.field{gap:8px;display:grid}.label{color:var(--muted);font-size:.92rem}.input,.select{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;color:var(--text);background:#fff;padding:12px 14px}.endpoint-row{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;display:grid}.endpoint-input{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;min-width:0;color:var(--text);background:#f8fdfdeb;padding:8px 10px}.button-row{flex-wrap:wrap;gap:12px;display:flex}.button,.ghost-button,.danger-button{border:0;border-radius:999px;padding:11px 18px;transition:transform .16s,box-shadow .16s,background .16s}.button:hover,.ghost-button:hover,.danger-button:hover{transform:translateY(-1px)}.button{color:#f7fffd;background:linear-gradient(135deg,#5aaea2 0%,#4d9d96 100%);box-shadow:0 10px 24px #4d9d963d}.ghost-button{color:var(--text);background:#80aab51f}.icon-button{place-items:center;width:42px;height:42px;padding:0;display:grid}.icon-button svg{fill:currentColor;width:20px;height:20px}.danger-button{color:#fffdfc;background:linear-gradient(135deg,#e6a194 0%,#dc8d7f 100%);box-shadow:0 10px 24px #e08d7e38}.message{border-radius:var(--radius-sm);padding:12px 14px;font-size:.95rem}.message.error{color:#9f5f55;background:#e08d7e24}.message.success{color:#3a827b;background:#4d9d9624}.floating-notice{z-index:1000;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:var(--text);opacity:0;visibility:hidden;pointer-events:none;text-align:center;background:#fcffffe6;border:1px solid #80aab533;border-radius:999px;max-width:min(90vw,420px);padding:12px 18px;font-size:.95rem;transition:opacity .22s,transform .22s,visibility .22s;position:fixed;top:25vh;left:50%;transform:translate(-50%,-18px);box-shadow:0 18px 44px #6f9aa529}.floating-notice.visible{opacity:1;visibility:visible;transform:translate(-50%)}.topbar{justify-content:space-between;align-items:flex-start;gap:20px;padding:32px 32px 0;display:flex}.topbar h1,.section-title{font-family:var(--font-display);margin:0}.topbar p,.meta{color:var(--muted);margin:6px 0 0}.topbar-actions{align-items:center;gap:14px;display:flex}.account-menu{position:relative}.account-trigger{width:48px;height:48px;color:var(--muted);background:#fbffffe0;border:1px solid #80aab538;border-radius:999px;place-items:center;transition:transform .16s,box-shadow .16s,color .16s,background .16s;display:grid;box-shadow:0 10px 30px #6f9aa51f}.account-trigger:hover,.account-menu.open .account-trigger{color:var(--accent);background:#f5fdfcf5;transform:translateY(-1px);box-shadow:0 14px 34px #6f9aa529}.account-trigger svg{fill:currentColor;width:22px;height:22px}.account-dropdown{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);opacity:0;visibility:hidden;background:#fcfffff5;border:1px solid #80aab52e;border-radius:16px;gap:4px;min-width:164px;padding:8px;transition:opacity .16s,transform .16s,visibility .16s;display:grid;position:absolute;top:calc(100% + 10px);right:0;transform:translateY(-6px);box-shadow:0 18px 44px #6f9aa529}.account-menu:hover .account-dropdown,.account-menu.open .account-dropdown{opacity:1;visibility:visible;transform:translateY(0)}.account-item{width:100%;color:var(--text);text-align:left;background:0 0;border:0;border-radius:12px;align-items:center;padding:11px 12px;font-size:.95rem;display:flex}.account-item:hover{background:#80aab51f}.account-item.danger{color:var(--danger)}.account-item.danger:hover{background:#e08d7e1f}.dashboard{gap:24px;padding:24px 32px 32px;display:grid}.overview{grid-template-columns:1fr;gap:16px;display:grid}.overview .card{width:100%;min-height:0}.compact-card{gap:8px;padding:14px 16px}.compact-card .meta{margin-top:0;line-height:1.35}.compact-card .ghost-button{padding:8px 14px}.calendar-frame{gap:16px;display:grid}.calendar-toolbar{gap:12px;display:grid}.calendar-nav{justify-content:center;display:flex}.calendar-title-group{align-items:center;gap:10px;display:inline-flex}.calendar-title-button{color:var(--text);background:0 0;border:0;padding:0}.calendar-title-button .section-title,.calendar-inline-select{text-align:center;min-width:70px}.calendar-inline-select{border:1px solid var(--line);color:var(--text);font:inherit;appearance:none;background:#f8fdfdf5;border-radius:12px;padding:8px 28px 8px 10px;font-weight:600}.calendar-inline-select.month{min-width:62px}.calendar-separator{color:var(--muted);font-size:1.15rem;font-weight:600}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;display:grid}.weekday{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;padding:0 4px;font-size:.85rem}.weekday-control{text-transform:none;letter-spacing:0;background:#f8fdfdb3;border:1px solid #0000;border-radius:16px;justify-items:center;gap:8px;padding:10px 8px 14px;display:grid}.weekday-control.active{border-color:#4d9d9638;box-shadow:inset 0 0 0 1px #4d9d9624}.weekday-label{font-size:1rem;font-weight:600}.weekday-toggle{align-items:center;gap:8px;font-size:.9rem;display:inline-flex}.weekday-toggle-text{color:var(--muted)}.weekday-control input[type=checkbox]{accent-color:var(--accent);block-size:18px;inline-size:18px}.day-card{border:1px solid var(--line);background:#fbffffe6;border-radius:22px;place-items:center;gap:8px;min-width:0;min-height:84px;padding:12px;display:grid;position:relative}.day-card.blank{visibility:hidden}.day-card.disabled{opacity:.45}.day-card.status-on{background:linear-gradient(#d8f5ebfa,#ecfcf6),#fff;border-color:#4d9d9657}.day-card.status-off{background:linear-gradient(#fff3f0fa,#fffaf8),#fff;border-color:#e08d7e52}.day-header{place-items:center;display:grid}.day-source-hint{color:var(--muted);font-size:.72rem;line-height:1;display:none;position:absolute;top:8px;right:10px}.day-number{font-size:2.5rem;font-family:var(--font-display);line-height:1}.day-toggle{color:var(--muted);align-items:center;gap:8px;font-size:.85rem;display:inline-flex}.day-toggle input[type=checkbox]{accent-color:var(--accent);block-size:16px;inline-size:16px}.day-toggle-label{line-height:1}.mono{word-break:break-all;font-family:SFMono-Regular,Consolas,monospace;font-size:.92rem}@media (max-width:980px){.shell{padding:20px}.panel{border-radius:22px}.topbar,.topbar-actions{align-items:stretch}.topbar{flex-direction:column;gap:16px;padding:24px 24px 0}.topbar h1{font-size:1.9rem}.topbar-actions{justify-content:flex-end}.dashboard{gap:20px;padding:20px 24px 24px}.endpoint-row{grid-template-columns:minmax(0,1fr) auto auto}.overview{grid-template-columns:1fr}.calendar-nav{justify-content:center}.calendar-title-group{gap:8px}.calendar-inline-select{min-width:64px;padding:7px 24px 7px 8px}.calendar-inline-select.month{min-width:56px}.calendar-grid{gap:10px}.weekday-control{gap:6px;padding:8px 6px 10px}.weekday-label{font-size:.9rem}.weekday-toggle{gap:6px;font-size:.82rem}.weekday-control input[type=checkbox]{block-size:16px;inline-size:16px}.day-card{border-radius:18px;min-height:76px;padding:10px 8px}.day-number{font-size:2rem}.day-toggle{gap:6px;font-size:.78rem}.day-toggle input[type=checkbox]{block-size:15px;inline-size:15px}}@media (max-width:640px){.shell{padding:12px}.panel{border-radius:18px}.topbar{gap:12px;padding:18px 16px 0}.topbar h1{font-size:1.55rem;line-height:1.05}.topbar p{font-size:.92rem}.account-trigger{width:42px;height:42px}.dashboard{gap:16px;padding:16px}.card,.auth-card{padding:16px}.compact-card{gap:6px;padding:12px}.compact-card .meta{font-size:.88rem}.endpoint-row{grid-template-columns:1fr 1fr;gap:8px}.endpoint-input{grid-column:1/-1;padding:8px 9px;font-size:.84rem}.compact-card .ghost-button,.ghost-button{padding:8px 10px;font-size:.84rem}.floating-notice{max-width:calc(100vw - 32px);padding:10px 14px;font-size:.88rem;top:22vh}.calendar-frame{gap:12px}.calendar-toolbar{gap:10px}.calendar-nav{scrollbar-width:none;justify-content:flex-start;padding-bottom:2px;overflow-x:auto}.calendar-nav::-webkit-scrollbar{display:none}.calendar-title-group{gap:6px;margin:0 auto}.icon-button{width:34px;height:34px}.icon-button svg{width:16px;height:16px}.calendar-title-button .section-title{min-width:52px;font-size:1.15rem}.calendar-inline-select{min-width:52px;padding:6px 20px 6px 8px;font-size:.92rem}.calendar-inline-select.month{min-width:46px}.calendar-grid{gap:6px}.weekday-control{border-radius:12px;gap:4px;padding:6px 4px 8px}.weekday-label{font-size:.76rem;line-height:1}.weekday-toggle{gap:0}.weekday-toggle-text{display:none}.weekday-control input[type=checkbox]{block-size:14px;inline-size:14px}.day-card{border-radius:14px;gap:6px;min-height:64px;padding:8px 4px}.day-number{font-size:1.45rem}.day-toggle{flex-direction:column;gap:2px;font-size:.68rem}.day-toggle input[type=checkbox]{block-size:14px;inline-size:14px}}
