/*
|--------------------------------------------------------------------------
| Masjawa v2.0
|--------------------------------------------------------------------------
| Super simple personal website.
| Home · About · Tools · Blogs · Contact
|--------------------------------------------------------------------------
*/

:root{
    --bg:#f8f8f5;
    --surface:#ffffff;
    --text:#242925;
    --muted:#747b76;
    --line:#e7e9e5;
    --accent:#49695d;
    --wrap:1020px;
    --radius:14px;
}

*{
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:
        Inter,
        ui-sans-serif,
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
    font-size:15px;
    font-weight:400;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
}

body.menu-open{
    overflow:hidden;
}

a{
    color:inherit;
    text-decoration:none;
}

button,
input,
select,
textarea{
    font:inherit;
    font-weight:400;
}

h1,
h2,
h3,
h4,
h5,
h6,
strong,
b{
    font-weight:400;
}

img{
    max-width:100%;
}

.wrap{
    width:min(calc(100% - 40px),var(--wrap));
    margin:0 auto;
}

/* Header */

.topbar{
    position:sticky;
    top:0;
    z-index:100;
    border-bottom:1px solid rgba(231,233,229,.78);
    background:rgba(248,248,245,.90);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
}

.nav-shell{
    min-height:66px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:28px;
}

.logo{
    font-family:Georgia,"Times New Roman",serif;
    font-size:22px;
    letter-spacing:-.03em;
}

.main-nav{
    display:flex;
    align-items:center;
    gap:27px;
}

.main-nav a{
    position:relative;
    color:var(--muted);
    font-size:12px;
    transition:color .18s ease;
}

.main-nav a:hover,
.main-nav a.active{
    color:var(--text);
}

.main-nav a.active::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:-8px;
    height:1px;
    background:var(--accent);
}

.menu-button{
    display:none;
    width:36px;
    height:36px;
    padding:0;
    border:0;
    background:transparent;
    cursor:pointer;
}

.menu-button span{
    display:block;
    width:20px;
    height:1px;
    margin:5px auto;
    background:var(--text);
    transition:transform .2s ease;
}

.menu-backdrop{
    display:none;
}

/* Type */

.kicker{
    margin:0 0 12px;
    color:var(--accent);
    font-size:9px;
    letter-spacing:.18em;
}

h1{
    margin:0;
    font-family:Georgia,"Times New Roman",serif;
    font-size:clamp(42px,7vw,76px);
    line-height:1.01;
    letter-spacing:-.045em;
}

h2{
    margin:0;
    font-family:Georgia,"Times New Roman",serif;
    font-size:27px;
    line-height:1.15;
    letter-spacing:-.03em;
}

h3{
    margin:0;
    font-size:15px;
}

/* Home */

.home-hero{
    padding:116px 0 104px;
}

.home-hero h1{
    max-width:700px;
}

.intro{
    max-width:520px;
    margin:27px 0 0;
    color:var(--muted);
    font-size:16px;
}

.hero-links{
    display:flex;
    gap:24px;
    margin-top:30px;
}

.hero-links a{
    color:var(--accent);
    font-size:12px;
}

.section{
    padding:0 0 90px;
}

.compact-section{
    padding-bottom:110px;
}

.section-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:20px;
    margin-bottom:18px;
}

.section-head a{
    color:var(--muted);
    font-size:10px;
}

/* Simple rows */

.simple-list{
    border-top:1px solid var(--line);
}

.simple-row{
    min-height:130px;
    padding:24px 0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:30px;
    border-bottom:1px solid var(--line);
}

.simple-row>div{
    max-width:730px;
}

.simple-row h3{
    margin:5px 0 5px;
    font-family:Georgia,"Times New Roman",serif;
    font-size:22px;
    letter-spacing:-.025em;
}

.simple-row p{
    max-width:650px;
    margin:0;
    color:var(--muted);
    font-size:12px;
}

.row-meta{
    color:var(--muted);
    font-size:9px;
}

.arrow{
    color:var(--muted);
    flex:0 0 auto;
    font-size:15px;
}

.tool-mini-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
}

.tool-mini-grid>a{
    min-height:190px;
    padding:22px;
    background:var(--bg);
}

.tool-mini-grid span{
    color:var(--muted);
    font-size:9px;
    text-transform:uppercase;
    letter-spacing:.1em;
}

.tool-mini-grid h3{
    margin:19px 0 8px;
    font-family:Georgia,"Times New Roman",serif;
    font-size:20px;
}

