*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-webkit-overflow-scrolling:touch}
:root{
  --ice-primary:#4a9fc7;
  --ice-primary-dark:#2a7faf;
  --ice-card-bg:rgba(255,255,255,0.95);
  --ice-border:rgba(74,160,200,0.18);
  --ice-shadow:rgba(30,80,140,0.20);
  --ice-text-main:#1a4a6a;
  --ice-text-sub:#1a4a6a;
  --ice-text-muted:#1a4a6a;
  --ice-danger:#e74c3c;
  --ice-warning:#f39c12;
  --ice-info:#2e86de;
  --ice-success:#2ecc71;
  --font-family:'Inter','Segoe UI',sans-serif;
  --radius-card:40px;
  --radius-panel:20px;
  --radius-field:12px;
  --radius-btn:30px;
  --transition-speed:0.22s;
  --theme-gradient:linear-gradient(to right, #4CAF50, #8BC34A);
  --bubble-bg:#eaf4fb;
  --bubble-bg-light:#f4fafd;
  --bubble-text:#1a4a6a;
  --bubble-border:1px solid rgba(74,160,200,0.30);
  --bubble-shadow:0 4px 16px rgba(74,160,200,0.18);
}
html{height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--font-family);font-size:16px;min-height:100vh;background:var(--theme-gradient);background-attachment:fixed;padding:10px;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.calc-app{width:100%;min-height:calc(100vh - 20px);background:var(--ice-card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:var(--radius-card);padding:16px 22px 22px;position:relative;display:flex;flex-direction:column;gap:0;transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);will-change:backdrop-filter;isolation:isolate;border:1px solid rgba(139,195,74,0.35);box-shadow:0 30px 80px rgba(30,80,140,0.20)}
.calc-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;border-bottom:2px solid rgba(74,160,200,0.20);margin-bottom:.8rem;flex-shrink:0}
.calc-header__brand{display:flex;align-items:center;gap:.7rem;flex:1;min-width:0}
.calc-header__logo{width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#2ecc71,#27ae60);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(46,204,113,0.35);border:2px solid rgba(46,204,113,0.6);color:#fff;font-weight:800;text-shadow:0 2px 4px rgba(0,0,0,0.2);line-height:1.05;text-align:center;padding:2px;flex-shrink:0}
.calc-header__logo .logo-top{font-size:11px;letter-spacing:.3px}
.calc-header__logo .logo-bot{font-size:6.5px;opacity:.92;letter-spacing:1.4px}
.calc-header__title{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1}
.calc-header__title .title-main{font-size:clamp(1rem,1.6vw,20px);font-weight:900;color:var(--bubble-text);letter-spacing:-.2px;display:inline-block;text-align:center}
.calc-header__title .version-badge{align-self:flex-start;font-size:11px;font-weight:600;color:var(--bubble-text);margin-top:1px}
.calc-header__title .title-sub{font-size:clamp(8px,.7vw,10px);font-weight:500;color:var(--bubble-text);display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:1px;width:100%}
.calc-header__title .title-sub span{background:var(--bubble-bg);padding:0 10px;border-radius:20px;border:var(--bubble-border);color:var(--bubble-text);white-space:nowrap;box-shadow:0 2px 6px rgba(74,160,200,0.10)}
.calc-header__actions{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}
.calc-btn{background:var(--bubble-bg);border:var(--bubble-border);color:var(--bubble-text);font-weight:700;font-size:11px;padding:0 18px;border-radius:var(--radius-btn);cursor:pointer;box-shadow:0 2px 6px rgba(74,160,200,0.10);transition:all var(--transition-speed);font-family:inherit;letter-spacing:.2px;height:24px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.calc-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(74,160,200,0.20)}
.calc-btn:active{transform:scale(.96)}
.portal-auth{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;flex:1;gap:22px;padding:30px 16px 30px}
.auth-card{width:100%;max-width:420px;background:#ffffff;border-radius:var(--radius-card);border:1px solid rgba(139,195,74,0.35);padding:32px 24px;box-shadow:0 30px 80px rgba(30,80,140,0.20),inset 0 1px 2px rgba(255,255,255,0.7)}
.auth-tabs{display:flex;gap:4px;padding:4px;background:rgba(74,160,200,0.08);border-radius:14px;border:1px solid rgba(74,160,200,0.15);margin-bottom:20px}
.auth-tab{flex:1;padding:9px 0;font-size:14px;font-weight:700;color:var(--bubble-text);background:transparent;border:none;border-radius:10px;cursor:pointer;transition:all var(--transition-speed);font-family:inherit;letter-spacing:2px}
.auth-tab.active{background:var(--theme-gradient);color:#fff;box-shadow:0 3px 12px rgba(139,195,74,0.35)}
.auth-tab:hover:not(.active){background:rgba(74,160,200,0.12)}
.form-field{margin-bottom:14px;position:relative}
.form-field label{display:block;font-size:12px;font-weight:700;color:var(--bubble-text);margin-bottom:5px;letter-spacing:.3px}
.form-field label .required{color:#e74c3c;font-weight:900;margin-left:2px}
.form-field input{width:100%;height:38px;border:1px solid rgba(74,160,200,0.25);background:#fff;border-radius:var(--radius-field);padding:0 14px;font-size:13px;font-family:inherit;color:var(--bubble-text);font-weight:600;outline:none;transition:all var(--transition-speed);box-shadow:0 1px 3px rgba(30,80,140,0.04)}
.form-field input:focus{border-color:#4a9fc7;box-shadow:0 0 0 3px rgba(74,160,200,0.20)}
.form-field input::placeholder{color:#b0c8d8;font-weight:400}
.form-field input[type="password"],.form-field input[type="text"]{padding-right:42px}
.form-msg{min-height:18px;font-size:12px;font-weight:600;margin-bottom:6px;text-align:center;letter-spacing:.2px}
.form-msg.error{color:var(--ice-danger)}
.form-msg.success{color:var(--ice-success)}
.btn-primary{width:100%;height:40px;border:none;border-radius:var(--radius-btn);background:var(--theme-gradient);color:#fff;font-size:14px;font-weight:700;font-family:inherit;letter-spacing:6px;cursor:pointer;transition:all var(--transition-speed);box-shadow:0 6px 18px rgba(139,195,74,0.30);display:flex;align-items:center;justify-content:center;margin-top:6px}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(139,195,74,0.40)}
.btn-primary:active{transform:scale(.98)}
.btn-primary:disabled{cursor:not-allowed;opacity:.7}
.auth-extras{display:flex;justify-content:flex-end;margin-top:10px}
.auth-link{font-size:12px;font-weight:700;color:var(--bubble-text);text-decoration:none;transition:color .2s;border-bottom:1px dashed rgba(74,160,200,0.35);padding-bottom:1px}
.auth-link:hover{color:#1a4a6a;border-bottom-color:#1a4a6a}
.auth-tip{font-size:11px;color:var(--bubble-text);opacity:.8;text-align:center;font-weight:500}
.terms-link{color:var(--bubble-text);text-decoration:none;font-weight:700;border-bottom:1px dashed rgba(74,160,200,0.35)}
.terms-link:hover{color:#1a4a6a;border-bottom-color:#1a4a6a}
.pwd-toggle{position:absolute;right:10px;top:38px;background:transparent;border:none;font-size:15px;cursor:pointer;padding:4px 6px;color:var(--bubble-text);opacity:.7;transition:opacity var(--transition-speed);line-height:1}
.pwd-toggle:hover{opacity:1}
.portal-dashboard{flex:1;animation:fadeIn .4s ease;padding:6px 4px 4px;display:flex;flex-direction:column;gap:20px}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:20px}
.tool-card{display:flex;align-items:center;justify-content:center;padding:16px 12px;background:var(--bubble-bg);border-radius:var(--radius-panel);border:var(--bubble-border);text-decoration:none;color:var(--bubble-text);font-weight:800;font-size:14px;transition:all .25s ease;box-shadow:var(--bubble-shadow);text-align:center;gap:0}
.tool-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(74,160,200,0.28);border-color:rgba(74,160,200,0.45);background:#dff0fa}
.tool-card:active{transform:scale(.97)}
@media (max-width:480px){.tool-grid{gap:10px;margin-top:16px}.tool-card{padding:12px 8px;font-size:12px}}
.portal-user{position:relative;display:flex;align-items:center}
.user-trigger{display:inline-flex;align-items:center;gap:6px;background:var(--bubble-bg);border:var(--bubble-border);border-radius:20px;padding:4px 14px 4px 6px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;color:var(--bubble-text);transition:all 0.22s ease;height:30px;box-shadow:0 2px 6px rgba(74,160,200,0.10)}
.user-trigger:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(74,160,200,0.18)}
.user-trigger.active{background:#d0e8f7}
.user-avatar{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#4a9fc7,#2ecc71);display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:#fff;flex-shrink:0}
.user-name{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-caret{font-size:9px;color:var(--bubble-text);transition:transform 0.22s}
.user-trigger.active .user-caret{transform:rotate(180deg)}
.user-menu{position:absolute;top:calc(100% + 8px);right:0;width:220px;background:var(--bubble-bg);border:var(--bubble-border);border-radius:16px;box-shadow:0 20px 50px rgba(30,80,140,0.22);padding:14px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:all 0.22s ease;z-index:100;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.user-menu.active{opacity:1;visibility:visible;transform:translateY(0)}
.user-menu__header{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px dashed rgba(74,160,200,0.20);margin-bottom:12px}
.user-menu__avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#4a9fc7,#2ecc71);display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;flex-shrink:0;box-shadow:0 4px 12px rgba(74,160,200,0.25)}
.user-menu__info{flex:1;min-width:0}
.user-menu__name{font-size:14px;font-weight:800;color:var(--bubble-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}
.user-menu__status{font-size:12px;font-weight:600;color:var(--bubble-text);opacity:.8}
.user-menu__footer{padding-top:10px;border-top:1px dashed rgba(74,160,200,0.20)}
.user-menu__link{display:block;width:100%;height:32px;line-height:32px;text-align:center;border:1px solid rgba(74,160,200,0.35);background:var(--bubble-bg);color:var(--bubble-text);border-radius:10px;font-size:12px;font-weight:700;text-decoration:none;transition:all 0.22s;letter-spacing:.5px;margin-bottom:8px}
.user-menu__link:hover{background:#d0e8f7;transform:translateY(-1px)}
.user-menu__logout{width:100%;height:32px;border:1px solid rgba(231,76,60,0.25);background:rgba(231,76,60,0.06);color:#c0392b;border-radius:10px;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;transition:all 0.22s;letter-spacing:1px}
.user-menu__logout:hover{background:rgba(231,76,60,0.14);border-color:rgba(231,76,60,0.45);transform:translateY(-1px)}
@media (max-width:480px){.user-menu{width:200px;right:-8px}.user-name{max-width:60px}}
.terms-content h2{font-size:18px;color:var(--bubble-text);margin-bottom:12px;font-weight:800}
::-webkit-scrollbar{width:0px;height:0px}
::-webkit-scrollbar-track{background:rgba(74,160,200,0.04)}
::-webkit-scrollbar-thumb{background:#4a9fc7;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#2a7faf}
@media (max-width:780px){.calc-app{padding:12px 14px 16px}.calc-header__logo{width:36px;height:36px}.calc-header__logo .logo-top{font-size:9px}.calc-header__logo .logo-bot{font-size:5.5px}.calc-btn{font-size:9.5px;padding:0 12px;height:22px}}
@media (max-width:480px){.calc-app{padding:10px 12px 14px}.calc-header__logo{width:30px;height:30px}.calc-header__logo .logo-top{font-size:7.5px}.calc-header__logo .logo-bot{font-size:5px}.calc-header__title .title-main{font-size:.9rem}.auth-card{padding:22px 18px}.portal-auth{padding:20px 12px}.tool-card{padding:12px 8px;font-size:12px}}

.announce-board{background:var(--bubble-bg);border-radius:var(--radius-panel);border:var(--bubble-border);padding:18px 16px 16px;box-shadow:var(--bubble-shadow);width:100%;max-width:420px;display:flex;flex-direction:column;gap:12px;margin:0 auto}
.announce-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.announce-head-title{font-size:16px;font-weight:900;color:var(--bubble-text);letter-spacing:.3px;display:inline-flex;align-items:center;gap:6px}
.announce-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:4px;background:rgba(255,255,255,0.55);border-radius:14px;border:1px solid rgba(74,160,200,0.15)}
.announce-tab{flex:1;min-width:0;padding:8px 10px;font-size:12px;font-weight:700;font-family:inherit;color:var(--bubble-text);background:transparent;border:none;border-radius:10px;cursor:pointer;transition:all .18s;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:4px;letter-spacing:.2px}
.announce-tab.active{background:var(--theme-gradient);color:#fff;box-shadow:0 3px 10px rgba(139,195,74,0.30)}
.announce-tab:hover:not(.active){background:rgba(74,160,200,0.10)}
.announce-panels{display:flex;flex-direction:column;gap:10px}
.announce-panel{display:none;flex-direction:column;gap:10px}
.announce-panel.active{display:flex;animation:contentSlide .2s ease}
@keyframes contentSlide{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.announce-item{background:#ffffff;border:var(--bubble-border);border-radius:var(--radius-field);padding:0;box-shadow:0 2px 6px rgba(74,160,200,0.08);transition:box-shadow .18s;overflow:hidden}
.announce-item:hover{box-shadow:0 4px 14px rgba(74,160,200,0.16)}
.announce-item__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 14px;cursor:pointer;user-select:none;transition:background .15s}
.announce-item__head:hover{background:rgba(74,160,200,0.06)}
.announce-item__head:active{background:rgba(74,160,200,0.12)}
.announce-item__caret{font-size:9px;color:var(--bubble-text);opacity:.55;transition:transform .22s;flex-shrink:0;display:inline-block;width:12px;text-align:center}
.announce-item.is-open .announce-item__caret{transform:rotate(90deg);opacity:.85}
.announce-item__title{font-size:14px;font-weight:800;color:var(--bubble-text);flex:1;min-width:0;word-break:break-word}
.announce-item__version{font-size:11px;font-weight:800;color:#fff;background:var(--theme-gradient);border-radius:10px;padding:2px 10px;letter-spacing:.3px;white-space:nowrap}
.announce-item__date{font-size:11px;font-weight:600;color:var(--bubble-text);opacity:.6;white-space:nowrap}
.announce-item__content{display:none;font-size:13px;font-weight:500;color:var(--bubble-text);line-height:1.7;word-break:break-word;padding:0 14px 14px 14px;border-top:1px dashed rgba(74,160,200,0.18);margin-top:0;padding-top:12px}
.announce-item.is-open .announce-item__content{display:block;animation:contentSlide .2s ease}
.announce-item__content p{margin:.3em 0}
.announce-item__content p:first-child{margin-top:0}
.announce-item__content p:last-child{margin-bottom:0}
.announce-item__content ul,.announce-item__content ol{padding-left:1.5em;margin:.3em 0}
.announce-item__content li{margin:.15em 0}
.announce-item__content strong{font-weight:800}
.announce-item__content em{font-style:italic}
.announce-item__content a{color:#2e86de;text-decoration:none;border-bottom:1px dashed rgba(46,134,222,0.35)}
.announce-item__content a:hover{color:#1a4a6a;border-bottom-color:#1a4a6a}
.announce-item__content code{background:rgba(74,160,200,0.10);color:#1a4a6a;padding:1px 6px;border-radius:4px;font-family:'Courier New',monospace;font-size:12px;font-weight:700}
.announce-item__content pre{background:rgba(74,160,200,0.10);color:#1a4a6a;padding:8px 10px;border-radius:8px;overflow-x:auto;font-family:'Courier New',monospace;font-size:12px;line-height:1.5;margin:.4em 0}
.announce-item__content pre code{background:transparent;padding:0}
.announce-item__content blockquote{border-left:3px solid #4a9fc7;background:rgba(74,160,200,0.06);margin:.4em 0;padding:4px 10px;border-radius:0 6px 6px 0;color:var(--bubble-text)}
.announce-item__content h1,.announce-item__content h2,.announce-item__content h3,.announce-item__content h4{margin:.5em 0 .25em;font-weight:800;color:var(--bubble-text);font-size:14px}
.announce-item__content hr{border:none;border-top:1px dashed rgba(74,160,200,0.25);margin:.6em 0}
.announce-empty{text-align:center;padding:18px 0;color:var(--bubble-text);opacity:.6;font-size:13px;font-weight:600}

.custom-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:999;padding:16px}
.custom-modal.active{display:flex;animation:modalFade .2s ease}
@keyframes modalFade{from{opacity:0}to{opacity:1}}
.custom-modal-content{background:var(--bubble-bg);border-radius:var(--radius-panel);padding:22px 22px 20px;width:100%;max-width:400px;box-shadow:0 30px 80px rgba(0,0,0,0.3);border:var(--bubble-border);max-height:88vh;overflow-y:auto}
.custom-modal-content--wide{max-width:640px}
.edit-modal-title{font-size:17px;font-weight:900;color:var(--bubble-text);margin-bottom:16px;text-align:center}
.edit-form{display:flex;flex-direction:column;gap:12px}
.edit-field{display:flex;flex-direction:column;gap:5px}
.edit-field label{font-size:12px;font-weight:700;color:var(--bubble-text);letter-spacing:.2px}
.edit-input,.edit-select,.edit-textarea{width:100%;border:1px solid rgba(74,160,200,0.30);background:#fff;border-radius:var(--radius-field);padding:8px 12px;font-size:13px;font-weight:600;font-family:inherit;color:var(--bubble-text);outline:0;transition:border-color .2s,box-shadow .2s}
.edit-input{height:36px}
.edit-select{height:36px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%231a4a6a'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}
.edit-textarea{min-height:160px;resize:vertical;line-height:1.6;font-family:'Courier New',monospace;font-size:12.5px}
.edit-input:focus,.edit-select:focus,.edit-textarea:focus{border-color:#4a9fc7;box-shadow:0 0 0 3px rgba(74,160,200,0.20)}
.edit-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:6px}

.tabs{display:flex;gap:8px;flex-wrap:wrap;padding:6px 0 8px;border-bottom:1px solid rgba(74,160,200,0.10);margin-bottom:16px}
.tabs .tab-btn{background:var(--bubble-bg);border:var(--bubble-border);border-radius:14px;padding:2px 14px;font-size:12px;font-weight:700;color:var(--bubble-text);cursor:pointer;transition:all .15s;font-family:inherit;height:28px;display:inline-flex;align-items:center;white-space:nowrap;box-shadow:0 2px 6px rgba(74,160,200,0.10)}
.tabs .tab-btn.active{background:var(--theme-gradient);color:#fff;border-color:transparent;box-shadow:0 3px 12px rgba(139,195,74,0.35)}
.tabs .tab-btn:hover:not(.active){transform:translateY(-1px);box-shadow:0 4px 12px rgba(74,160,200,0.20)}

.tab-panel{display:none}
.tab-panel.active{display:block;animation:contentSlide .2s ease}

.card{background:var(--bubble-bg);border:var(--bubble-border);border-radius:var(--radius-panel);padding:16px 14px;margin-bottom:16px;box-shadow:var(--bubble-shadow)}
.card h2{font-size:15px;font-weight:800;color:var(--bubble-text);margin-bottom:14px;display:flex;align-items:center;gap:8px}
.card h2::before{content:'';width:4px;height:16px;border-radius:2px;background:var(--theme-gradient)}

.flash{margin-bottom:14px;padding:10px 14px;border-radius:12px;font-size:13px;background:#e6f7e6;color:#1a8a4a;border-left:4px solid #2ecc71;font-weight:600}
.flash.err{background:#fde8e8;color:#c0392b;border-left-color:#e74c3c}

.empty{text-align:center;color:var(--bubble-text);font-size:14px;font-weight:600;padding:24px 0;opacity:0.7}

.announce-admin-item{background:#fff;border:var(--bubble-border);border-radius:var(--radius-field);padding:12px 14px;margin-bottom:10px;box-shadow:0 2px 8px rgba(74,160,200,0.10);transition:all .18s}
.announce-admin-item:hover{box-shadow:0 4px 14px rgba(74,160,200,0.18)}
.announce-admin-item.is-off{opacity:.55}
.announce-admin-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;padding-bottom:6px;border-bottom:1px dashed rgba(74,160,200,0.18)}
.announce-admin-version{font-size:11px;font-weight:800;color:#fff;background:var(--theme-gradient);border-radius:10px;padding:2px 10px;letter-spacing:.3px;white-space:nowrap}
.announce-admin-title{font-size:14px;font-weight:800;color:var(--bubble-text);flex:1;min-width:0;word-break:break-word}
.announce-admin-date{font-size:11px;font-weight:600;color:var(--bubble-text);opacity:.6;white-space:nowrap}
.announce-admin-status{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;background:rgba(46,204,113,0.15);color:#1a8a4a;white-space:nowrap}
.announce-admin-item.is-off .announce-admin-status{background:rgba(231,76,60,0.12);color:#c0392b}
.announce-admin-preview{font-size:12px;color:var(--bubble-text);opacity:.7;line-height:1.5;margin-bottom:10px;word-break:break-word;white-space:pre-wrap}
.announce-admin-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.btn.small{padding:0 14px;font-size:11px;border-radius:var(--radius-btn);font-weight:700;height:26px;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap;border:var(--bubble-border);background:var(--bubble-bg);color:var(--bubble-text);box-shadow:var(--bubble-shadow)}
.btn.small:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(74,160,200,0.20)}
.btn.small.ghost{background:var(--bubble-bg);color:var(--bubble-text)}
.btn.small.primary{background:var(--theme-gradient);color:#fff;border-color:transparent;box-shadow:0 3px 12px rgba(139,195,74,0.30)}
.btn.small.primary:hover{box-shadow:0 6px 16px rgba(139,195,74,0.40)}
.btn.small.danger{background:rgba(231,76,60,0.08);color:#c0392b;border-color:rgba(231,76,60,0.30)}
.btn.small.danger:hover{background:rgba(231,76,60,0.15);border-color:rgba(231,76,60,0.50)}

/* ============ 访客日志 v5.3 ============ */
.stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}
.stat-card{background:var(--bubble-bg);border:var(--bubble-border);border-radius:var(--radius-field);padding:12px 10px;text-align:center;box-shadow:var(--bubble-shadow)}
.stat-label{font-size:11px;font-weight:600;color:var(--bubble-text);opacity:.75;margin-bottom:5px;letter-spacing:.2px}
.stat-value{font-size:20px;font-weight:900;color:var(--bubble-text);letter-spacing:-.3px}
@media (max-width:900px){.stats-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:480px){.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-value{font-size:17px}}

.filter-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px;padding:10px 12px;background:var(--bubble-bg);border:var(--bubble-border);border-radius:var(--radius-field);box-shadow:var(--bubble-shadow)}
.filter-input{flex:1;min-width:120px;height:30px;border:1px solid rgba(74,160,200,0.25);background:#fff;border-radius:10px;padding:0 12px;font-size:12px;font-family:inherit;color:var(--bubble-text);font-weight:600;outline:none;transition:all .2s}
.filter-input:focus{border-color:#4a9fc7;box-shadow:0 0 0 3px rgba(74,160,200,0.20)}
select.filter-input{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%231a4a6a'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}
input.filter-input[type="date"]{
    color-scheme:light;
    color:#1a4a6a;
    font-weight:700;
    letter-spacing:.3px;
    cursor:pointer;
    padding-right:8px;
}
input.filter-input[type="date"]:hover{border-color:#4a9fc7;background:#f4fafd}
input.filter-input[type="date"]::-webkit-calendar-picker-indicator{
    cursor:pointer;
    opacity:0.55;
    filter:invert(30%) sepia(20%) saturate(500%) hue-rotate(170deg);
    margin-left:4px;
}
input.filter-input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1}
.danger-btn{background:rgba(231,76,60,0.08)!important;color:#c0392b!important;border-color:rgba(231,76,60,0.30)!important}
.danger-btn:hover{background:rgba(231,76,60,0.15)!important;border-color:rgba(231,76,60,0.50)!important}
.geo-tip{font-size:12px;font-weight:700;color:var(--bubble-text);background:rgba(74,160,200,0.10);border-left:3px solid #4a9fc7;border-radius:6px;padding:6px 12px;margin-bottom:10px;text-align:center}

.visitor-cards{display:flex;flex-direction:column;gap:14px}
.visitor-empty{text-align:center;padding:36px 20px;color:var(--bubble-text);opacity:.65;font-size:13px;font-weight:600;background:var(--bubble-bg);border:var(--bubble-border);border-radius:var(--radius-panel);box-shadow:var(--bubble-shadow)}

.visitor-card{background:var(--bubble-bg);border:var(--bubble-border);border-radius:var(--radius-panel);padding:14px 16px;box-shadow:var(--bubble-shadow);transition:box-shadow .2s}
.visitor-card:hover{box-shadow:0 6px 20px rgba(74,160,200,0.20)}

.vc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:10px;margin-bottom:10px;border-bottom:1px dashed rgba(74,160,200,0.20)}
.ip-badge{display:inline-block;font-family:'Courier New',monospace;font-weight:800;font-size:14px;color:#1a4a6a;background:rgba(74,160,200,0.14);padding:3px 10px;border-radius:8px;letter-spacing:.3px;word-break:break-all}
.vc-geo{display:inline-flex;align-items:center;gap:6px;flex:1;min-width:0;font-size:12px;line-height:1.4;color:var(--bubble-text);flex-wrap:wrap}
.vc-geo-main{font-weight:700}
.vc-isp{font-size:11px;opacity:.65;font-weight:600}
.geo-empty{font-size:11px;color:var(--bubble-text);opacity:.4;font-style:italic}

.user-tag{display:inline-block;font-size:10px;font-weight:800;padding:3px 10px;border-radius:10px;letter-spacing:.2px;white-space:nowrap}
.user-tag.guest{background:rgba(150,150,150,0.20);color:#555}
.user-tag.reg{background:rgba(46,204,113,0.20);color:#1a8a4a}
.user-tag.mixed{background:rgba(243,156,18,0.20);color:#b8860b}

.vc-stats{display:grid;grid-template-columns:1fr 1.4fr 1.4fr;gap:8px;margin-bottom:10px}
@media (max-width:520px){.vc-stats{grid-template-columns:1fr 1fr 1fr;gap:6px}}
.vc-stat{background:#fff;border:1px solid rgba(74,160,200,0.18);border-radius:10px;padding:8px 10px;text-align:center}
.vc-stat-label{font-size:10px;font-weight:700;color:var(--bubble-text);opacity:.65;margin-bottom:3px;letter-spacing:.2px}
.vc-stat-value{font-size:16px;font-weight:900;color:var(--bubble-text)}
.vc-stat-value.small{font-size:11px;font-weight:700;line-height:1.3;word-break:break-all}
@media (max-width:520px){.vc-stat{padding:6px 6px}.vc-stat-value{font-size:14px}.vc-stat-value.small{font-size:10px}}

.vc-section{margin-top:10px}
.vc-section-title{font-size:11.5px;font-weight:800;color:var(--bubble-text);margin-bottom:6px;display:flex;align-items:center;gap:6px;letter-spacing:.2px}
.vc-section-sub{font-size:10px;font-weight:600;opacity:.6}

.vc-daily{display:flex;gap:6px;flex-wrap:wrap}
.vc-day{display:flex;flex-direction:column;align-items:center;gap:1px;background:#fff;border:1px solid rgba(74,160,200,0.20);border-radius:8px;padding:4px 8px;min-width:44px}
.vc-day-date{font-size:9.5px;font-weight:600;color:var(--bubble-text);opacity:.7;letter-spacing:.2px}
.vc-day-count{font-size:13px;font-weight:900;color:#2a7faf}

.vc-pages{display:flex;flex-direction:column;gap:6px}
.vc-page{display:grid;grid-template-columns:90px 1fr 60px;align-items:center;gap:8px}
@media (max-width:520px){.vc-page{grid-template-columns:80px 1fr 52px;gap:6px}}
.vc-page-name{font-size:11.5px;font-weight:700;color:var(--bubble-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vc-page-bar{position:relative;height:8px;background:rgba(74,160,200,0.12);border-radius:4px;overflow:hidden}
.vc-page-bar-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#4a9fc7,#2a7faf);border-radius:4px;transition:width .3s}
.vc-page-count{font-size:11px;font-weight:800;color:#2a7faf;text-align:right;white-space:nowrap}

.vc-detail-toggle-wrap{display:flex;justify-content:center;margin-top:10px;padding-top:10px;border-top:1px dashed rgba(74,160,200,0.20)}
.vc-detail-toggle{background:rgba(74,160,200,0.10);border:1px solid rgba(74,160,200,0.25);border-radius:12px;padding:5px 16px;font-size:11.5px;font-weight:800;color:#2a7faf;cursor:pointer;font-family:inherit;transition:all .18s;letter-spacing:.3px}
.vc-detail-toggle:hover{background:rgba(74,160,200,0.20);transform:translateY(-1px)}
.vc-detail-toggle:active{transform:scale(.96)}
.vc-detail-toggle:disabled{opacity:.6;cursor:wait}

.vc-detail{margin-top:12px;padding-top:12px;border-top:1px dashed rgba(74,160,200,0.20);animation:contentSlide .22s ease}
.vc-detail-title{font-size:11.5px;font-weight:800;color:var(--bubble-text);margin-bottom:8px;opacity:.75;letter-spacing:.2px}
.vc-detail-list{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow-y:auto;padding-right:4px}
.vc-detail-list::-webkit-scrollbar{width:4px}
.vc-detail-list::-webkit-scrollbar-thumb{background:rgba(74,160,200,0.35);border-radius:4px}
.vc-detail-row{display:grid;grid-template-columns:135px 1fr 70px;align-items:center;gap:8px;background:#fff;border:1px solid rgba(74,160,200,0.15);border-radius:8px;padding:6px 10px;font-size:11.5px}
@media (max-width:520px){.vc-detail-row{grid-template-columns:1fr auto;grid-template-areas:"time user" "uri uri";gap:2px 8px;padding:7px 10px}}
.vc-detail-time{font-family:'Courier New',monospace;font-weight:700;color:#1a4a6a;font-size:11px;letter-spacing:.2px;white-space:nowrap}
@media (max-width:520px){.vc-detail-time{grid-area:time}}
.vc-detail-uri{font-weight:700;color:#2a7faf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:520px){.vc-detail-uri{grid-area:uri;font-size:11px;opacity:.85}}
.vc-detail-user{font-size:10px;font-weight:800;padding:2px 8px;border-radius:10px;text-align:center;white-space:nowrap}
.vc-detail-user.guest{background:rgba(150,150,150,0.18);color:#555}
.vc-detail-user.reg{background:rgba(46,204,113,0.18);color:#1a8a4a}
@media (max-width:520px){.vc-detail-user{grid-area:user;justify-self:end}}
.vc-detail-empty{text-align:center;padding:14px;color:var(--bubble-text);opacity:.55;font-size:12px;font-weight:600}

.pagination{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:14px;flex-wrap:wrap}
.page-btn{background:var(--bubble-bg);border:var(--bubble-border);border-radius:14px;padding:0 16px;font-size:12px;font-weight:700;color:var(--bubble-text);cursor:pointer;height:30px;display:inline-flex;align-items:center;font-family:inherit;transition:all .15s;box-shadow:var(--bubble-shadow)}
.page-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(74,160,200,0.20)}
.page-btn:active{transform:scale(.96)}
.page-info{font-size:12px;font-weight:700;color:var(--bubble-text);opacity:.75}

.clear-tip{font-size:12.5px;text-align:center;color:var(--bubble-text);margin-bottom:16px;line-height:1.6}
.clear-tip strong{color:#c0392b;font-weight:900;font-size:14px}
.clear-options{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.clear-option{display:flex;flex-direction:column;gap:2px;text-align:left;background:#fff;border:1px solid rgba(74,160,200,0.25);border-radius:var(--radius-field);padding:10px 14px;cursor:pointer;font-family:inherit;transition:all .18s}
.clear-option:hover{background:rgba(74,160,200,0.08);transform:translateY(-1px);box-shadow:0 4px 14px rgba(74,160,200,0.15)}
.clear-option:active{transform:scale(.98)}
.clear-option-title{font-size:13px;font-weight:800;color:#1a4a6a;letter-spacing:.2px}
.clear-option-sub{font-size:10.5px;font-weight:600;color:#1a4a6a;opacity:.6}
.clear-option.danger{border-color:rgba(231,76,60,0.30)}
.clear-option.danger:hover{background:rgba(231,76,60,0.06);box-shadow:0 4px 14px rgba(231,76,60,0.15)}
.clear-option.danger .clear-option-title{color:#c0392b}