@font-face{font-family:Thmanyah;src:url('/assets/thmanyah-regular.otf') format('opentype');font-weight:400;font-display:swap}
@font-face{font-family:Thmanyah;src:url('/assets/thmanyah-bold.otf') format('opentype');font-weight:700 900;font-display:swap}
:root{--ink:#17283b;--muted:#6c7d8c;--line:#dfe8e9;--paper:#f3f8f8;--white:#fff;--navy:#101f30;--teal:#00af90;--mint:#daf8ee;--danger:#b73641;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:400 15px/1.65 Thmanyah,Tahoma,sans-serif}button,input,select{font:inherit}button,a,input,select{transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}button{cursor:pointer}a{text-decoration:none;color:inherit}a:hover{color:var(--teal)}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.workspace{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#aebfc6;padding:32px 20px;display:flex;flex-direction:column;gap:58px}.brand{display:flex;align-items:center;gap:12px;color:#f0faf7!important;font-size:20px;font-weight:900;white-space:nowrap}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:.04em;color:#82a5ab;line-height:1.2}.brand-mark,.login-symbol{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:transparent;color:#102e33;font-weight:900;font-size:25px;overflow:hidden}.brand-mark img,.login-symbol img{width:100%;height:100%;object-fit:cover;display:block}.sidebar nav{display:grid;gap:8px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 13px;border-radius:11px;font-weight:700;font-size:14px}.nav-item:hover{background:#1f3747;color:#fff}.nav-item.active{background:#194e50;color:#e8fff6}.nav-icon{width:25px;text-align:center;font-size:20px;font-weight:400}.sidebar-bottom{margin-top:auto;border-top:1px solid #314559;padding-top:21px;font-size:12px}.connection-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#29cda5;margin-left:6px}.logout{display:block;background:none;color:#aebfc6;border:0;padding:15px 0 0;font-size:12px}.logout:hover{color:#fff}.main-area{min-width:0;display:flex;flex-direction:column}.topbar{height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,64px);border-bottom:1px solid var(--line);background:#fafdfc}.eyebrow{font:700 10px/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.2em;color:var(--teal)}.topbar-right{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:13px}.avatar{width:33px;height:33px;background:#d3eee8;color:#166e5e;border-radius:50%;display:grid;place-items:center;font:700 16px Thmanyah}.content{width:100%;max-width:1640px;margin:0 auto;padding:clamp(26px,4vw,62px);flex:1}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:32px}.page-heading h1{font-size:clamp(28px,3vw,44px);line-height:1.12;letter-spacing:-.04em;margin:11px 0 6px;font-weight:900}.page-heading p{margin:0;color:var(--muted);font-size:14px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:28px}.metric{min-height:170px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;display:flex;flex-direction:column}.metric-icon{color:#0da98c;font-size:25px;line-height:1}.metric-number{font:900 clamp(27px,3vw,40px)/1.1 Thmanyah;margin:auto 0 3px}.metric-label{font-size:13px;color:var(--muted)}.overview-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.panel{background:var(--white);border:1px solid var(--line);border-radius:16px;overflow:hidden}.panel-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-head h2,.form-panel h3{font-size:19px;margin:0;font-weight:900}.panel-head a,.text-action{font-size:12px;color:#078b74;font-weight:700}.subtle,.hint,td small{color:var(--muted)}td small{display:block;font-size:11px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:right;min-width:470px}th{color:#718a94;font-size:11px;font-weight:700;background:#f8fbfb}td,th{padding:15px 18px;border-bottom:1px solid #edf1f1}td{font-size:13px;vertical-align:middle}tr:last-child td{border-bottom:0}tr:hover td{background:#fbfdfd}.code{font:500 12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr;unicode-bidi:isolate}.badge{display:inline-block;border-radius:30px;padding:3px 9px;background:#eef2f3;color:#4d6370;font-size:11px;white-space:nowrap}.badge-positive{background:#e0f7ec;color:#147b5c}.status-yes{color:#069270;white-space:nowrap}.empty{text-align:center!important;padding:40px 15px;color:var(--muted)}.split-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.75fr);gap:20px;align-items:start}.search{margin:18px 21px;display:flex;gap:8px}.search input{min-width:0;flex:1}.search button,.secondary{border:1px solid var(--line);background:#e9f4f1;color:#166e5e;border-radius:10px;font-weight:700;padding:10px 15px}.search button:hover,.secondary:hover{background:#daf0e9}.search input,.form-field input,.form-field select{padding:10px 12px;border:1px solid #d8e3e6;border-radius:10px;background:#fff;color:var(--ink);outline:0}.form-field input:focus,.form-field select:focus,.search input:focus{border-color:var(--teal)}.form-panel{padding-bottom:22px}.form-panel .panel-head{margin-bottom:20px}.form-panel h3{padding:0 22px;font-size:16px}.form-stack{padding:0 22px;display:grid;gap:15px}.form-field{display:grid;gap:5px;font-size:12px;font-weight:700;color:#47606c}.form-field input,.form-field select{width:100%;font-size:13px;font-weight:400}.form-field input[type=file]{background:#f7faf9;font-size:11px;max-width:100%}.checkbox{display:flex;align-items:center;gap:8px;font-size:13px;color:#455a67}.checkbox input{accent-color:var(--teal);width:16px;height:16px}.primary{background:#092d35;border:1px solid #092d35;color:white;border-radius:10px;padding:11px 18px;font-size:14px;font-weight:700}.primary:hover{background:#0c4951;transform:translateY(-1px)}.primary.full{width:100%}.hint{font-size:11px;line-height:1.6;margin:0 22px}.form-stack .hint{margin:0}.divider{height:1px;background:var(--line);margin:24px 22px}.form-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin:21px 22px 0;padding-top:16px}.danger-link{background:none;border:0;color:var(--danger);font-size:12px;font-weight:700;padding:0}.danger-link:hover{text-decoration:underline}.inline-form{display:inline}.pagination{display:flex;justify-content:space-between;padding:15px 21px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}.pagination a{padding:5px 10px;border:1px solid var(--line);border-radius:7px;margin-right:6px}.notice{border:1px solid #b7e8d6;background:#ebfaf2;padding:12px 18px;color:#096d55;margin-bottom:25px;border-radius:10px;font-size:13px}.notice-error{border-color:#efc3c3;background:#fff1f1;color:#9b2536}.footer{padding:18px 30px;color:#879aa4;border-top:1px solid var(--line);font-size:11px;text-align:center}.footer span{margin:0 7px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:#101f30 radial-gradient(ellipse at 10% 80%,#20534e 0,transparent 55%);padding:24px}.login-panel{width:min(450px,100%);background:#fcfefd;border:1px solid #d5e8e3;border-radius:18px;padding:clamp(28px,5vw,50px);box-shadow:0 30px 90px #031e2547}.login-panel .login-symbol{margin-bottom:28px;width:60px;height:60px;border-radius:16px}.login-panel h1{font-size:38px;line-height:1.1;margin:11px 0 8px}.login-panel p{font-size:13px;color:var(--muted);margin:0 0 26px}.login-form{display:grid;gap:17px}.login-panel small{display:block;margin-top:24px;color:#8da0a9;text-align:center}
@media(max-width:1050px){.workspace{grid-template-columns:200px minmax(0,1fr)}.split-layout{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.workspace{display:block}.sidebar{padding:14px 16px 10px;gap:10px}.brand{font-size:16px}.brand-mark{width:30px;height:30px;font-size:19px}.brand small,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow:auto;gap:5px}.nav-item{white-space:nowrap;padding:7px 10px;font-size:12px}.nav-icon{display:none}.topbar{height:48px;padding:0 18px}.topbar-right{font-size:11px}.content{padding:24px 15px}.metrics{gap:8px}.metric{min-height:120px;padding:15px}.overview-grid{grid-template-columns:1fr}.page-heading h1{font-size:29px}.form-panel{order:-1}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Repositories */
.repo-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:20px 0}
.repo-totals{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.repo-totals strong{font:900 22px Thmanyah;color:var(--ink)}
.repo-totals span{color:#c6d4d8}
.repo-hint{color:var(--muted);font-size:11px}
.repo-toolbar-actions{display:flex;align-items:center;gap:12px}
.repo-search{display:flex;gap:12px;align-items:center;max-width:760px;margin:0;flex-wrap:wrap}
.repo-search input{flex:1;min-width:160px;padding:12px 16px;border:1px solid #d8e3e6;border-radius:11px;background:#fff;outline:0}
.repo-search input:focus{border-color:var(--teal)}
.repo-search select{padding:12px;border:1px solid #d8e3e6;border-radius:11px;background:#fcfefd;color:var(--ink);max-width:100%;font-size:12px}
.repo-global-results{margin-top:24px}
.repo-search .primary{padding:11px 22px;border-radius:11px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.repo-result-label{font:900 15px Thmanyah;color:var(--ink);margin:16px 0 14px}
.repo-grid-heading{display:flex;align-items:center;justify-content:space-between;margin:32px 0 16px;gap:12px}
.repo-grid-heading h2{margin:0;font-size:20px;font-weight:700}
.repo-grid-heading .repo-result-label{margin:0;font-size:12px;font-weight:400;color:var(--muted)}
.repo-directory{margin-top:28px;min-width:0;border:1px solid #dce5e3;border-radius:14px;background:#fcfefd;overflow:hidden;container-type:inline-size}
.repo-directory-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px;border-bottom:1px solid #e6ece9}
.repo-directory-bar .repo-result-label{margin:0;font-size:12px;color:#6f8188;font-weight:400;white-space:nowrap}
.repo-filters{display:flex;align-items:center;gap:6px;min-width:0;max-width:100%;overflow-x:auto}
.repo-filter{padding:7px 13px;border-radius:7px;white-space:nowrap;font-size:12px;color:#687d83;font-weight:700}
.repo-filter:hover{background:#f0f5f2;color:#254e43}
.repo-filter.is-active{background:#e5f1eb;color:#1e6453}
.repo-directory-columns,.repo-card{display:grid;grid-template-columns:minmax(0,1fr) 140px 90px 85px;column-gap:20px;align-items:center}
.repo-directory-columns{padding:10px 24px;background:#f6f9f7;color:#7b8e91;font-size:11px;border-bottom:1px solid #e6ece9}
.repos-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.repo-card{min-width:0;padding:19px 24px;background:transparent;border:0;border-bottom:1px solid #edf1ee;border-radius:0;box-shadow:none;transition:background-color .16s ease;text-decoration:none}
.repo-card:last-child{border-bottom:0}
.repo-card:hover{background:#f4f9f6;transform:none;box-shadow:none}
.repo-card:focus-visible{outline:2px solid #078b74;outline-offset:-3px}
.repo-card-top{min-width:0;display:flex;align-items:center;gap:14px}
.repo-source-symbol{display:grid;place-items:center;width:42px;height:42px;flex-shrink:0;border-radius:10px;font-size:15px;font-weight:700;color:#346956;background:#e9f1e9;border:0}
.repo-tone-1{color:#5b6082;background:#edecf5}.repo-tone-2{color:#8c6944;background:#f4ede3}.repo-tone-3{color:#426777;background:#e8f0f3}
.repo-identity{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}
.repo-identity strong{color:#243b42;font-size:16px;font-weight:700;line-height:1.4;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.repo-source-meta{display:flex;gap:10px;align-items:center;min-width:0}
.repo-identity small{font-size:11px;line-height:1.5;color:#859396;text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.repo-card-meta{min-width:0;display:flex;align-items:flex-start;flex-direction:column;gap:5px}
.repo-kind{font:400 10px/1.5 Thmanyah;color:#81908e;white-space:nowrap;border-inline-start:1px solid #dfe7e1;padding-inline-start:10px}
.repo-sync-time{font-size:10px;color:#85958f}
.repo-monogram{width:42px;height:42px;flex-shrink:0;border-radius:11px;background:#eaf3f1;color:#20564c;border:1px solid #dceae5;display:grid;place-items:center;font:700 19px Thmanyah}
.repo-state{display:inline-flex;align-items:center;gap:6px;border-radius:5px;padding:3px 8px;font-size:11px;white-space:nowrap;font-weight:400}
.repo-state::before{content:'';width:5px;height:5px;flex-shrink:0;border-radius:50%;background:currentColor}
.repo-state-ready{background:#e0f7ec;color:#147b5c}
.repo-state-stale{background:#fff3d6;color:#a06f14}
.repo-state-fresh{background:#eef2f3;color:#4d6370}
.repo-state-error{background:#ffe9e9;color:#b73641}
.repo-body{min-width:0;display:flex;flex-direction:column;gap:6px;flex:1}
.repo-body strong{font-size:17px;line-height:1.45;min-height:2.9em;color:var(--ink);font-weight:700;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.repo-body small{font-size:12px;color:#607680;direction:ltr;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.repo-path{font:400 10px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;color:#758992;direction:ltr;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.repo-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e9efec;padding-top:16px;margin-top:auto;color:var(--muted);font-size:12px}
.repo-count{display:flex;align-items:baseline;gap:5px;color:#84938d;font-weight:400}
.repo-count strong{color:#374f46;font:700 17px/1.2 Thmanyah;font-variant-numeric:tabular-nums}
.repo-count small{font-size:10px}
.repo-open{display:flex;align-items:center;justify-content:center;gap:9px;color:#2b6651;font-weight:700;font-size:12px;white-space:nowrap;background:#edf5f0;border:1px solid #dfebe3;padding:7px 10px;border-radius:7px}
.repo-open i{font-style:normal;display:inline-block;transition:transform .18s ease}
.repo-card:hover .repo-open i{transform:translateX(-3px)}
.repo-empty{text-align:center;padding:52px 20px;background:var(--white);border:1px solid var(--line);border-radius:16px}
.repo-empty h2{font-size:19px;margin:0 0 8px;font-weight:900;color:var(--ink)}
.repo-empty p{color:var(--muted);font-size:13px;margin:0 0 18px}
.repo-back{display:block;margin-bottom:14px}
.repo-app-panel{overflow:visible}
.repo-app-name{display:flex;align-items:center;gap:12px}
.repo-app-icon{width:34px;height:34px;border-radius:9px;object-fit:cover;background:#f1f5f5}
.repo-icon-slot{position:relative;display:block;width:34px;height:34px;flex-shrink:0}
.repo-icon-slot .repo-app-icon{position:absolute;inset:0}
.repo-app-name .repo-monogram{width:34px;height:34px;border-radius:9px;font-size:15px}
.repo-app-name div{display:flex;flex-direction:column;gap:2px;min-width:0}
.repo-app-name strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.repo-app-name small{font-size:10.5px;color:var(--muted)}
.repo-app-name small:first-child{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr}
.repo-version-pill{display:inline-block;border-radius:30px;padding:2px 9px;background:#eef2f3;color:#3f5363;font-size:11px;font-weight:700;white-space:nowrap}
.repo-size{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}
.repo-imported-badge{display:inline-flex;align-items:center;gap:5px;border-radius:30px;padding:4px 11px;background:#e0f7ec;color:#147b5c;font-size:11px;font-weight:800;white-space:nowrap}
.repo-actions{text-align:center;white-space:nowrap}
.import-error{display:block;max-width:240px;white-space:normal;color:var(--danger);font-size:11px;line-height:1.6;margin-top:8px}
.repo-app-table td{vertical-align:middle}
.repo-app-table .secondary{padding:9px 16px;font-size:12px}
/* Respond to the directory's actual width, including sidebar/padding, not
   just viewport width. The previous tablet layout could squeeze names away. */
@container (max-width:760px){.repo-directory-columns,.repo-card{grid-template-columns:minmax(0,1fr) 110px 65px 74px;column-gap:12px}.repo-kind{display:none}.repo-directory-bar{flex-wrap:wrap}.repo-filters{width:100%}}
@container (max-width:600px){.repo-directory-columns{display:none}.repo-directory-bar{padding:12px;gap:8px}.repo-filters{gap:3px}.repo-filter{padding:7px 9px}.repo-card{padding:16px;grid-template-columns:minmax(0,1fr) 74px;gap:12px}.repo-card-top{grid-column:1/-1;gap:12px}.repo-card-meta{grid-column:1;grid-row:2}.repo-count{grid-column:1;grid-row:3}.repo-open{grid-column:2;grid-row:2/4;align-self:center}.repo-sync-time{display:none}.repo-source-symbol{width:38px;height:38px}.repo-identity strong{font-size:15px}}
@media(max-width:700px){.repo-toolbar{align-items:flex-start;flex-direction:column}.repo-toolbar-actions{flex-wrap:wrap}.repo-totals{flex-wrap:wrap}.repo-search{max-width:none}.repo-search .text-action{flex-basis:100%}}
