redesign: irc-client / terminal aesthetic — buffer, nicklist, cap-ls grammar
This commit is contained in:
parent
899040a319
commit
182f14a7f2
6 changed files with 264 additions and 321 deletions
|
|
@ -1,5 +1,5 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
||||
<rect width="64" height="64" rx="14" fill="#0b0e14"/>
|
||||
<text x="50%" y="55%" font-family="ui-monospace,monospace" font-size="34" font-weight="700"
|
||||
fill="#e6edf3" text-anchor="middle" dominant-baseline="middle">e<tspan fill="#3fb950">.</tspan></text>
|
||||
<rect width="64" height="64" rx="13" fill="#0d0e12"/>
|
||||
<text x="13" y="45" font-family="ui-monospace,monospace" font-size="33" font-weight="700" fill="#e2a25a">›</text>
|
||||
<rect x="37" y="27" width="13" height="20" rx="1" fill="#c8ccd4"/>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 315 B |
218
static/style.css
218
static/style.css
|
|
@ -1,124 +1,126 @@
|
|||
/* echoIRCd — the site as an IRC client. Monospace, warm phosphor, real IRC grammar. */
|
||||
:root{
|
||||
--bg:#0b0e14; --bg2:#11161f; --bg3:#161c27;
|
||||
--line:#222b38; --line2:#2b3646;
|
||||
--fg:#c8d3e0; --fg2:#7d8896; --hi:#e6edf3;
|
||||
--accent:#3fb950; --accent2:#2ea043; --link:#58a6ff;
|
||||
--radius:12px; --wrap:1040px;
|
||||
color-scheme:dark;
|
||||
--bg:#08090c; --win:#0d0e12; --panel:#14161c; --panel2:#0f1116;
|
||||
--edge:#22252e; --edge2:#2d313c;
|
||||
--fg:#c8ccd4; --dim:#767b85; --dimmer:#4a4e58;
|
||||
--amber:#e2a25a; --green:#5fbf6b; --blue:#5f9bef; --magenta:#c58af0; --cyan:#4fcccf; --red:#ec6d6d;
|
||||
--link:#6aa6f2; --ok:#5fbf6b;
|
||||
--mono:ui-monospace,"SF Mono","JetBrains Mono","Cascadia Code",Menlo,Consolas,"DejaVu Sans Mono",monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html{scroll-behavior:smooth}
|
||||
html{-webkit-text-size-adjust:100%}
|
||||
body{
|
||||
margin:0; background:var(--bg); color:var(--fg);
|
||||
font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
|
||||
margin:0;background:var(--bg);color:var(--fg);
|
||||
font:14.5px/1.65 var(--mono);
|
||||
background-image:radial-gradient(1200px 600px at 50% -10%,rgba(226,162,90,.05),transparent 70%);
|
||||
-webkit-font-smoothing:antialiased;
|
||||
}
|
||||
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
|
||||
a{color:var(--link);text-decoration:none}
|
||||
a:hover{text-decoration:underline}
|
||||
h1,h2,h3,h4{color:var(--hi);line-height:1.2}
|
||||
.accent{color:var(--accent)}
|
||||
main{min-height:60vh}
|
||||
.wrap,.hero,.split,.page-head,.cs-in{max-width:var(--wrap);margin:0 auto;padding-left:1.25rem;padding-right:1.25rem}
|
||||
b{color:var(--fg);font-weight:600}
|
||||
.dim{color:var(--dim)}
|
||||
.kw{color:var(--amber)}
|
||||
.ok{color:var(--ok)}
|
||||
.i{font-style:italic}
|
||||
.n-amber{color:var(--amber)} .n-green{color:var(--green)} .n-blue{color:var(--blue)}
|
||||
.n-magenta{color:var(--magenta)} .n-cyan{color:var(--cyan)} .n-red{color:var(--red)}
|
||||
|
||||
/* nav */
|
||||
.nav{
|
||||
display:flex;align-items:center;justify-content:space-between;gap:1rem;
|
||||
max-width:var(--wrap);margin:0 auto;padding:1.1rem 1.25rem;
|
||||
}
|
||||
.brand{font-family:ui-monospace,monospace;font-weight:700;font-size:1.25rem;color:var(--hi)}
|
||||
.brand:hover{text-decoration:none}
|
||||
.brand .dot{color:var(--accent)}
|
||||
.navlinks{display:flex;gap:1.4rem;align-items:center;flex-wrap:wrap}
|
||||
.navlinks a{color:var(--fg2);font-size:.95rem}
|
||||
.navlinks a:hover{color:var(--hi);text-decoration:none}
|
||||
.navlinks a.on{color:var(--hi)}
|
||||
.navlinks a.ext{color:var(--fg2)}
|
||||
|
||||
/* hero */
|
||||
.hero{padding:3.5rem 1.25rem 2rem;text-align:center}
|
||||
.badge-row{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-bottom:1.6rem}
|
||||
.badge{
|
||||
font-size:.78rem;color:var(--accent);background:rgba(63,185,80,.08);
|
||||
border:1px solid rgba(63,185,80,.28);border-radius:999px;padding:.25rem .7rem;
|
||||
}
|
||||
.hero h1{font-size:clamp(2.1rem,5vw,3.4rem);letter-spacing:-1.5px;margin:.2rem 0 1rem}
|
||||
.lede{color:var(--fg2);font-size:1.12rem;max-width:640px;margin:0 auto 1.8rem}
|
||||
.cta{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}
|
||||
.btn{
|
||||
display:inline-block;padding:.65rem 1.2rem;border-radius:8px;font-weight:600;
|
||||
border:1px solid var(--line2);color:var(--hi);background:var(--bg2);
|
||||
}
|
||||
.btn:hover{border-color:#3a475a;text-decoration:none}
|
||||
.btn.primary{background:var(--accent2);border-color:var(--accent);color:#04120a}
|
||||
.btn.primary:hover{background:var(--accent)}
|
||||
.connectline{
|
||||
margin:1.8rem auto 0;max-width:max-content;color:var(--accent);
|
||||
background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:.55rem 1rem;font-size:.95rem;
|
||||
/* the client window */
|
||||
.client{
|
||||
max-width:1060px;margin:1.6rem auto;background:var(--win);
|
||||
border:1px solid var(--edge);border-radius:9px;overflow:hidden;
|
||||
box-shadow:0 24px 60px -30px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.01);
|
||||
}
|
||||
|
||||
/* split cards */
|
||||
.split{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem}
|
||||
.card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem 1.5rem}
|
||||
.card h3{margin:0 0 .5rem;font-size:1.25rem}
|
||||
.card p{margin:0;color:var(--fg2)}
|
||||
.tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--fg2);
|
||||
border:1px solid var(--line2);border-radius:6px;padding:.1rem .45rem;margin-left:.4rem;vertical-align:middle}
|
||||
/* title bar */
|
||||
.titlebar{display:flex;align-items:center;gap:.6rem;padding:.55rem .9rem;background:var(--panel);border-bottom:1px solid var(--edge)}
|
||||
.conn{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);flex:none}
|
||||
.tb-name{color:var(--fg);font-weight:600}
|
||||
.tb-server{margin-left:auto;color:var(--dim);font-size:.82rem}
|
||||
|
||||
/* feature grid */
|
||||
.wrap{padding-top:3.5rem;padding-bottom:1rem}
|
||||
.section-title{text-align:center;font-size:1.6rem;margin:0 0 2rem}
|
||||
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
|
||||
.feat{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem 1.4rem}
|
||||
.feat .ico{font-size:1.5rem;margin-bottom:.5rem}
|
||||
.feat h4{margin:.1rem 0 .5rem;font-size:1.08rem}
|
||||
.feat p{margin:0;color:var(--fg2);font-size:.95rem}
|
||||
.feat em{color:var(--fg);font-style:normal;font-weight:600}
|
||||
/* tabs */
|
||||
.tabs{display:flex;gap:.15rem;padding:0 .5rem;background:var(--panel);border-bottom:1px solid var(--edge);overflow-x:auto}
|
||||
.tab{padding:.5rem .8rem;color:var(--dim);border-bottom:2px solid transparent;white-space:nowrap}
|
||||
.tab:hover{color:var(--fg);text-decoration:none}
|
||||
.tab.on{color:var(--amber);border-bottom-color:var(--amber)}
|
||||
.tab.ext{margin-left:auto;color:var(--dimmer)}
|
||||
|
||||
/* connect strip */
|
||||
.connect-strip{margin:4rem 0 0;background:linear-gradient(180deg,var(--bg2),var(--bg3));border-top:1px solid var(--line)}
|
||||
.cs-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:2.4rem 1.25rem;flex-wrap:wrap}
|
||||
.cs-in h2{margin:0 0 .2rem;font-size:1.5rem}
|
||||
.cs-in p{margin:0;color:var(--fg2)}
|
||||
.mini{border-collapse:collapse;font-size:.95rem}
|
||||
.mini td{padding:.28rem .9rem;border-bottom:1px solid var(--line)}
|
||||
.mini td:first-child{color:var(--fg2)}
|
||||
/* topic */
|
||||
.topic{padding:.5rem .95rem;background:var(--panel2);border-bottom:1px solid var(--edge);color:var(--dim);font-size:.85rem}
|
||||
.topic .tp{color:var(--amber);margin-right:.35rem}
|
||||
|
||||
/* pages */
|
||||
.page-head{padding:3rem 1.25rem 1rem;text-align:center}
|
||||
.page-head h1{font-size:2.4rem;letter-spacing:-1px;margin:0 0 .6rem}
|
||||
.prose .block{margin:0 0 2.2rem}
|
||||
.block h2{font-size:1.35rem;border-bottom:1px solid var(--line);padding-bottom:.5rem;margin:0 0 .9rem}
|
||||
.block ul{margin:.4rem 0 0;padding-left:1.1rem}
|
||||
.block li{margin:.35rem 0;color:var(--fg2)}
|
||||
.block li strong{color:var(--fg)}
|
||||
/* workspace = buffer + nicklist */
|
||||
.workspace{display:flex;align-items:stretch}
|
||||
.buffer{flex:1;min-width:0;padding:1.1rem 1.1rem 1.4rem}
|
||||
.nicklist{width:13.5rem;flex:none;background:var(--panel2);border-left:1px solid var(--edge);padding:1rem .85rem;font-size:.86rem}
|
||||
.nl-head{color:var(--dim);text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;margin-bottom:.6rem}
|
||||
.nicklist ul{list-style:none;margin:0;padding:0}
|
||||
.nicklist li{display:flex;align-items:center;gap:.15rem;padding:.14rem 0;white-space:nowrap}
|
||||
.nicklist .s{display:inline-block;width:1.1em;text-align:center;color:var(--dim)}
|
||||
.bf{margin-left:.35rem;font-size:.62rem;color:var(--dimmer);border:1px solid var(--edge2);border-radius:3px;padding:0 .25em}
|
||||
|
||||
/* chips */
|
||||
.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}
|
||||
.chips span{
|
||||
font-family:ui-monospace,monospace;font-size:.8rem;color:var(--fg);
|
||||
background:var(--bg3);border:1px solid var(--line);border-radius:6px;padding:.2rem .5rem;
|
||||
}
|
||||
|
||||
/* tables + code on connect page */
|
||||
.detail{width:100%;border-collapse:collapse;margin:.5rem 0 1rem}
|
||||
.detail th{text-align:left;color:var(--fg2);font-weight:500;padding:.5rem .9rem;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:top}
|
||||
.detail td{padding:.5rem .9rem;border-bottom:1px solid var(--line);color:var(--fg)}
|
||||
.code{
|
||||
background:var(--bg2);border:1px solid var(--line);border-radius:8px;
|
||||
padding:1rem 1.1rem;overflow-x:auto;color:var(--accent);
|
||||
font-family:ui-monospace,monospace;font-size:.9rem;line-height:1.7;white-space:pre;
|
||||
}
|
||||
.hint{color:var(--fg2);font-size:.92rem}
|
||||
.webchat{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:1.5rem 0 0;color:var(--fg2)}
|
||||
|
||||
/* footer */
|
||||
.foot{border-top:1px solid var(--line);margin-top:4rem}
|
||||
.foot-in{max-width:var(--wrap);margin:0 auto;padding:1.6rem 1.25rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;color:var(--fg2);font-size:.9rem}
|
||||
.foot .mono{color:var(--fg)}
|
||||
.foot-links{display:flex;gap:1.1rem}
|
||||
|
||||
@media(max-width:760px){
|
||||
.split{grid-template-columns:1fr}
|
||||
.grid{grid-template-columns:1fr}
|
||||
/* buffer lines — [time] [gutter] [message] */
|
||||
.ln{display:grid;grid-template-columns:3.1em 7em 1fr;column-gap:.75em;align-items:baseline;padding:.09rem 0}
|
||||
.ln .t{color:var(--dimmer);font-size:.82em}
|
||||
.ln .g{text-align:right;white-space:nowrap;color:var(--dim)}
|
||||
.ln .m{min-width:0;word-wrap:break-word;overflow-wrap:anywhere}
|
||||
.ln .m a{color:var(--link)}
|
||||
|
||||
/* banner / wordmark */
|
||||
.banner{padding:.6rem 0 1.4rem;border-bottom:1px dashed var(--edge);margin-bottom:1rem}
|
||||
.wordmark{font-size:clamp(2.3rem,7vw,3.7rem);font-weight:700;letter-spacing:-2px;color:var(--fg);line-height:1}
|
||||
.wordmark .w-hi{color:var(--amber)}
|
||||
.w-sub{color:var(--dim);margin-top:.5rem;font-size:.95rem}
|
||||
.cur{display:inline-block;width:.55em;color:var(--amber);animation:blink 1.1s steps(1) infinite}
|
||||
.cur-lg{width:.5em;margin-left:.06em}
|
||||
@keyframes blink{50%{opacity:0}}
|
||||
@media(prefers-reduced-motion:reduce){.cur{animation:none}}
|
||||
|
||||
/* quickfacts */
|
||||
.quickfacts{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.3rem}
|
||||
.qf{border:1px solid var(--edge);border-radius:6px;padding:.4rem .7rem;color:var(--dim);background:var(--panel2);font-size:.85rem}
|
||||
.qf:hover{border-color:var(--edge2);color:var(--fg);text-decoration:none}
|
||||
.qf .qf-k{color:var(--amber)}
|
||||
|
||||
/* feature groups */
|
||||
.grp{margin:1.5rem 0}
|
||||
.grp-h{color:var(--amber);font-size:.82rem;text-transform:uppercase;letter-spacing:.14em;padding-bottom:.4rem;margin-bottom:.7rem;border-bottom:1px solid var(--edge);position:relative}
|
||||
.grp-h::before{content:"── ";color:var(--dimmer)}
|
||||
.bul{list-style:none;margin:0;padding:0}
|
||||
.bul li{padding:.22rem 0 .22rem 1.3em;position:relative;color:var(--fg)}
|
||||
.bul li::before{content:"·";position:absolute;left:.3em;color:var(--amber)}
|
||||
.srvline{display:grid;grid-template-columns:7em 1fr;column-gap:.75em;align-items:baseline;margin:.2rem 0 .8rem}
|
||||
.srvline .g{text-align:right}
|
||||
.capline{color:var(--dim);word-break:break-word;line-height:1.7}
|
||||
|
||||
/* connect page: tables + code */
|
||||
.detail{width:100%;border-collapse:collapse;margin:.7rem 0 1rem;font-size:.9rem}
|
||||
.detail th{text-align:left;color:var(--dim);font-weight:400;padding:.4rem .8rem .4rem 0;border-bottom:1px solid var(--edge);white-space:nowrap;vertical-align:top;width:1%}
|
||||
.detail td{padding:.4rem 0;border-bottom:1px solid var(--edge);color:var(--fg)}
|
||||
.note{color:var(--dim);margin:.2rem 0 .6rem;font-size:.9rem}
|
||||
.code{background:var(--panel2);border:1px solid var(--edge);border-left:2px solid var(--amber);border-radius:6px;
|
||||
padding:.8rem 1rem;overflow-x:auto;color:var(--green);font-size:.88rem;line-height:1.75;white-space:pre;margin:.4rem 0}
|
||||
.webchat{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin:1.1rem 0}
|
||||
.btn{display:inline-block;border:1px solid var(--edge2);background:var(--panel);color:var(--fg);padding:.4rem .85rem;border-radius:6px;font-size:.88rem}
|
||||
.btn:hover{border-color:var(--amber);color:var(--amber);text-decoration:none}
|
||||
|
||||
/* input + status bars */
|
||||
.inputbar{display:flex;align-items:baseline;gap:.5rem;padding:.55rem .95rem;background:var(--panel);border-top:1px solid var(--edge);font-size:.9rem;overflow:hidden}
|
||||
.ib-ch{color:var(--dim)}
|
||||
.ib-prompt{color:var(--amber)}
|
||||
.ib-text{color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.statusbar{display:flex;align-items:center;gap:.8rem;padding:.4rem .95rem;background:var(--panel2);border-top:1px solid var(--edge);font-size:.74rem;color:var(--dim)}
|
||||
.statusbar .sb-m{margin:0 auto;color:var(--amber);opacity:.75}
|
||||
.statusbar a{color:var(--dim)}
|
||||
.statusbar a:hover{color:var(--fg)}
|
||||
|
||||
@media(max-width:720px){
|
||||
.client{margin:0;border:0;border-radius:0;min-height:100vh}
|
||||
.workspace{flex-direction:column}
|
||||
.nicklist{width:auto;border-left:0;border-top:1px solid var(--edge);order:2}
|
||||
.nicklist ul{display:flex;flex-wrap:wrap;gap:.1rem .9rem}
|
||||
.ln{grid-template-columns:5.5em 1fr}
|
||||
.ln .t{display:none}
|
||||
.srvline{grid-template-columns:5.5em 1fr}
|
||||
.tb-server{display:none}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue