/* Black Chancery is public domain; its readme in public/fonts/ records that.
   The file has one weight, and the declared range stops browsers synthesising
   a bold from it. Every use in style.js lists Cinzel Decorative next, for the
   glyphs this face lacks. */
@font-face{font-family:"Black Chancery";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/BlackChancery.woff2) format("woff2")}
@font-face{font-family:"Cinzel";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/cinzel-latin-ext-8fc2606f.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Cinzel";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/cinzel-latin-09941fb1.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Cinzel";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cinzel-latin-ext-8fc2606f.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Cinzel";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cinzel-latin-09941fb1.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Cinzel Decorative";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/cinzel-decorative-latin-ext-3e593aee.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Cinzel Decorative";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/cinzel-decorative-latin-0826d61d.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Cinzel Decorative";font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/cinzel-decorative-latin-ext-6ab3c105.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Cinzel Decorative";font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/cinzel-decorative-latin-30318b42.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* Roboto Condensed (SIL Open Font License), latin subset. One variable file
   covers every weight. */
@font-face{font-family:"Roboto Condensed";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/roboto-condensed-latin.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}


*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  --ink:255 255 255;
  --page:0 0 0;
  --structure-bg:5 7 15;
}

html{-webkit-text-size-adjust:100%}

body{
  width:100%;min-height:100%;
  background:rgb(var(--page));
  font-family:"Roboto Condensed",Arial,sans-serif;
  color:rgb(var(--ink));
}

body.is-wall{min-height:100%}
body.is-doc{background:rgb(var(--structure-bg))}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* The default focus ring is lost against the panel artwork. */
a:focus-visible,button:focus-visible{
  outline:2px solid rgb(var(--ink) / .8);
  outline-offset:3px;
}

/* Nav */
#nav-tabs{
  position:sticky;top:0;z-index:50;
  display:flex;flex-wrap:wrap;justify-content:center;gap:4px 22px;
  padding:12px 16px;background:rgb(var(--page));
  border-bottom:1px solid rgb(var(--ink) / .12);
}
.tab-btn{
  display:inline-block;font-size:1rem;text-decoration:none;
  color:rgb(var(--ink) / .65);padding:6px 2px;
  border-bottom:2px solid transparent;
}
.tab-btn:hover{color:rgb(var(--ink))}
.tab-btn[aria-current="page"]{color:rgb(var(--ink));border-bottom-color:rgb(var(--ink) / .8)}

/* Wall. site.js reads --wall-stacked; the stacked media query sets it to 1. */
#wall{--wall-stacked:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;max-width:1280px;margin:0 auto;padding:0 24px 48px;list-style:none}
.panel{
  position:relative;overflow:hidden;border-radius:6px;
  border:1px solid rgb(var(--accent,255 255 255) / .35);background:rgb(var(--structure-bg));
  transition:border-color .2s;
}
.panel:hover,.panel.is-active{border-color:rgb(var(--accent,255 255 255) / .8)}
  /* Anchored to the top so the crop keeps the faces. */
.panel__img{display:block;width:100%;height:320px;object-fit:cover;object-position:center top}
.panel__tint,.panel__fog,.panel__side-label,.panel__line,.panel::after{display:none}
.panel__surface{position:absolute;inset:0;z-index:1;display:block}
.panel__content{
  position:relative;z-index:2;pointer-events:none;
  padding:14px 16px 16px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;
}
.panel__btn{pointer-events:auto}
.panel__name{font-family:"Black Chancery","Cinzel Decorative",Georgia,serif;font-weight:400;font-size:1.4rem;color:rgb(var(--ink))}
.panel__tag{font-size:.95rem;color:rgb(var(--ink) / .7)}
.panel__btn{
  display:inline-block;margin-top:4px;padding:7px 14px;border-radius:4px;
  border:1px solid rgb(var(--accent,255 255 255) / .7);color:rgb(var(--ink));
  font-size:.95rem;text-decoration:none;background:rgb(var(--accent,255 255 255) / .12);
}
.panel__btn:hover{background:rgb(var(--accent,255 255 255) / .28)}
.panel__center-btn{display:none}

