@font-face{
  font-family:"Instrument Sans";
  src:url('/fonts/instrument-sans-regular.ttf') format('truetype');
  font-weight:400;
  font-display:swap
}
@font-face{
  font-family:"Instrument Sans";
  src:url('/fonts/instrument-sans-semibold.ttf') format('truetype');
  font-weight:500 700;
  font-display:swap
}
:root{
  --ground:#fff;
  --surface:#f5f7f6;
  --raised:#fff;
  --text:#1f201d;
  --muted:#626761;
  --faint:#626761;
  --accent:#1b6e66;
  --border:#e6eae7;
  --control:#bfc8c1;
  --negative:#b42318;
  --active:#edf0ee;
  --radius-card:22px;
  --gap:16px;
  --font:"Instrument Sans","PingFang SC","Microsoft YaHei",system-ui,sans-serif
}
*{
  box-sizing:border-box
}
body{
  margin:0;
  background:var(--ground);
  color:var(--text);
  font:400 15px/1.65 var(--font);
  -webkit-font-smoothing:antialiased
}
h1,h2,h3,p{
  margin:0
}
h1{
  font-size:28px;
  font-weight:500;
  letter-spacing:-.035em;
  line-height:1.4
}
h2{
  font-size:16px;
  font-weight:600;
  line-height:1.5
}
a{
  color:inherit;
  text-decoration:none
}
button,input{
  font:inherit
}
button,a,input{
  -webkit-tap-highlight-color:transparent
}
button{
  cursor:pointer
}
button:disabled{
  cursor:wait
}
a:focus-visible,button:focus-visible,input:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:4px
}
button:disabled{
  opacity:.7
}
button{
  color:var(--text)
}
[hidden]{
  display:none!important
}
p{
  color:var(--muted)
}
::selection{
  background:#d9e9df
}
a:hover{
  text-decoration:underline;
  text-underline-offset:4px
}
svg{
  flex:none
}
.sr-only,.skip:not(:focus){
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0
}
.skip:focus{
  position:fixed;
  top:12px;
  left:20px;
  z-index:50;
  background:var(--ground);
  padding:12px
}
.shell{
  display:grid;
  grid-template-columns:224px minmax(0,1fr);
  min-height:100vh
}
.sidebar{
  padding:40px 24px 24px;
  border-right:1px solid var(--border);
  display:flex;
  flex-direction:column;
  position:sticky;
  top:0;
  height:100vh
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:25px;
  line-height:1.25;
  font-weight:600;
  letter-spacing:-1px
}
.brand:hover{
  text-decoration:none
}
.brand-mark{
  width:29px;
  height:29px;
  color:var(--accent)
}
.brand-note{
  display:block;
  font-size:12px;
  letter-spacing:0;
  color:var(--muted);
  font-weight:400;
  margin-top:7px
}
.navigation{
  display:flex;
  flex-direction:column;
  flex:1;
  padding-top:60px
}
.nav-group>p{
  font-size:12px;
  margin-bottom:15px;
  padding-left:12px
}
.nav-group nav{
  display:grid;
  gap:8px
}
.nav-group nav a{
  display:block;
  padding:10px 12px;
  border-radius:8px;
  font-size:14px;
  color:var(--muted)
}
.nav-group nav a[aria-current]{
  background:var(--active);
  color:var(--text);
  font-weight:500
}
.nav-group nav a:hover{
  color:var(--text);
  text-decoration:none;
  outline:1px solid var(--control)
}
.sidebar-bottom{
  margin-top:auto;
  padding-top:32px;
  display:grid;
  gap:10px
}
.identity{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:12px
}
.avatar{
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  border-radius:50%;
  background:var(--active);
  font-size:12px;
  color:var(--muted)
}
.identity strong{
  font-size:13px;
  font-weight:500;
  display:block;
  word-break:break-word
}
.identity div>span{
  display:block;
  font-size:12px;
  color:var(--muted)
}
.sidebar-domain{
  font-size:12px;
  color:var(--muted);
  margin-top:20px
}
.menu-toggle{
  display:none!important
}
.canvas{
  width:100%;
  max-width:1228px;
  padding:64px 48px 24px;
  margin:auto;
  align-self:start
}
main{
  min-height:calc(100vh - 160px)
}
.page-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-bottom:32px
}
.page-heading p{
  margin-top:12px;
  font-size:14px
}
.quiet-label{
  font-size:12px;
  color:var(--muted);
  white-space:nowrap
}
.intro-strip{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:19px 0;
  border-block:1px solid var(--border);
  margin-bottom:36px;
  font-size:13px
}
.intro-strip p{
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--text)
}
.intro-strip a{
  white-space:nowrap;
  font-weight:500
}
.dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent);
  display:inline-block
}
/* 12 columns: 12 * (available - 11 * 16) / 12 + 11 * 16 = available.
Catalogue takes 9 columns, access explanation 3;
tool cards split the 9-column area. */
.content-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:var(--gap);
  align-items:start
}
.catalog-section{
  grid-column:span 9
}
.section-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:16px
}
.section-heading h2{
  font-size:16px
}
.item-count{
  color:var(--muted);
  font-size:12px;
  font-variant-numeric:tabular-nums
}
.search{
  display:flex;
  align-items:center;
  border:1px solid var(--control);
  border-radius:999px;
  gap:10px;
  padding:0 14px;
  min-height:44px;
  margin-bottom:20px;
  background:var(--ground)
}
.search svg{
  width:18px;
  height:18px;
  fill:none;
  stroke:var(--muted);
  stroke-width:1.5
}
.search input{
  min-width:0;
  border:0;
  outline:none;
  flex:1;
  height:42px;
  background:none;
  font-size:14px
}
.search:focus-within{
  outline:2px solid var(--accent);
  outline-offset:2px
}
.search input:focus-visible{
  outline:none
}
.search input::placeholder{
  color:var(--faint)
}
.search .text-button{
  padding:0 4px;
  min-height:36px;
  font-size:12px
}
.tool-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--gap)
}
.tool-card{
  background:var(--surface);
  padding:22px;
  border-radius:var(--radius-card);
  display:flex;
  flex-direction:column;
  min-width:0
}
.tool-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:22px
}
.category{
  font-size:13px;
  color:var(--muted)
}
.status{
  font-size:12px;
  white-space:nowrap;
  flex:none;
  color:var(--muted);
  background:#e9eeeb;
  padding:2px 8px;
  border-radius:4px
}
.tool-card h2{
  font-size:20px;
  font-weight:500;
  margin-bottom:9px
}
.tool-card>p{
  font-size:14px;
  line-height:1.8;
  max-width:26em;
  margin-bottom:16px
}
.tool-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  border-top:1px solid var(--border);
  padding-top:12px;
  margin-top:auto;
  font-size:13px
}
.scope{
  color:var(--muted)
}
.tool-bottom a{
  font-weight:500;
  padding-block:5px
}
.tool-bottom a span{
  margin-left:6px;
  font-size:16px
}
.access-panel{
  grid-column:span 3;
  padding:0 0 0 16px
}
.access-panel h2{
  font-size:14px
}
.access-intro{
  font-size:13px;
  line-height:1.9;
  margin-top:16px
}
.access-list{
  margin:26px 0 0
}
.access-list>div{
  margin-bottom:24px
}
.access-list dt{
  font-weight:500;
  font-size:13px
}
.access-list dd{
  margin:7px 0 0;
  color:var(--muted);
  font-size:13px;
  line-height:1.85
}
.access-foot{
  display:flex;
  align-items:center;
  gap:12px;
  padding-top:12px
}
.small-mark .brand-mark{
  width:28px;
  height:28px;
  color:#7a8a7d
}
.access-foot p{
  font-size:13px;
  line-height:1.8
}
.bottom-note{
  display:grid;
  grid-template-columns:1fr auto;
  column-gap:16px;
  margin-top:36px;
  padding-block:24px;
  border-top:1px solid var(--border)
}
.bottom-note h2{
  font-size:14px;
  font-weight:500
}
.bottom-note p{
  font-size:13px;
  margin-top:6px
}
.bottom-note a{
  grid-column:2;
  grid-row:1/3;
  align-self:center;
  font-size:13px
}
footer{
  display:flex;
  justify-content:space-between;
  gap:16px;
  font-size:12px;
  color:var(--muted);
  margin-top:36px;
  padding-top:20px;
  border-top:1px solid var(--border)
}
.primary,.secondary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:18px;
  min-height:44px;
  padding:10px 20px;
  border-radius:999px;
  border:1px solid transparent;
  line-height:1.4;
  font-size:13px;
  font-weight:500;
  text-align:center;
  transition:transform .15s,background-color .15s
}
.primary{
  background:var(--text);
  color:#fff
}
.secondary{
  background:var(--ground);
  border-color:var(--control);
  color:var(--text)
}
.primary:hover{
  background:#384239;
  text-decoration:none
}
.secondary:hover{
  background:var(--surface);
  text-decoration:none
}
.primary:active,.secondary:active{
  transform:translateY(1px)
}
.text-button{
  border:0;
  background:none;
  color:var(--muted);
  font-size:13px;
  min-height:44px;
  padding:8px
}
.text-button:hover{
  color:var(--text);
  text-decoration:underline;
  text-underline-offset:3px
}
.account-layout{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:start;
  margin-top:58px
}
.account-layout header>p{
  margin-top:18px;
  font-size:14px;
  max-width:24em
}
.back-link{
  display:inline-block;
  font-size:13px;
  color:var(--muted);
  margin-block:24px
}
.form-panel{
  padding:28px;
  background:var(--surface);
  border-radius:var(--radius-card)
}
.form-panel>p{
  font-size:13px;
  margin-top:8px
}
.form-panel form{
  display:flex;
  flex-direction:column
}
.form-panel form>label:not(.checkbox-label){
  font-size:13px;
  font-weight:500;
  margin:20px 0 8px
}
.form-panel input:not([type=checkbox]){
  width:100%;
  min-width:0;
  min-height:44px;
  background:var(--ground);
  border:1px solid var(--control);
  border-radius:8px;
  padding:9px 12px;
  font-size:15px
}
.password-field{
  position:relative
}
.password-field input{
  padding-right:64px!important
}
.password-field button{
  position:absolute;
  right:6px;
  top:0;
  bottom:0
}
.checkbox-label{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  margin-top:16px;
  color:var(--muted);
  min-height:30px
}
.checkbox-label input{
  accent-color:var(--accent);
  width:16px;
  height:16px
}
.form-panel .primary{
  margin-top:24px;
  align-self:start
}
.form-note{
  font-size:12px!important;
  margin-top:24px!important;
  padding-top:20px;
  border-top:1px solid var(--border)
}
.form-message{
  color:var(--negative);
  font-size:13px;
  line-height:1.6;
  margin-top:16px
}
.form-message.success{
  color:var(--accent)
}
.settings-row{
  display:grid;
  grid-template-columns:1fr 1.4fr;
  gap:48px;
  padding:32px 0;
  border-top:1px solid var(--border)
}
.settings-row>div>p{
  font-size:13px;
  margin-top:12px;
  max-width:24em
}
.account-info{
  margin:0;
  display:grid;
  gap:20px
}
.account-info>div{
  display:grid;
  grid-template-columns:90px 1fr;
  gap:12px;
  font-size:13px
}
.account-info dt{
  color:var(--muted)
}
.account-info dd{
  margin:0;
  overflow-wrap:anywhere
}
.detail-panel{
  background:var(--surface);
  padding:32px;
  border-radius:var(--radius-card);
  max-width:820px;
  margin-bottom:28px
}
.detail-panel>p{
  font-size:14px;
  margin-top:18px;
  max-width:46em
}
.detail-facts{
  display:flex;
  gap:64px;
  margin-block:28px;
  font-size:13px
}
.detail-facts dt{
  font-size:12px;
  color:var(--muted);
  margin-bottom:6px
}
.detail-facts dd{
  margin:0
}
.about-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--gap)
}
.about-grid .detail-panel{
  padding:28px
}
.empty-state{
  background:var(--surface);
  padding:28px;
  border-radius:var(--radius-card)
}
.empty-state p{
  margin-block:12px
}
.empty-state h2{
  font-size:16px
}
.feedback{
  position:fixed;
  bottom:20px;
  left:50%;
  transform:translateX(-50%);
  padding:12px 20px;
  border-radius:12px;
  background:var(--text);
  color:var(--ground);
  font-size:13px;
  z-index:10;
  max-width:calc(100% - 32px)
}
@media(min-width:1500px){
  .canvas{
    padding-inline:48px
  }
}
@media(max-width:1100px){
  .shell{
    display:block
  }
  .sidebar{
    position:relative;
    height:auto;
    padding:16px 24px;
    display:flex;
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    border-right:0;
    border-bottom:1px solid var(--border)
  }
  .brand{
    font-size:22px
  }
  .brand-note{
    display:none
  }
  .menu-toggle{
    display:inline-flex!important
  }
  .navigation{
    display:none;
    position:absolute;
    z-index:20;
    top:100%;
    left:0;
    right:0;
    background:var(--ground);
    padding:24px;
    border-bottom:1px solid var(--border)
  }
  .navigation.open{
    display:flex;
    min-height:calc(100dvh - 78px)
  }
  .nav-group nav a{
    min-height:44px
  }
  .sidebar-bottom{
    max-width:360px;
    width:100%
  }
  .canvas{
    padding:36px 28px 24px
  }
  .access-panel{
    padding-left:8px
  }
  .content-grid{
    grid-template-columns:repeat(12,minmax(0,1fr))
  }
  .catalog-section{
    grid-column:span 8
  }
  .access-panel{
    grid-column:span 4
  }
  .tool-top{
    margin-bottom:16px
  }
  .tool-card{
    padding:18px
  }
  .tool-bottom{
    flex-wrap:wrap
  }
  .quiet-label{
    display:none
  }
  .account-layout{
    gap:32px;
    margin-top:24px
  }
  .account-layout h1{
    font-size:25px
  }
}
@media(max-width:640px){
  body{
    font-size:14px
  }
  .sidebar{
    padding:12px 20px
  }
  .brand-mark{
    width:26px;
    height:26px
  }
  .canvas{
    padding:30px 20px 20px
  }
  main{
    min-height:calc(100vh - 228px)
  }
  h1{
    font-size:24px
  }
  .page-heading{
    margin-bottom:24px
  }
  .page-heading p{
    font-size:13px;
    line-height:1.8;
    margin-top:10px
  }
  .intro-strip{
    align-items:flex-start;
    flex-direction:column;
    gap:10px;
    padding-block:16px;
    margin-bottom:26px;
    font-size:12px
  }
  .intro-strip a{
    min-height:28px;
    display:flex;
    align-items:center;
    gap:10px
  }
  .content-grid{
    display:block
  }
  .tool-grid{
    grid-template-columns:1fr
  }
  .tool-card{
    padding:22px
  }
  .tool-card>p{
    min-height:0;
    font-size:14px
  }
  .tool-top{
    margin-bottom:16px
  }
  .tool-bottom{
    margin-top:0;
    padding-top:12px;
    font-size:13px
  }
  .tool-bottom a{
    min-height:44px;
    display:flex;
    align-items:center
  }
  .category,.status{
    font-size:12px
  }
  .search{
    margin-bottom:16px
  }
  .access-panel{
    padding:28px 0 0;
    margin-top:28px;
    border-top:1px solid var(--border)
  }
  .access-panel h2{
    font-size:16px
  }
  .access-intro{
    margin-top:8px;
    font-size:13px
  }
  .access-list{
    margin-top:20px;
    display:grid;
    gap:18px
  }
  .access-list>div{
    display:grid;
    grid-template-columns:100px 1fr;
    gap:16px;
    margin:0
  }
  .access-list dt,.access-list dd{
    font-size:13px;
    margin:0
  }
  .access-foot{
    padding-top:24px
  }
  .bottom-note{
    grid-template-columns:1fr;
    gap:8px;
    margin-top:24px
  }
  .bottom-note a{
    grid-column:auto;
    grid-row:auto;
    margin-top:8px;
    min-height:44px;
    display:flex;
    align-items:center
  }
  .bottom-note p{
    font-size:13px
  }
  footer{
    flex-direction:column;
    gap:8px;
    margin-top:12px;
    font-size:12px
  }
  .account-layout{
    grid-template-columns:1fr;
    gap:0;
    margin-top:0
  }
  .account-layout header>p{
    margin-top:12px
  }
  .back-link{
    min-height:44px;
    display:inline-flex;
    align-items:center;
    margin-block:12px
  }
  .form-panel{
    padding:24px
  }
  .form-panel .primary{
    width:100%;
    font-size:14px
  }
  .settings-row{
    grid-template-columns:1fr;
    gap:20px;
    padding-block:24px
  }
  .detail-panel{
    padding:24px
  }
  .detail-facts{
    gap:28px;
    flex-wrap:wrap
  }
  .about-grid{
    grid-template-columns:1fr
  }
  .about-grid .detail-panel{
    margin-bottom:0
  }
  .about-grid{
    margin-bottom:24px
  }
  .form-panel input:not([type=checkbox]){
    font-size:16px
  }
  .identity div>span{
    font-size:12px
  }
}
body.menu-open{
  overflow:hidden
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    transition:none!important;
    scroll-behavior:auto!important
  }
}
