:root{--ink: #000000;--blue: #0069e1;--blue-dark: #0055b8;--gold: #d2b482;--paper: #f5f5f5;--bg: var(--paper);--surface: #ffffff;--fg: var(--ink);--muted: #5b5b5b;--muted-soft: #8a8a8a;--line: #e2e2e2;--line-strong: #cfcfcf;--accent: var(--blue);--accent-soft: rgba(0, 105, 225, .1);--danger: #c8281f;--radius: 14px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 28px -12px rgba(0, 0, 0, .12)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--fg);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;min-height:100dvh}#app{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.shell{flex:1;min-height:0;display:flex;flex-direction:column;padding:clamp(.75rem,3vw,2rem);max-width:1100px;width:100%;margin:0 auto}.auth-main{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:clamp(1rem,3vh,2rem)}.auth-main.compact{justify-content:flex-start;padding-top:clamp(1rem,4vh,3rem)}.logo-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;opacity:0;transform:translateY(10px);animation:rise .7s cubic-bezier(.2,.8,.2,1) .05s forwards}.logo{width:clamp(120px,17vh,190px);height:auto;display:block}.logo-sm{width:clamp(76px,11vh,110px)}.wordmark{font-weight:700;letter-spacing:.02em;font-size:clamp(1.8rem,6vw,2.6rem);color:var(--ink);line-height:1}.wordmark .dot{color:var(--blue)}.tagline{margin-top:.5rem;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.auth-card,.profile-card,.admin-card{position:relative;width:100%;max-width:440px;padding:clamp(1.5rem,4vh,2.25rem) clamp(1.4rem,4vw,2.25rem);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;gap:clamp(.75rem,2vh,1.1rem);text-align:left;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);animation:rise .7s cubic-bezier(.2,.8,.2,1) .18s forwards}.admin-card{max-width:960px}.card-title{font-size:clamp(1.45rem,4vw,1.8rem);font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--ink)}.section-title{font-size:.74rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem}.label{display:flex;flex-direction:column;gap:.45rem;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}.input{appearance:none;-webkit-appearance:none;width:100%;font:inherit;background:#fff;color:var(--fg);border:1px solid var(--line-strong);border-radius:10px;padding:.7rem .9rem;font-size:1rem;letter-spacing:normal;text-transform:none;min-height:44px;transition:border-color .15s ease,box-shadow .15s ease}.input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--accent-soft)}.input::placeholder{color:var(--muted-soft)}.btn{appearance:none;-webkit-appearance:none;font:inherit;cursor:pointer;border:1px solid transparent;border-radius:10px;padding:.7rem 1.1rem;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;font-weight:600;text-decoration:none;text-align:center;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .05s ease,box-shadow .15s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover:not(:disabled){background:var(--blue-dark)}.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line-strong)}.btn-ghost:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}.btn-sm{padding:.5rem .8rem;font-size:.7rem;min-height:36px}.link{color:var(--blue);text-decoration:none;font-weight:600;transition:color .15s ease}.link:hover{color:var(--blue-dark);text-decoration:underline}.form-error{color:var(--danger);font-size:.88rem;min-height:1.2rem;line-height:1.4}.switch-row{text-align:center;color:var(--muted);font-size:.9rem;padding-top:.5rem;border-top:1px solid var(--line)}.badge{padding:.7rem .9rem;background:var(--accent-soft);border:1px solid rgba(0,105,225,.25);border-radius:10px;font-size:.85rem;color:var(--blue-dark);line-height:1.4}.muted{color:var(--muted);font-size:.88rem;line-height:1.55}.profile-email{font-size:1.05rem;color:var(--ink);font-weight:500;word-break:break-all}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.6rem 1.5rem;margin:.5rem 0}.kv dt{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-soft);align-self:center;font-weight:600}.kv dd{font-size:.95rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9rem}.tag{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;background:#efefef;border:1px solid var(--line-strong);font-weight:600}.tag-admin{background:var(--accent-soft);border-color:#0069e14d;color:var(--blue-dark)}.actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.5rem}.actions .btn{flex:1 1 auto;min-width:0}.admin-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.admin-section{border-top:1px solid var(--line);padding-top:1rem;margin-top:.25rem}.admin-section.flex-fill{display:flex;flex-direction:column;min-height:0;flex:1}.toggle-row{display:flex;align-items:center;gap:.8rem;cursor:pointer;font-size:.95rem;padding:.5rem 0}.toggle-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--blue);cursor:pointer}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;-webkit-overflow-scrolling:touch;flex:1;min-height:0}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:540px}.admin-table th,.admin-table td{padding:.85rem 1rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.admin-table thead th{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);background:#fafafa;position:sticky;top:0}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover td{background:#fafafa}.admin-table .center{text-align:center}.admin-table .right{text-align:right}.admin-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue);cursor:pointer}.source-group{margin-top:1rem}.source-group:first-of-type{margin-top:.25rem}.group-title{font-size:.9rem;font-weight:700;color:var(--ink);margin-bottom:.5rem;padding-left:.55rem;border-left:3px solid var(--blue)}.group-count{color:var(--muted-soft);font-weight:500}.portal{display:grid;grid-template-columns:264px 1fr;min-height:100dvh;width:100%}.sidebar{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:.75rem;padding:1rem .75rem;position:sticky;top:0;height:100dvh}.sidebar-head{display:flex;align-items:center;gap:.6rem;padding:.3rem .5rem .6rem}.side-icon{width:34px;height:34px;border-radius:9px;display:block}.side-word{font-weight:800;letter-spacing:.04em;font-size:1.05rem}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem;flex:1;overflow:auto;min-height:0}.nav-group-label{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-soft);font-weight:700;margin:.85rem .6rem .3rem}.nav-item{display:flex;align-items:center;gap:.7rem;padding:.55rem .7rem;border-radius:9px;color:var(--ink);text-decoration:none;font-size:.92rem;font-weight:500;transition:background .12s ease,color .12s ease}.nav-item:hover{background:var(--paper)}.nav-item.active{background:var(--accent-soft);color:var(--blue-dark);font-weight:600}.nav-ico{width:20px;height:20px;display:inline-flex;color:var(--muted);flex-shrink:0}.nav-ico svg{width:20px;height:20px}.nav-item.active .nav-ico{color:var(--blue)}.sidebar-foot{display:flex;align-items:center;gap:.6rem;padding:.7rem .5rem .2rem;border-top:1px solid var(--line)}.avatar{width:38px;height:38px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.82rem;flex-shrink:0}.who{flex:1;min-width:0}.who-email{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.who-role{font-size:.72rem;color:var(--muted)}.icon-btn{border:1px solid var(--line-strong);background:#fff;border-radius:8px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);flex-shrink:0}.icon-btn:hover{border-color:var(--blue);color:var(--blue)}.portal-main{display:flex;flex-direction:column;min-width:0}.topbar{padding:1.1rem clamp(1rem,3vw,2.2rem);border-bottom:1px solid var(--line);background:#ffffffbf;backdrop-filter:blur(8px);position:sticky;top:0;z-index:5}.topbar-title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.portal-content{padding:clamp(1rem,3vw,2.2rem)}.stack{display:flex;flex-direction:column;gap:1.1rem;max-width:920px}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:clamp(1.1rem,2.5vw,1.6rem);box-shadow:var(--shadow)}.panel-title{font-size:1.05rem;font-weight:700;margin-bottom:.5rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem}.stat{text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;box-shadow:var(--shadow);font:inherit;min-width:0;overflow:hidden}.stat>div{min-width:0;flex:1}.stat-link{cursor:pointer;transition:border-color .12s ease}.stat-link:hover{border-color:var(--blue)}.stat-value{font-size:clamp(1.05rem,2.4vw,1.45rem);font-weight:800;color:var(--ink);line-height:1.15;overflow-wrap:anywhere}.stat-label{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:.2rem;overflow-wrap:anywhere}.abo-badge{display:inline-block;background:var(--accent-soft);color:var(--blue-dark);border:1px solid rgba(0,105,225,.3);font-weight:700;padding:.4rem .9rem;border-radius:999px;margin:.2rem 0 .9rem}.source-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem;margin-top:.6rem}.source-card{border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem}.source-name{font-weight:600;margin:.45rem 0 .2rem}.jur{margin-top:1.1rem}.jur-title{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1rem;color:var(--ink);margin-bottom:.6rem}.jur-dot{width:13px;height:13px;border-radius:3px;background:var(--c, var(--blue))}.data-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.7rem}.data-card{border:1px solid var(--line);border-left:4px solid var(--c, var(--blue));border-radius:10px;padding:.7rem .8rem;background:#fff;transition:box-shadow .12s ease}.data-card:hover{box-shadow:0 6px 18px -10px #00000040}.data-abbr{display:inline-block;font-weight:700;font-size:.72rem;letter-spacing:.03em;padding:.16rem .5rem;border-radius:6px;color:#fff;background:var(--c, var(--blue))}.data-name{font-weight:600;font-size:.9rem;margin:.45rem 0 .15rem;line-height:1.25}.data-meta{color:var(--muted);font-size:.78rem}.catalog-group{margin-top:1.1rem}.catalog-cat{margin-top:.7rem}.cat-label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:.2rem 0 .4rem}.cat-card{text-decoration:none;color:inherit;display:block;transition:border-color .12s ease,box-shadow .12s ease}.cat-card:hover{border-color:var(--blue);box-shadow:0 6px 18px -10px #0069e180}.name-edit{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.input.mini{min-height:34px;padding:.35rem .5rem;width:120px;font-size:.85rem}.spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid rgba(0,105,225,.25);border-top-color:var(--blue);animation:spin .7s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.btn-done{color:#168a52!important;border-color:#16965a80!important;background:#16965a14!important}.btn-done .check{font-weight:800}.table-scroll{max-height:52vh}.doc-content{white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82rem;line-height:1.5;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem;max-height:360px;overflow:auto}.chunk{border:1px solid var(--line);border-radius:10px;padding:.7rem .8rem;margin-top:.5rem}.chunk-head{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:.35rem}.chunk-text{font-size:.88rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}@media (max-width: 860px){.portal{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:0;border-bottom:1px solid var(--line)}.sidebar-head{flex:1}.sidebar-nav{flex-direction:row;flex-wrap:wrap;order:3;flex:1 1 100%;overflow:visible}.nav-group-label{display:none}.sidebar-foot{border-top:0;padding:.2rem .5rem}.who{display:none}}.auth-host{width:100%;display:flex;justify-content:center}.brand{display:flex;flex-direction:column;align-items:center;gap:.15rem}.brand-tile{width:92px;height:92px;display:block;margin-bottom:.5rem}.side-word .dot{color:var(--blue)}.dot.square{display:inline-block;width:.16em;height:.16em;margin-left:.04em;background:var(--blue);border-radius:1px;vertical-align:baseline}.hero{background:linear-gradient(120deg,var(--blue) 0%,#0a3f87 100%);color:#fff;border-radius:16px;padding:clamp(1.3rem,3vw,1.9rem);box-shadow:0 10px 30px -14px #0069e199}.hero-title{font-size:1.45rem;font-weight:800;letter-spacing:-.01em}.hero-sub{opacity:.9;margin-top:.25rem}.stat{display:flex;align-items:center;gap:.9rem}.stat-ico{width:42px;height:42px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accent-soft);color:var(--blue)}.stat-ico svg{width:22px;height:22px}.stat-slate .stat-ico{background:#e6ecf3;color:#38618c}.stat-ink .stat-ico{background:#ececec;color:var(--ink)}.stat-green .stat-ico{background:#16965a29;color:#168a52}.stat-muted .stat-ico{background:#ececec;color:var(--muted)}.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.row .input{flex:1;min-width:160px}.mini-select{font:inherit;padding:.4rem .55rem;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer}.mini-select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--accent-soft)}.key-reveal{border-color:var(--blue);background:var(--accent-soft)}.key-value{background:#0d1b2a;color:#e6edf6;padding:.7rem .9rem;border-radius:8px;word-break:break-all;margin:.5rem 0;font-size:.9rem}.qr{width:196px;height:196px;background:#fff;padding:8px;border:1px solid var(--line);border-radius:10px;margin:.6rem 0}.qr svg{width:100%;height:100%;display:block}.recovery{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.5rem;margin:.6rem 0}.recovery code{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:.4rem .5rem;text-align:center;letter-spacing:.05em}.badge-ok{display:inline-block;background:#16965a24;color:#168a52;border:1px solid rgba(22,150,90,.3);border-radius:999px;padding:.25rem .7rem;font-weight:700;font-size:.8rem}.badge-ok.sm{padding:.1rem .5rem;font-size:.7rem}.steps{list-style:none;display:flex;gap:.5rem;margin:0 0 1.1rem;padding:0;flex-wrap:wrap}.step{display:flex;align-items:center;gap:.45rem;color:var(--muted-soft);font-size:.85rem;font-weight:600}.step:not(:last-child):after{content:"";width:24px;height:2px;background:var(--line-strong);margin-left:.5rem}.step-num{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--paper);border:1px solid var(--line-strong);font-size:.8rem;color:var(--muted)}.step.active{color:var(--ink)}.step.active .step-num{background:var(--blue);border-color:var(--blue);color:#fff}.step.done{color:var(--ink)}.step.done .step-num{background:#16965a24;border-color:#16965a66;color:#168a52}.manual{margin:.4rem 0}.manual summary{cursor:pointer;color:var(--blue);font-size:.88rem;font-weight:600}@keyframes rise{to{opacity:1;transform:translateY(0)}}@media (max-width: 600px){#app{padding:1rem}.auth-main{gap:1.5rem}.actions{flex-direction:column}.actions .btn{width:100%}.admin-head{flex-direction:column;align-items:stretch}.kv{grid-template-columns:1fr;gap:.1rem 0}.kv dt{margin-top:.6rem}}@media (prefers-reduced-motion: reduce){.logo-wrap,.auth-card,.profile-card,.admin-card{animation:none;opacity:1;transform:none}}