#site-title{text-align:center;padding:36px 16px 24px}
#site-title h1{
  font-family:"Black Chancery","Cinzel Decorative",Georgia,serif;font-weight:400;
  font-size:clamp(1.8rem,4vw,2.8rem);
}
#site-title p{font-size:1rem;color:rgb(var(--ink) / .6);margin-top:6px}

@keyframes panelIn{from{opacity:0}to{opacity:1}}
.panel{animation:panelIn .5s ease both}
@keyframes titleIn{from{opacity:0}to{opacity:1}}
#site-title{animation:titleIn .5s both}

/* Structure page */
#page-structure{position:relative;min-height:100vh}


.structure-inner{
  position:relative;z-index:1;max-width:1280px;margin:0 auto;
  padding:80px 40px;
}

.structure-header{text-align:center;margin-bottom:64px}
.structure-header h1{
  font-family:"Black Chancery","Cinzel Decorative",Georgia,serif;font-weight:900;
  font-size:clamp(1.7rem,3.8vw,3rem);
  
}
.structure-header p{
  font-size:.93rem;
  color:rgb(var(--ink) / .3);margin-top:10px;
}
.structure-header .header-line{
  width:80px;height:1px;margin:18px auto 0;
  background:linear-gradient(90deg,transparent,rgb(var(--ink) / .3),transparent);
}


.guilds-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;list-style:none}
@media (max-width:900px){.guilds-grid{grid-template-columns:1fr}}

.guild-card{
  border-radius:8px;overflow:hidden;position:relative;
  border:1px solid rgb(var(--accent) / .2);
  transition:border-color .3s,transform .3s;
  animation:cardIn .7s cubic-bezier(.22,1,.36,1) both;
}
@keyframes cardIn{from{opacity:0}to{opacity:1}}
.guild-card:hover{border-color:rgb(var(--accent) / .45)}


.card-header{
  position:relative;z-index:1;padding:24px 28px 20px;
  display:flex;align-items:center;gap:16px;
  border-bottom:1px solid rgb(var(--ink) / .06);
}

.card-emblem{
  width:44px;height:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:1.3rem;flex-shrink:0;
  background:rgb(var(--accent) / var(--emblem-bg));
  border:1px solid rgb(var(--accent) / .3);
  overflow:hidden;
}
/* Crests are drawn to the edge of their canvas, so they are inset from the ring. */
.card-emblem__art{
  width:78%;height:78%;object-fit:contain;display:block;
}

.card-title-block{flex:1}
.card-guild-name{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:clamp(.95rem,1.5vw,1.2rem);
  color:rgb(var(--light));
}
.card-guild-name a{color:inherit;text-decoration:none}
.card-guild-name a:hover{text-decoration:underline;text-underline-offset:4px}
.card-guild-tag{
  font-size:.88rem;
  color:rgb(var(--ink) / .3);margin-top:3px;
}

.card-empty{
  font-size:.89rem;line-height:1.9;
  color:rgb(var(--ink) / .35);padding:6px 0;
}
.card-body{position:relative;z-index:1;padding:20px 28px 26px;display:flex;flex-direction:column;gap:10px}
.role-group{display:flex;flex-direction:column;gap:10px;list-style:none}

.role-row{
  display:flex;align-items:center;gap:12px;
  padding:9px 14px;border-radius:5px;transition:background .2s;
}
.role-row:hover{background:rgb(var(--ink) / .04)}

.role-dot{width:12px;height:12px;flex-shrink:0;display:block}
.role-name{font-size:.99rem;font-weight:600;min-width:130px}
.role-title{font-size:.89rem;color:rgb(var(--ink) / .4)}

.card-divider{
  height:1px;margin:4px 0;
  background:linear-gradient(90deg,transparent,rgb(var(--ink) / .07),transparent);
}

.alliance-note{
  text-align:center;margin-top:40px;padding:22px 32px;
  border:1px solid rgb(var(--ink) / .07);border-radius:6px;
  background:rgb(var(--ink) / .02);
}
.alliance-note p{
  font-size:.91rem;
  color:rgb(var(--ink) / .25);line-height:1.9;
}

