:root{--blue-900: #0b3a6a;--blue-800: #124e8a;--blue-700: #1763b0;--blue-600: #1d74c9;--blue-500: #2b8ae0;--blue-100: #e8f2fb;--blue-50: #f4f8fd;--text: #16324f;--muted: #5d7894;--line: #d5e4f3;--white: #ffffff;--ok: #1a7f64;--warn: #c47b16;--open: #c0392b}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:Segoe UI,PingFang SC,Hiragino Sans GB,Noto Sans SC,sans-serif;color:var(--text);background:linear-gradient(180deg,#f7fbff,#eef5fb)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.layout{max-width:1120px;margin:0 auto;padding:20px 24px 48px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{margin:0;font-size:20px;font-weight:650;color:var(--blue-900);letter-spacing:.02em}.brand span{color:var(--muted);font-size:13px}.nav{display:flex;gap:8px}.nav a{padding:7px 14px;border-radius:999px;color:var(--blue-800);background:transparent;font-size:14px}.nav a.router-link-active{background:var(--blue-700);color:var(--white)}.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.backup-notice{margin:-8px 0 16px;color:var(--blue-800);font-size:13px}.lang-switch{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--white)}.lang-switch button{border:0;background:transparent;color:var(--blue-800);padding:6px 12px;cursor:pointer;font-size:13px}.lang-switch button.active{background:var(--blue-700);color:var(--white)}.card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:18px 20px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.kpi{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.kpi .label{color:var(--muted);font-size:13px}.kpi .value{margin-top:6px;font-size:28px;font-weight:650;color:var(--blue-900)}.charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.chart-box{height:280px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.toolbar h2,.section-title{margin:0;font-size:16px;color:var(--blue-900)}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}input[type=text],input[type=search],select,textarea{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--white);color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px #1d74c91f}textarea{width:100%;min-height:88px;resize:vertical}.btn{border:0;border-radius:8px;padding:8px 14px;background:var(--blue-700);color:var(--white);cursor:pointer}.btn:hover{background:var(--blue-800)}.btn.ghost{background:var(--blue-100);color:var(--blue-800)}.btn.ghost:hover{background:#d7e8f8}.btn.danger{background:#c0392b}.btn.danger:hover{background:#9b2d22}.btn.danger.ghost{background:#fdecea;color:#c0392b}.btn.danger.ghost:hover{background:#f8d7d3}.btn.ghost.active{background:var(--blue-700);color:var(--white)}.table-static tr{cursor:default}.table-static tr:hover td{background:transparent}.actions{text-align:right;white-space:nowrap}.source-filter .btn{padding:6px 12px}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}.table th{color:var(--muted);font-weight:550}.table tr{cursor:pointer}.table tr:hover td{background:var(--blue-50)}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;font-size:12px}.badge.yard{background:#efe8ff;color:#5b3cc4}.badge.owner{background:#e7f0fb;color:var(--blue-800)}.badge.class{background:#e8f6f1;color:var(--ok)}.badge.delta_marin{background:#fff3e0;color:#c45c16}.paste-box{border:1px dashed var(--line);border-radius:8px;padding:10px 12px;color:var(--muted);font-size:13px;background:var(--blue-50);outline:none}.paste-box:focus{border-color:var(--blue-600);box-shadow:0 0 0 3px #1d74c91f}.badge.open{background:#fdecea;color:var(--open)}.badge.in_progress{background:#fff4e5;color:var(--warn)}.badge.closed{background:#e8f6f1;color:var(--ok)}.muted{color:var(--muted);font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid .full{grid-column:1 / -1}.comment-list{display:flex;flex-direction:column;gap:12px}.comment{border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--white)}.comment.closed{background:#f7fbf9}.replies{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:8px}.reply{background:var(--blue-50);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.reply-form{margin-top:10px}.login-page{display:flex;justify-content:center;padding-top:48px}.login-card{width:360px}.login-card h2{margin:0 0 6px;color:var(--blue-900)}.demo-box{margin-top:12px;padding:10px 12px;border:1px solid #bfd6f6;background:#eef5ff;border-radius:8px;font-size:13px;line-height:1.6;color:var(--blue-900)}.demo-box p{margin:0}.login-form{display:flex;flex-direction:column;gap:10px;margin-top:14px}.comment-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.thumbs img{width:88px;height:66px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:zoom-in}.preview{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b3a6ab8;display:flex;align-items:center;justify-content:center;z-index:20}.preview img{max-width:90vw;max-height:90vh;border-radius:8px}.empty{color:var(--muted);text-align:center;padding:36px 12px}.toast{position:fixed;right:20px;bottom:20px;background:var(--blue-900);color:#fff;padding:10px 14px;border-radius:8px;font-size:13px}.meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.meta .item .k{font-size:12px;color:var(--muted)}.meta .item .v{margin-top:4px;font-size:15px}@media(max-width:860px){.kpis,.charts,.meta,.form-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.kpis,.charts,.meta,.form-grid{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:flex-start}}