.tool-mini-grid p{
    margin:0;
    color:var(--muted);
    font-size:11px;
}

/* Pages */

.page-head,
.text-page{
    padding:92px 0 54px;
}

.page-head h1,
.text-page h1{
    max-width:760px;
    font-size:clamp(39px,6vw,62px);
}

.page-head>p:last-child{
    max-width:540px;
    margin:20px 0 0;
    color:var(--muted);
}

.reading-column{
    max-width:660px;
    margin-top:40px;
}

.reading-column p{
    margin:0 0 24px;
    color:var(--muted);
}

.lead-text{
    color:var(--text)!important;
    font-family:Georgia,"Times New Roman",serif;
    font-size:22px;
    line-height:1.55;
}

/* Contact */

.contact-links{
    max-width:720px;
    margin-top:48px;
    border-top:1px solid var(--line);
}

.contact-links a{
    display:grid;
    grid-template-columns:120px 1fr auto;
    gap:20px;
    align-items:center;
    padding:18px 0;
    border-bottom:1px solid var(--line);
}

.contact-links span{
    color:var(--muted);
    font-size:10px;
}

.contact-links strong{
    font-size:13px;
}

.contact-links b{
    color:var(--muted);
}

/* Listing */

.listing-section{
    padding-bottom:100px;
}

.filter-line{
    display:flex;
    gap:10px;
    margin-bottom:24px;
}

.filter-line input,
.filter-line select{
    height:40px;
    border:1px solid var(--line);
    border-radius:0;
    outline:none;
    background:transparent;
    color:var(--text);
    padding:0 12px;
    font-size:11px;
}

.filter-line input{
    flex:1;
}

.filter-line select{
    min-width:150px;
}

.article-list{
    border-top:1px solid var(--line);
}

.article-row{
    display:grid;
    grid-template-columns:170px 1fr auto;
    gap:28px;
    align-items:center;
    padding:23px 0;
    border-bottom:1px solid var(--line);
}

.article-thumb{
    aspect-ratio:16/10;
    overflow:hidden;
    background:#eceeea;
}

.article-thumb img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}

.article-copy h2{
    margin:7px 0 7px;
    font-size:23px;
}

.article-copy p{
    max-width:650px;
    margin:0;
    color:var(--muted);
    font-size:11px;
}

.article-meta{
    display:flex;
    gap:7px;
    color:var(--muted);
    font-size:9px;
}

.empty-copy{
    padding:30px 0;
    color:var(--muted);
    font-size:12px;
}

.pager{
    margin-top:24px;
}

/* Tools */

.tools-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
}

.tool-item{
    min-height:240px;
    padding:20px;
    border:1px solid var(--line);
    background:rgba(255,255,255,.32);
    display:flex;
    flex-direction:column;
}

.tool-topline,
.tool-bottom{
    display:flex;
    justify-content:space-between;
    gap:10px;
    color:var(--muted);
    font-size:9px;
}

.tool-item h2{
    margin:30px 0 10px;
    font-size:21px;
}

.tool-item p{
    margin:0 0 24px;
    color:var(--muted);
    font-size:11px;
}

.tool-bottom{
    margin-top:auto;
}

/* Tool detail */

.tool-detail{
    max-width:760px;
    padding-top:80px;
    padding-bottom:120px;
}

.back-link{
    display:inline-block;
    margin-bottom:45px;
    color:var(--muted);
    font-size:10px;
}

.tool-detail h1{
    font-size:clamp(40px,6vw,62px);
}

.tool-description{
    max-width:620px;
    margin:22px 0 0;
    color:var(--muted);
    font-size:15px;
}

.tool-info{
    display:flex;
    gap:50px;
    margin:38px 0;
    padding:20px 0;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
}

.tool-info div{
    display:grid;
    gap:3px;
}

.tool-info span{
    color:var(--muted);
    font-size:9px;
    text-transform:uppercase;
    letter-spacing:.08em;
}

.tool-info strong{
    font-size:12px;
}

.download-button{
    display:inline-block;
    padding:11px 16px;
    border:1px solid var(--text);
    font-size:11px;
}

/* Article */

.article-page{
    max-width:800px;
    padding-top:70px;
    padding-bottom:120px;
}

.article-header h1{
    font-size:clamp(40px,6vw,64px);
}

.article-lead{
    margin:22px 0 0;
    color:var(--muted);
    font-family:Georgia,"Times New Roman",serif;
    font-size:19px;
    line-height:1.55;
}