/* Editor */
.structure-inner--narrow{max-width:760px}

.flash{
  margin:0 0 22px;padding:13px 18px;border-radius:6px;
  font-size:.92rem;line-height:1.8;
}
.flash--ok{background:rgb(90 200 140 / .12);border:1px solid rgb(90 200 140 / .35);color:rgb(150 230 190)}
.flash--bad{background:rgb(230 90 90 / .12);border:1px solid rgb(230 90 90 / .35);color:rgb(245 165 165)}

.manage-meta{
  font-size:.88rem;
  color:rgb(var(--ink) / .35);margin:0 0 26px;line-height:1.9;
}

.manage-list{list-style:none;display:flex;flex-direction:column;gap:14px}
.manage-card{
  display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:8px;
  border:1px solid rgb(var(--accent) / .25);
  background:rgb(var(--accent) / .05);
}
.manage-card__text{flex:1;min-width:0}

.manage-empty{
  padding:26px 24px;border-radius:8px;
  border:1px solid rgb(var(--ink) / .1);background:rgb(var(--ink) / .02);
}
.manage-empty p{
  font-size:.92rem;line-height:2;
  color:rgb(var(--ink) / .5);margin-bottom:12px;
}
.manage-empty p:last-child{margin-bottom:0}
.manage-empty strong{color:rgb(var(--ink) / .75);font-weight:600}
.manage-empty__action{margin-top:18px}

.manage-btn{
  display:inline-block;padding:10px 22px;border-radius:2px;text-decoration:none;
  border:1px solid rgb(var(--ink) / .35);background:rgb(var(--ink) / .08);
  color:rgb(var(--ink));font-family:"Roboto Condensed",Arial,sans-serif;
  font-size:.88rem;cursor:pointer;
  transition:background .2s,border-color .2s,opacity .2s;
}
.manage-btn:hover{background:rgb(var(--ink) / .18);border-color:rgb(var(--ink) / .6)}
.manage-btn--ghost{background:none}
.manage-btn:disabled{opacity:.3;cursor:not-allowed}

.manage-section{margin-bottom:34px}
.manage-section h2{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:.95rem;
  margin-bottom:16px;color:rgb(var(--ink) / .85);
}

.field{display:block;margin-bottom:18px}
.field__label,.row-edit__label{
  display:block;font-size:.87rem;
  color:rgb(var(--ink) / .45);margin-bottom:7px;
}
.field__hint{
  display:block;font-size:.87rem;line-height:1.9;
  color:rgb(var(--ink) / .32);margin-top:7px;
}

input[type="text"],input[type="url"],select{
  width:100%;padding:11px 13px;border-radius:4px;
  border:1px solid rgb(var(--ink) / .18);
  background:rgb(var(--ink) / .04);
  color:rgb(var(--ink));
  font-family:"Roboto Condensed",Arial,sans-serif;font-size:1.rem;
}
/* Native select chrome ignores the dark theme, so the arrow is drawn as a background. */
select{
  appearance:none;-webkit-appearance:none;
  padding-right:34px;
  background-image:linear-gradient(45deg,transparent 50%,rgb(255 255 255 / .45) 50%),
                   linear-gradient(135deg,rgb(255 255 255 / .45) 50%,transparent 50%);
  background-position:calc(100% - 18px) 51%,calc(100% - 13px) 51%;
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
}
input:focus,select:focus{outline:none;border-color:rgb(var(--accent,255 255 255) / .7)}
/* Options use the system palette; without both colours set some browsers show white on white. */
select option{background:rgb(var(--structure-bg));color:rgb(var(--ink))}

