:root{color-scheme:dark;--bg: #0f1117;--bg-elev: #151922;--bg-elev2: #1c222d;--border: #2b3341;--text: #e4e9f2;--muted: #99a5b8;--accent: #6ea8fe;--accent-hover: #8fbcff;--danger: #e5646e;--danger-bg: #3a1f24}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}button{font:inherit;cursor:pointer;background:var(--accent);color:#06101f;border:none;border-radius:6px;padding:7px 14px;font-weight:600}button:hover:not(:disabled){background:var(--accent-hover)}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}button.danger{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}button.link-btn{background:none;color:var(--accent);padding:0;font-weight:500}button.x{background:transparent;color:var(--muted);border:1px solid var(--border);padding:2px 7px;border-radius:5px;font-weight:500}button.x:hover:not(:disabled){color:var(--text);background:var(--bg-elev2)}input,textarea,select{font:inherit;background:var(--bg-elev2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}textarea{resize:vertical;width:100%}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger);border-radius:6px;padding:6px 10px;margin:6px 0}.success{color:#7ed4a1;background:#16281d;border:1px solid #2e5c40;border-radius:6px;padding:6px 10px;margin:6px 0}.save-flash{color:#7ed4a1;font-weight:500;animation:save-flash-fade 3s ease-out forwards}@keyframes save-flash-fade{0%,15%{opacity:1}to{opacity:0}}.pad{padding:24px}.spacer{flex:1}.row{display:flex;align-items:center;gap:12px;margin:10px 0}.app{display:flex;flex-direction:column;height:100vh;height:100dvh}.topbar{position:relative;display:flex;align-items:center;gap:14px;padding:0 14px;height:48px;background:var(--bg-elev);border-bottom:1px solid var(--border);flex-shrink:0}.account{display:flex;align-items:center;gap:8px;margin-left:auto}.account .icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px 8px;border-radius:6px;font-size:18px;line-height:1;background:transparent;border:none}.account .icon-btn:hover{background:var(--bg-elev2);text-decoration:none}.account .icon-btn.active{background:var(--bg-elev2)}.brand{font-weight:700;letter-spacing:.3px}.control-group{display:flex;align-items:center;gap:6px;padding:3px;background:var(--bg);border:1px solid var(--border);border-radius:10px}.nav a{color:var(--muted);padding:4px 10px;border-radius:6px}.nav a:hover{color:var(--text);text-decoration:none;background:var(--bg-elev2)}.nav a.active{color:var(--text);background:var(--bg-elev2)}.nav .nav-btn{background:transparent;color:var(--accent);padding:4px 10px;border-radius:6px;font-weight:600;margin-left:auto}.nav .map-btn{background:transparent;border:none;padding:4px 7px;border-radius:6px;font-size:14px;font-weight:500}.nav .map-btn:hover:not(:disabled){background:var(--bg-elev2)}.nav .map-select{background:transparent;color:var(--text);border:none;padding:4px 6px;border-radius:6px;max-width:180px;text-overflow:ellipsis}.nav .map-select:hover{background:var(--bg-elev2)}.nav .map-select option{background:var(--bg-elev2);color:var(--text)}.nav .nav-btn:hover:not(:disabled){background:var(--bg-elev2);color:var(--accent-hover)}.user-link{color:var(--muted)}.user-link:hover{color:var(--text);text-decoration:none}.user-link.active{color:var(--text)}.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg)}.lang-switch button{background:transparent;color:var(--muted);border:none;border-radius:0;padding:4px 9px;font-size:12px;font-weight:600;letter-spacing:.4px}.lang-switch button+button{border-left:1px solid var(--border)}.lang-switch button:hover:not(.active){background:var(--bg-elev2);color:var(--text)}.lang-switch button.active{background:var(--accent);color:#06101f}.content{flex:1;min-height:0;overflow:auto}.page{max-width:1100px;margin:0 auto;padding:24px}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:320px;display:flex;flex-direction:column;gap:12px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:28px}.auth-card h1,.brand-lg,.auth-card p{margin:0;text-align:center}.map-page{height:100%;display:flex;flex-direction:column}.topbar-map-actions{position:absolute;left:50%;transform:translate(-50%)}.topbar-map-actions:empty{display:none}@media(max-width:1100px){.topbar{flex-wrap:wrap;height:auto;min-height:44px;padding-top:4px;padding-bottom:4px}.topbar-map-actions{position:static;transform:none;margin-left:auto}}.map-actions button.ghost{border:none;padding:5px 10px}.slider{display:flex;align-items:center;gap:8px;color:var(--muted)}.slider input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:200px;max-width:100%;height:16px;margin:0;padding:0;border:none;background:transparent;cursor:pointer}.slider input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--bg-elev2)}.slider input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--bg-elev2)}.slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:var(--accent)}.slider input[type=range]::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:var(--accent)}.slider input[type=range]:hover::-webkit-slider-thumb{background:var(--accent-hover)}.slider input[type=range]:hover::-moz-range-thumb{background:var(--accent-hover)}.map-canvas{flex:1;min-height:0;position:relative;background:var(--bg)}.link-draft-overlay{position:absolute;top:0;left:0;pointer-events:none}.profile-page{max-width:640px}.profile-page h2{margin:0 0 4px}.profile-stats{display:flex;gap:12px;margin:18px 0}.stat{flex:1;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center}.stat-num{font-size:26px;font-weight:700}.backup-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:16px}.backup-card h3{margin:0 0 8px}.admin-page{max-width:760px}.analytics{margin-bottom:28px}.analytics h3{margin:0 0 12px}.analytics h4{margin:22px 0 8px}.analytics .profile-stats{flex-wrap:wrap}.analytics .stat{flex:1 1 110px}.bars{display:flex;flex-direction:column;gap:6px}.bar-row{display:flex;align-items:center;gap:10px}.bar-label{flex:0 0 130px;color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{flex:1;height:10px;background:var(--bg);border-radius:5px;overflow:hidden}.bar-fill{display:block;height:100%;min-width:2px;background:var(--accent);border-radius:5px}.bar-val{flex:0 0 auto;min-width:28px;text-align:right;font-size:13px;font-variant-numeric:tabular-nums}.hours{display:flex;align-items:flex-end;gap:2px;height:70px;margin-bottom:20px}.hour-col{position:relative;flex:1;height:100%;display:flex;align-items:flex-end}.hour-fill{width:100%;min-height:1px;background:var(--accent);border-radius:2px 2px 0 0}.hour-tick{position:absolute;bottom:-16px;left:0;font-size:10px;color:var(--muted)}.visits-table{width:100%;border-collapse:collapse;font-size:13px}.visits-table th{text-align:left;font-weight:500;color:var(--muted);padding:6px 10px 6px 0;border-bottom:1px solid var(--border)}.visits-table td{padding:6px 10px 6px 0;border-bottom:1px solid var(--border)}.visits-table .mono{font-family:ui-monospace,Menlo,Consolas,monospace}.admin-user-list{list-style:none;padding:0;margin:16px 0 0}.admin-user-list li{padding:10px 2px;border-bottom:1px solid var(--border)}.admin-detail{margin-top:18px;border-collapse:collapse}.admin-detail td{padding:6px 20px 6px 0}.article-page{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;align-items:start}.article-main{min-width:0}.title-input{width:100%;font-size:28px;font-weight:650;letter-spacing:-.6px;background:transparent;border-color:transparent;padding:10px 0}.body-input{width:100%;font-family:SFMono-Regular,ui-monospace,Menlo,Consolas,monospace;font-size:14px;line-height:1.8;padding:20px;background:var(--bg-elev)}.editor-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.btn-sm{padding:4px 10px;font-size:13px}.table-picker-wrap{position:relative;display:inline-block}.table-picker{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:var(--bg-elev2);border:1px solid var(--border);border-radius:10px;padding:10px;box-shadow:0 8px 24px #00000073}.table-picker-grid{display:grid;grid-template-columns:repeat(8,20px);grid-auto-rows:20px;gap:3px}.table-picker-cell{width:20px;height:20px;padding:0;border:1px solid var(--border);border-radius:3px;background:var(--bg)}.table-picker-cell.active{background:var(--accent);border-color:var(--accent)}.table-picker-cell.header.active{background:var(--accent-hover);border-color:var(--accent-hover)}.table-picker-label{margin-top:8px;text-align:center;font-size:12px;color:var(--muted)}.article-links{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:16px;position:sticky;top:16px}.article-links h3{margin:0 0 10px}.article-links h4{margin:16px 0 6px;color:var(--muted);font-weight:600}.link-add{display:flex;flex-direction:column;gap:8px}.link-list{list-style:none;padding:0;margin:0}.link-list li{display:flex;align-items:center;gap:6px;padding:5px 0}.link-list li a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row.wrap{flex-wrap:wrap}.color-btn-wrap{position:relative;display:inline-flex}.color-btn{display:inline-flex;padding:0;background:transparent;border:none;border-radius:50%}.color-btn:hover:not(:disabled){background:transparent}.color-btn-dot{display:block;width:26px;height:26px;border-radius:50%;box-shadow:0 0 0 1px var(--border)}.color-btn:hover:not(:disabled) .color-btn-dot{box-shadow:0 0 0 2px var(--muted)}.color-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:20;background:var(--bg-elev2);border:1px solid var(--border);border-radius:10px;padding:10px;box-shadow:0 8px 24px #00000073}.color-popover .swatches{flex-wrap:wrap;max-width:176px}.color-custom{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px}.color-input{width:34px;height:28px;padding:2px;border-radius:6px;background:var(--bg-elev2);cursor:pointer}.swatches{display:flex;gap:5px}.swatch{width:20px;height:20px;padding:0;border-radius:50%;border:2px solid transparent;box-shadow:0 0 0 1px var(--border)}.swatch:hover:not(:disabled){filter:brightness(1.15)}.swatch.active{border-color:var(--text)}.markdown{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:24px;line-height:1.75;min-height:200px}.markdown h1,.markdown h2,.markdown h3{margin-top:.6em}.markdown pre{background:var(--bg);padding:12px;border-radius:6px;overflow:auto}.codeblock{position:relative}.codeblock .copy-btn{position:absolute;top:8px;right:8px;padding:3px 8px;font-size:12px;font-weight:500;background:var(--bg-elev2);color:var(--muted);border:1px solid var(--border);border-radius:6px;opacity:0;transition:opacity .15s}.codeblock:hover .copy-btn,.codeblock .copy-btn:focus-visible{opacity:1}.codeblock .copy-btn:hover:not(:disabled){background:var(--bg-elev2);color:var(--text)}@media(pointer:coarse){.codeblock .copy-btn{opacity:1;padding:6px 10px}}.markdown code{background:var(--bg);padding:1px 5px;border-radius:4px}.markdown pre code{padding:0}.markdown pre code.hljs{display:block;color:var(--text);background:transparent}.markdown .hljs-comment,.markdown .hljs-quote{color:#8b949e;font-style:italic}.markdown .hljs-keyword,.markdown .hljs-selector-tag,.markdown .hljs-subst{color:#ff7b72}.markdown .hljs-number,.markdown .hljs-literal,.markdown .hljs-variable,.markdown .hljs-template-variable,.markdown .hljs-attribute{color:#79c0ff}.markdown .hljs-string,.markdown .hljs-doctag,.markdown .hljs-regexp{color:#a5d6ff}.markdown .hljs-title,.markdown .hljs-section,.markdown .hljs-selector-id,.markdown .hljs-selector-class,.markdown .hljs-function .hljs-title{color:#d2a8ff}.markdown .hljs-type,.markdown .hljs-built_in,.markdown .hljs-symbol,.markdown .hljs-bullet{color:#ffa657}.markdown .hljs-meta,.markdown .hljs-link{color:#7ee787}.markdown .hljs-addition{color:#aff5b4;background:#033a16}.markdown .hljs-deletion{color:#ffdcd7;background:#67060c}.markdown .hljs-emphasis{font-style:italic}.markdown .hljs-strong{font-weight:700}.markdown table{border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow-x:auto;margin:.6em 0}.markdown th,.markdown td{border:1px solid var(--border);padding:6px 12px;text-align:left}.markdown th{background:var(--bg-elev2);font-weight:600}.markdown tr:nth-child(2n) td{background:var(--bg)}.markdown .contains-task-list{list-style:none;padding-left:4px}.markdown .task-list-item{display:block;padding-left:24px;overflow-wrap:anywhere}.markdown .task-list-item>ul,.markdown .task-list-item>ol{margin-top:0;margin-bottom:0}.markdown .task-list-item input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;float:left;box-sizing:border-box;width:16px;height:16px;padding:0;margin:3px 8px 0 -24px;border:1.5px solid #d18892;border-radius:4px;background:#e5646e24;position:relative;opacity:1;cursor:default}.markdown .task-list-item input[type=checkbox]:checked{background:#43d18a;border-color:#43d18a}.markdown .task-list-item input[type=checkbox]:checked:after{content:"";position:absolute;left:4.5px;top:1px;width:4px;height:8px;border:solid #06121b;border-width:0 2px 2px 0;transform:rotate(45deg)}@media(max-width:820px){.article-page{grid-template-columns:1fr}.article-links{position:static}}@media(max-width:640px){.topbar{flex-wrap:wrap;height:auto;padding:8px 10px;gap:8px 10px}.nav{order:3;width:100%;flex-wrap:wrap}.nav .map-select{max-width:130px}.nav .nav-btn{margin-left:0}.account{flex-wrap:wrap;justify-content:flex-end;gap:8px 12px}.brand{font-size:15px}.page{padding:16px}.slider{flex:1 1 100%}.slider input[type=range]{flex:1;min-width:0}.auth-wrap{padding:12px}.auth-card{width:100%;padding:22px}.row{margin:8px 0}.markdown{min-height:130px}.title-input{font-size:19px}}@media(pointer:coarse){button{padding:8px 14px}button.x{padding:7px 11px}.map-actions button.ghost{padding:7px 10px}input,textarea,select{padding:10px 12px}.swatch{width:26px;height:26px}.nav a,.nav .nav-btn{padding:7px 12px}.color-input{width:40px;height:34px}}.ui-icon{width:18px;height:18px;display:block;flex-shrink:0}.brand{display:flex;align-items:center;gap:9px;letter-spacing:-.3px;white-space:nowrap}.brand .ui-icon{color:var(--accent);width:22px;height:22px}button,a,input,textarea,select{transition:background-color .14s ease,border-color .14s ease,color .14s ease}button,input,textarea,select{border-radius:8px}button.ghost:hover:not(:disabled){background:var(--bg-elev2);border-color:#46536a}button.danger{background:transparent;border-color:#56323d}button.danger:hover:not(:disabled){background:var(--danger-bg);color:#ffabb3}:where(button,a,input,textarea,select):focus-visible{outline:2px solid var(--accent);outline-offset:3px}input:focus,textarea:focus,select:focus{border-color:var(--accent)}::selection{background:#304c75;color:#fff}::placeholder{color:var(--muted);opacity:.8}.control-group{background:transparent;border-color:transparent;gap:4px}.nav.control-group{border-left-color:var(--border);border-radius:0;padding-left:12px}.nav a.active{background:#26354b;color:#bad5ff}.nav .map-btn,.account .icon-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);min-width:32px;min-height:32px}.nav .map-btn:hover:not(:disabled),.account .icon-btn:hover{color:var(--text)}.lang-switch{border-color:transparent;background:var(--bg)}.lang-switch button.active{background:#26354b;color:#bad5ff}.lang-switch button+button{border-left-color:transparent}.map-actions{background:var(--bg);border-color:var(--border)}.map-actions button{font-size:12px}.article-toolbar{padding:8px 0 14px;border-bottom:1px solid var(--border);margin-bottom:18px}.article-links,.markdown,.backup-card,.stat{border-radius:12px}.article-links{padding:20px}.article-links h3{font-size:15px;font-weight:600}.article-links h4{font-size:12px;letter-spacing:.04em}.link-list li{padding:8px 0}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown h1,.markdown h2,.markdown h3{line-height:1.3;letter-spacing:-.025em}.markdown blockquote{margin-left:0;padding-left:16px;border-left:2px solid var(--accent);color:var(--muted)}.markdown .task-list-item{margin:4px 0}.markdown .task-list-item input[type=checkbox]{margin-top:5px}.auth-card{width:min(380px,100%);padding:32px;gap:16px;box-shadow:0 16px 48px #0003}.content{scrollbar-color:#354054 var(--bg);scrollbar-width:thin}@media(max-width:640px){.title-input{font-size:23px}.body-input,.markdown{padding:16px}.nav.control-group{border-left:0;padding-left:3px}.topbar-map-actions{order:4;margin:0 auto}.account{gap:4px}.profile-stats{flex-wrap:wrap}.stat{min-width:100px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.markdown .task-list-item>.contains-task-list{margin:6px 0 8px -16px;padding-left:25px}.markdown .contains-task-list .contains-task-list>.task-list-item{position:relative}.markdown .contains-task-list .contains-task-list>.task-list-item:before{content:"";position:absolute;top:-4px;bottom:-4px;left:-25px;border-left:1px solid #46536a;pointer-events:none}.markdown .contains-task-list .contains-task-list>.task-list-item:last-child:before{bottom:auto;height:17px}.markdown .contains-task-list .contains-task-list>.task-list-item:after{content:"";position:absolute;top:13px;left:-25px;width:19px;border-top:1px solid #46536a;pointer-events:none}