.article-date{
    margin-top:18px;
    color:var(--muted);
    font-size:9px;
}

.article-image{
    margin:38px 0;
}

.article-image img{
    width:100%;
    max-height:500px;
    display:block;
    object-fit:cover;
    aspect-ratio:16/9;
}

.summary-box{
    margin:0 0 34px;
    padding:18px 0;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
}

.summary-box span{
    color:var(--accent);
    font-size:9px;
    text-transform:uppercase;
    letter-spacing:.12em;
}

.summary-box p{
    margin:8px 0 0;
    color:var(--muted);
    font-size:12px;
}

.article-body{
    white-space:normal;
    font-family:Georgia,"Times New Roman",serif;
    font-size:17px;
    line-height:1.9;
}

/* Footer */

.footer{
    border-top:1px solid var(--line);
}

.footer-inner{
    min-height:72px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    color:var(--muted);
    font-size:9px;
}

.footer-inner>div{
    display:flex;
    gap:14px;
}

/* Mobile */

@media (max-width:760px){
    .wrap{
        width:min(calc(100% - 30px),var(--wrap));
    }

    .nav-shell{
        min-height:60px;
    }

    .menu-button{
        display:block;
        position:relative;
        z-index:104;
    }

    .menu-button.is-open span:first-child{
        transform:translateY(3px) rotate(45deg);
    }

    .menu-button.is-open span:last-child{
        transform:translateY(-3px) rotate(-45deg);
    }

    .main-nav{
        position:fixed;
        top:0;
        right:0;
        width:min(84vw,320px);
        height:100dvh;
        z-index:103;
        padding:
            calc(92px + env(safe-area-inset-top))
            28px
            calc(30px + env(safe-area-inset-bottom));
        display:flex;
        flex-direction:column;
        align-items:flex-start;
        gap:0;
        background:#f8f8f5;
        transform:translateX(105%);
        visibility:hidden;
        transition:
            transform .24s ease,
            visibility 0s linear .24s;
    }

    .main-nav.is-open{
        transform:translateX(0);
        visibility:visible;
        transition:
            transform .24s ease,
            visibility 0s;
    }

    .main-nav a{
        width:100%;
        padding:14px 0;
        border-bottom:1px solid var(--line);
        color:var(--text);
        font-family:Georgia,"Times New Roman",serif;
        font-size:25px;
    }

    .main-nav a.active::after{
        display:none;
    }

    .menu-backdrop{
        position:fixed;
        inset:0;
        z-index:102;
        display:block;
        background:rgba(23,32,28,.20);
        opacity:0;
        visibility:hidden;
        transition:
            opacity .18s ease,
            visibility 0s linear .18s;
    }

    .menu-backdrop.is-open{
        opacity:1;
        visibility:visible;
        transition:
            opacity .18s ease,
            visibility 0s;
    }

    .home-hero{
        padding:84px 0 76px;
    }

    .hero-links{
        flex-direction:column;
        gap:9px;
    }

    .section{
        padding-bottom:70px;
    }

    .simple-row{
        min-height:auto;
        padding:20px 0;
    }

    .simple-row h3{
        font-size:19px;
    }

    .tool-mini-grid,
    .tools-grid{
        grid-template-columns:1fr;
    }

    .tool-mini-grid>a{
        min-height:150px;
    }

    .page-head,
    .text-page{
        padding:68px 0 40px;
    }

    .filter-line{
        flex-direction:column;
    }

    .filter-line input,
    .filter-line select{
        width:100%;
    }

    .article-row{
        grid-template-columns:92px 1fr;
        gap:16px;
    }

    .article-row>.arrow{
        display:none;
    }

    .article-copy h2{
        font-size:18px;
    }

    .article-copy p{
        display:none;
    }

    .article-image img{
        aspect-ratio:4/3;
    }

    .contact-links a{
        grid-template-columns:90px 1fr auto;
    }
}

@media (max-width:480px){
    h1{
        font-size:44px;
    }

    .home-hero{
        padding-top:70px;
    }

    .section-head{
        align-items:flex-start;
    }

    .article-row{
        grid-template-columns:1fr;
    }

    .article-thumb{
        aspect-ratio:16/9;
    }

    .article-copy p{
        display:block;
    }

    .contact-links a{
        grid-template-columns:1fr auto;
    }

    .contact-links span{
        grid-column:1/-1;
    }
}