.rows{list-style:none;display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.row-edit{
  display:grid;grid-template-columns:30px 1fr 1fr auto auto auto;gap:12px;align-items:end;
  padding:14px;border-radius:6px;
  border:1px solid rgb(var(--ink) / .08);background:rgb(var(--ink) / .02);
}
/* The dragged row stays in the flow, dimmed, so the other rows do not shift. */
.row-edit.is-dragging{opacity:.4;border-color:rgb(var(--accent,255 255 255) / .5)}

.row-edit__grip{
  display:flex;align-items:center;justify-content:center;
  padding-bottom:9px;cursor:grab;touch-action:none;
  color:rgb(var(--ink) / .3);
}
.row-edit__grip:active{cursor:grabbing}
.row-edit__grip::before{
  content:'';width:8px;height:14px;margin-right:6px;
  /* A grid of dots as the drag handle. */
  background-image:radial-gradient(circle,rgb(var(--ink) / .45) 1px,transparent 1px);
  background-size:4px 4px;
}
.row-edit__num{font-size:.94rem;color:rgb(var(--ink) / .3)}

.row-edit__moves{display:flex;flex-direction:column;gap:3px;padding-bottom:4px}
.row-move{
  width:26px;height:20px;line-height:1;cursor:pointer;
  border:1px solid rgb(var(--ink) / .15);background:rgb(var(--ink) / .04);
  color:rgb(var(--ink) / .6);border-radius:3px;font-size:.94rem;
}
.row-move:hover:not(:disabled){background:rgb(var(--ink) / .14);color:rgb(var(--ink))}
.row-move:disabled{opacity:.2;cursor:not-allowed}
/* The hex field is sized for seven characters (#rrggbb). */
.row-edit__field--color{flex:0 0 auto}
.row-edit__color{display:flex;align-items:center;gap:8px}
.row-edit__color input{width:7.5em;font-family:ui-monospace,Menlo,Consolas,monospace;}
.row-edit__color input:invalid{border-color:rgb(230 90 90 / .6)}
.color-preview{display:flex;flex-shrink:0}
.color-preview .role-dot{width:18px;height:18px}
.row-edit__field{min-width:0}
.row-remove{
  padding:11px 14px;border-radius:4px;cursor:pointer;
  border:1px solid rgb(230 90 90 / .3);background:rgb(230 90 90 / .08);
  color:rgb(245 165 165);font-family:"Roboto Condensed",Arial,sans-serif;
  font-size:.85rem;
}
.row-remove:hover:not(:disabled){background:rgb(230 90 90 / .2)}
.row-remove:disabled{opacity:.25;cursor:not-allowed}

.manage-actions{display:flex;gap:12px;align-items:center;margin-top:8px}

.manage-foot{
  margin-top:34px;font-size:.88rem;
  color:rgb(var(--ink) / .3);text-align:center;
}
.manage-foot a{color:rgb(var(--ink) / .5)}

/* Below this width the row grid leaves the name field too narrow, so rows stack. */
@media (max-width:720px){
  /* Each field takes a full line; the arrows and Remove share the last one. */
  .row-edit{grid-template-columns:auto 1fr;gap:10px}
  .row-edit__field{grid-column:1 / -1}
  .row-remove{justify-self:end}
  /* No drag handle when stacked; the arrow buttons reorder rows. */
  .row-edit__grip{display:none}
  .row-edit__moves{flex-direction:row;padding-bottom:0}
  .row-move{width:40px;height:30px}
  .manage-card{flex-wrap:wrap}
}

/* Events page */
.tourney-note,.tourney-live,.live-card{
  padding:26px 24px;border-radius:8px;text-align:center;
  border:1px solid rgb(var(--ink) / .1);background:rgb(var(--ink) / .02);
}
.tourney-note p{
  font-size:.92rem;line-height:2;
  color:rgb(var(--ink) / .5);margin-bottom:10px;
}
.tourney-note p:last-child{margin-bottom:0}
.tourney-state{
  font-size:.87rem;
  color:rgb(var(--ink) / .4);margin-bottom:10px;
}
.tourney-title{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:clamp(1.1rem,2.4vw,1.7rem);
}
.tourney-links{margin-top:18px}

/* Fixed height: a cross-origin frame cannot be measured from here, and the
   Ravens resize script would need another origin in script-src. */
.tourney-frame{
  margin-top:26px;border-radius:8px;overflow:hidden;
  border:1px solid rgb(var(--ink) / .1);background:rgb(var(--ink) / .02);
}
.tourney-frame iframe{
  display:block;width:100%;height:70vh;min-height:420px;border:0;
}
.tourney-foot{
  margin-top:14px;text-align:center;
  font-size:.87rem;
  color:rgb(var(--ink) / .3);
}
.tourney-foot a{color:inherit}

.agenda{margin-bottom:34px}
.agenda:last-child{margin-bottom:0}
.agenda-head{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:.95rem;
  color:rgb(var(--ink) / .5);
  padding-bottom:9px;margin-bottom:16px;
  border-bottom:1px solid rgb(var(--ink) / .1);
}
.live-card{margin-bottom:14px}
.agenda-day{margin-bottom:18px}
.agenda-day:last-child{margin-bottom:0}
.agenda-date{
  font-size:.87rem;
  color:rgb(var(--ink) / .35);margin-bottom:8px;
}

/* Source colours match the calendar's .ev--alliance, .ev--ravens and .ev--game. */
.ev-row--alliance{border-left:2px solid rgb(var(--accent,255 255 255))}
.ev-row--ravens{border-left:2px solid rgb(167 139 250)}
.ev-row--game{border-left:2px solid rgb(90 200 140)}
.ev-row__title a{color:inherit;text-decoration:none}
.ev-row__title a:hover{text-decoration:underline}
.ev-src{
  padding:3px 8px;border-radius:2px;
  font-size:.82rem;
  color:rgb(10 8 14);white-space:nowrap;
}

/* Calendar */
.cal-notes{list-style:none;margin-bottom:22px}
.cal-notes li{
  padding:11px 16px;margin-bottom:8px;border-radius:6px;
  border:1px solid rgb(230 90 90 / .3);background:rgb(230 90 90 / .1);
  color:rgb(245 165 165);
  font-size:.89rem;line-height:1.9;
}

.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.cal-month{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:clamp(1rem,2.2vw,1.5rem);
  text-align:center;flex:1;
}

.cal-legend{
  display:flex;gap:20px;flex-wrap:wrap;justify-content:center;
  margin-bottom:20px;list-style:none;
}
.ev-dot{width:8px;height:8px;border-radius:50%;display:inline-block}

.cal-grid{
  display:grid;grid-template-columns:repeat(7,1fr);gap:1px;list-style:none;
  background:rgb(var(--ink) / .07);
  border:1px solid rgb(var(--ink) / .07);border-radius:8px;overflow:hidden;
}
.cal-dow{
  padding:9px 6px;text-align:center;background:rgb(var(--ink) / .04);
  font-size:.85rem;
  color:rgb(var(--ink) / .4);
}
.cal-day{
  min-height:104px;padding:7px 7px 9px;
  background:rgb(var(--structure-bg));
  display:flex;flex-direction:column;gap:5px;
}
/* Days from the neighbouring months, shown to complete the first and last weeks. */
.cal-day--outside{opacity:.32}
.cal-day--today{box-shadow:inset 0 0 0 1px rgb(var(--ink) / .35)}
.cal-day__num{font-size:.89rem;color:rgb(var(--ink) / .4)}
.cal-day--today .cal-day__num{color:rgb(var(--ink) / .9)}
.cal-day__events{list-style:none;display:flex;flex-direction:column;gap:4px}

.ev{
  font-size:.87rem;line-height:1.45;
  padding:4px 6px;border-radius:3px;
  border-left:2px solid rgb(var(--ink) / .3);
  background:rgb(var(--ink) / .05);
  color:rgb(var(--ink) / .85);
  /* Titles from the mirrored sources can be long, so they wrap anywhere. */
  overflow-wrap:anywhere;
}
.ev a{color:inherit;text-decoration:none}
.ev a:hover{text-decoration:underline}

/* Alliance events take the posting guild's accent; each mirrored source has a fixed colour. */
.ev--alliance{border-left-color:rgb(var(--accent,255 255 255));background:rgb(var(--accent,255 255 255) / .1)}
.ev--ravens{border-left-color:rgb(167 139 250);background:rgb(167 139 250 / .08)}
.ev--game{border-left-color:rgb(90 200 140);background:rgb(90 200 140 / .08)}
.ev-src--alliance{background:rgb(var(--ink) / .5)}
.ev-src--ravens{background:rgb(167 139 250)}
.ev-src--game{background:rgb(90 200 140)}

/* The end-date label is only used in the narrow list layout. */
.ev-until{display:none}

/* On narrow screens the month becomes a list of the days that have events. */
@media (max-width:760px){
  .cal-grid{grid-template-columns:1fr;gap:0}
  .cal-dow{display:none}
  .cal-day{min-height:0;border-bottom:1px solid rgb(var(--ink) / .06);flex-direction:row;gap:10px;align-items:flex-start}

  /* A multi-day event is listed once, on its first day, with its end date. */
  .ev--cont{display:none}
  .ev-until{display:inline;opacity:.55}

  /* Days holding only continuations are hidden too. */
  .cal-day:not(:has(.cal-day__events .ev:not(.ev--cont))){display:none}
  .cal-day__num{min-width:26px;padding-top:3px}
  .cal-day__events{flex:1}
  .cal-nav{flex-wrap:wrap}
  .cal-month{order:-1;flex-basis:100%}
}

.cal-subscribe{
  margin-top:24px;padding:18px 20px;border-radius:8px;text-align:center;
  border:1px solid rgb(var(--ink) / .1);background:rgb(var(--ink) / .02);
}
.cal-subscribe__lead{
  font-size:.88rem;line-height:1.9;
  color:rgb(var(--ink) / .45);margin-bottom:12px;
}
.cal-subscribe__links{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

.ev-rows{list-style:none;display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.ev-row{
  display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:6px;
  border:1px solid rgb(var(--ink) / .08);background:rgb(var(--ink) / .02);
}
.ev-row__text{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}
.ev-row__title{font-size:.98rem;font-weight:600}
.ev-row__when,.ev-row__detail{
  font-size:.87rem;color:rgb(var(--ink) / .4);
}
.ev-add__dates{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
@media (max-width:600px){.ev-add__dates{grid-template-columns:1fr}}

/* Privacy page and footer */
.privacy{max-width:720px;margin:0 auto}
.privacy h2{
  font-family:"Cinzel Decorative",Georgia,serif;font-weight:700;
  font-size:1.1rem;margin:34px 0 12px;
}
.privacy p,.privacy li{font-size:.95rem;line-height:1.8;color:rgb(var(--ink) / .7)}
.privacy p+p,.privacy ul+p{margin-top:12px}
.privacy ul{padding-left:1.3em;margin:10px 0}
.privacy a{color:rgb(var(--ink))}
.site-foot{padding:8px 16px 28px;text-align:center;font-size:.88rem}
.site-foot a{display:inline-block;padding:12px 8px;color:rgb(var(--ink) / .5)}

/* Error pages */
.oops{
  min-height:100vh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;padding:40px 24px;text-align:center;
}
.oops h1{
  font-family:"Black Chancery","Cinzel Decorative",Georgia,serif;font-weight:900;
  font-size:clamp(1.9rem,4.6vw,3.2rem);
}
.oops p{font-size:.94rem;color:rgb(var(--ink) / .4);line-height:2}
.oops a{
  margin-top:10px;padding:10px 28px;text-decoration:none;
  border:1px solid rgb(var(--ink) / .35);background:rgb(var(--ink) / .07);
  color:rgb(var(--ink));font-size:.91rem;
  border-radius:2px;transition:background .2s,border-color .2s;
}
.oops a:hover{background:rgb(var(--ink) / .18);border-color:rgb(var(--ink) / .65)}

/* Narrow screens */
@media (max-width:600px){
  .structure-inner{padding:60px 16px}
  .guilds-grid{gap:16px}
  .card-header{padding:18px 18px 16px}
  .card-body{padding:14px 18px 20px}
  .role-name{min-width:100px}
  /* A shorter frame on phones, where the bracket mostly scrolls sideways. */
  .tourney-frame iframe{height:60vh;min-height:300px}
  /* Sized so the four nav tabs (NAV in layout.js) fit one row on a 390px
     screen; the vertical padding gives each a tap target of about 44px. */
  .tab-btn{padding:16px 9px;font-size:.82rem;}

  /* Buttons get a 44px minimum tap target; min-height lets a wrapped label grow the button. */
  .manage-btn,.panel__btn{
    min-height:44px;display:inline-flex;align-items:center;justify-content:center;
  }

  /* Calendar links fill their row; the negative margin enlarges the tap area
     without changing the layout. */
  .ev a{display:block;padding:7px 6px;margin:-4px -6px}
  .ev{font-size:.94rem;line-height:1.5}
  .ev-until{font-size:.89rem}

  /* The sign-in link at the foot of a page gets a button-sized tap target. */
  .manage-foot a{display:inline-block;padding:12px 8px}
  .cal-day__num{font-size:.94rem}

  .card-guild-tag{font-size:.93rem}
  .role-title{font-size:.94rem}
  .cal-notes li,.cal-subscribe__lead{font-size:.93rem}
  .manage-btn{font-size:.92rem}
  #site-title p{font-size:.92rem}
  .panel__tag{font-size:.94rem}
  .tourney-state,.tourney-foot,.agenda-date{font-size:.92rem}
  .ev-row__when,.ev-row__detail{font-size:.92rem}
}

/* Animations and transitions jump straight to their end state. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}

.g-ravens{--accent:167 139 250;--light:196 181 253;--tint:26 10 46;--glow:0.12;--emblem-bg:0.15;}.guild-card.g-ravens{background:linear-gradient(135deg,rgb(13 6 24) 0%,rgb(22 8 32) 50%,rgb(10 4 18) 100%)}.panel.g-ravens .panel__img{object-position:center top}
.g-solaris{--accent:251 191 36;--light:253 230 138;--tint:46 22 0;--glow:0.1;--emblem-bg:0.12;}.guild-card.g-solaris{background:linear-gradient(135deg,rgb(20 10 0) 0%,rgb(34 18 0) 50%,rgb(18 9 0) 100%)}.panel.g-solaris .panel__img{object-position:center top}
.g-vanaheim{--accent:110 231 183;--light:167 243 208;--tint:6 18 9;--glow:0.1;--emblem-bg:0.1;}.guild-card.g-vanaheim{background:linear-gradient(135deg,rgb(2 15 5) 0%,rgb(7 20 9) 50%,rgb(3 12 5) 100%)}.panel.g-vanaheim .panel__img{object-position:center top}
.g-storm{--accent:147 197 253;--light:186 230 253;--tint:6 8 15;--glow:0.1;--emblem-bg:0.1;}.guild-card.g-storm{background:linear-gradient(135deg,rgb(4 6 16) 0%,rgb(8 12 26) 50%,rgb(3 5 8) 100%)}.panel.g-storm .panel__img{object-position:center top}
.g-oath{--accent:248 113 113;--light:252 165 165;--tint:40 8 10;--glow:0.1;--emblem-bg:0.12;}.guild-card.g-oath{background:linear-gradient(135deg,rgb(20 5 7) 0%,rgb(32 8 11) 50%,rgb(15 4 5) 100%)}.panel.g-oath .panel__img{object-position:center top}
.panel:nth-child(1){animation-delay:0.05s}
.panel:nth-child(2){animation-delay:0.15s}
.panel:nth-child(3){animation-delay:0.25s}
.panel:nth-child(4){animation-delay:0.35s}
.panel:nth-child(5){animation-delay:0.45s}
.guild-card:nth-child(1){animation-delay:0.1s}
.guild-card:nth-child(2){animation-delay:0.2s}
.guild-card:nth-child(3){animation-delay:0.3s}
.guild-card:nth-child(4){animation-delay:0.4s}
.guild-card:nth-child(5){animation-delay:0.5s}


@media (max-width:700px){
  body.is-wall{height:auto;overflow:auto}
  #wall{--wall-stacked:1;grid-template-columns:1fr;padding:0 16px 32px}
  .panel__img{height:200px}
  .panel.g-ravens .panel__img{object-position:center 35%}
  .panel.g-solaris .panel__img{object-position:center 35%}
  .panel.g-vanaheim .panel__img{object-position:center 35%}
  .panel.g-storm .panel__img{object-position:center 35%}
  .panel.g-oath .panel__img{object-position:center 35%}
}
