*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-optical-sizing:auto;color:#1a1a1a;-webkit-font-smoothing:antialiased;background:#f5f0e8;flex-direction:column;min-height:100dvh;font-family:Libre Baskerville,serif;display:flex}a{color:inherit;text-decoration:none}.header{z-index:10;background:#1a1a1a;border-bottom:2px solid #111;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex;position:sticky;top:0}.header-logo{color:#f5f0e8;letter-spacing:.12em;font-family:inherit;font-size:1.25rem;font-style:italic;font-weight:400;text-decoration:none}.header-right{align-items:center;gap:.75rem;display:flex}.header-action{color:#f5f0e8;letter-spacing:.03em;cursor:pointer;background:0 0;border:1px solid #555;border-radius:0;align-items:center;min-height:44px;padding:.5rem .875rem;font-family:inherit;font-size:.75rem;text-decoration:none;display:flex}.main{flex:1}.content-wrap{width:100%;max-width:720px;margin:0 auto;padding:1.25rem 1rem}.section-header{border-bottom:2px solid #1a1a1a;justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:.75rem;display:flex}.section-header h2{letter-spacing:.03em;font-size:1.375rem;font-weight:700}.input{color:#1a1a1a;background:#faf8f4;border:1px solid #c8bfa8;border-radius:0;outline:none;width:100%;min-height:48px;padding:.75rem;font-family:inherit;font-size:1rem}.input:focus{border-color:#1a1a1a}textarea.input{resize:vertical;line-height:1.5}.btn{color:#f5f0e8;cursor:pointer;background:#1a1a1a;border:none;border-radius:0;justify-content:center;align-items:center;width:100%;min-height:48px;padding:.75rem;font-family:inherit;font-size:.875rem;font-weight:600;display:flex}.btn:disabled{opacity:.4;cursor:default}.btn-sm{width:auto;min-height:36px;padding:.5rem .75rem;font-size:.75rem}.btn-ghost{color:#666;cursor:pointer;text-align:center;background:0 0;border:1px solid #c8bfa8;border-radius:0;flex:1;min-height:36px;padding:.5rem .75rem;font-family:inherit;font-size:.75rem;font-weight:600}.btn-danger{color:#aaa;cursor:pointer;background:0 0;border:none;min-height:36px;padding:.5rem .75rem;font-family:inherit;font-size:.75rem;font-weight:600}.btn-danger:hover{color:#8b2020}.button-row{gap:.5rem;margin-top:.75rem;display:flex}.login-container{justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.login-form{background:#fff;border:1px solid #c8bfa8;flex-direction:column;gap:1rem;width:100%;max-width:360px;padding:2rem;display:flex}.login-title{text-align:center;letter-spacing:.05em;margin-bottom:.5rem;font-family:inherit;font-size:1.75rem;font-weight:700}.login-error{color:#8b2020;background:#f8e8e8;border-left:3px solid #8b2020;padding:.625rem .875rem;font-size:.875rem;display:none}.login-message{color:#1a6b1a;background:#e8f8e8;border-left:3px solid #1a6b1a;padding:.625rem .875rem;font-size:.875rem;display:none}.roll-list{flex-direction:column;gap:0;margin-bottom:2rem;display:flex}.roll-card{-webkit-tap-highlight-color:transparent;color:inherit;cursor:pointer;background:#fff;border-bottom:1px solid #d5cfc3;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem;text-decoration:none;display:flex}.roll-result{color:#1a1a1a;font-style:normal;font-weight:700}.roll-pending{color:#c8bfa8}.roll-pending-text{color:#c8bfa8;font-style:normal}.roll-card{border-top:1px solid #d5cfc3}.roll-card:hover{background:#f0ebe0}.roll-info{flex:1;min-width:0}.roll-date{margin-bottom:.25rem;font-size:1rem;font-weight:700}.roll-meta{color:#888;font-size:.8125rem;font-style:italic}.roll-die{color:#888;text-align:center;min-width:2.5rem;font-size:1.5rem;font-weight:700}.create-form{background:#fff;border:1px solid #c8bfa8;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex}.roll-later-link{color:#888;cursor:pointer;text-align:center;background:0 0;border:none;width:100%;padding-top:.25rem;font-family:inherit;font-size:.875rem}.roll-later-link:hover{color:#1a1a1a}.mode-select{flex-direction:column;gap:.5rem;display:flex}.mode-label{color:#888;letter-spacing:.03em;font-size:.75rem}.mode-options{gap:0;display:flex}.mode-btn{color:#888;cursor:pointer;background:#faf8f4;border:1px solid #c8bfa8;flex:1;padding:.625rem;font-family:inherit;font-size:.75rem;font-weight:600}.mode-btn:first-child{border-right:none}.mode-btn:last-child{border-left:none}.mode-btn:hover{color:#1a1a1a;background:#f0ebe0}.mode-btn-active{color:#f5f0e8;background:#1a1a1a;border-color:#1a1a1a}.mode-btn-active+.mode-btn{border-left-color:#1a1a1a}.mode-btn:not(.mode-btn-active):not(:first-child):not(:last-child):has(+.mode-btn-active){border-right-color:#1a1a1a}.mode-description{color:#888;margin-top:.25rem;font-size:.8125rem;font-style:italic}.options-input{font-family:Libre Baskerville,serif;line-height:1.75}.detail-wrap{width:100%;max-width:720px;margin:0 auto;padding:1rem}.back-link{color:#888;letter-spacing:.02em;cursor:pointer;align-items:center;min-height:44px;margin-bottom:.5rem;padding:.5rem 0;font-size:.875rem;display:flex}.back-link:hover{color:#1a1a1a}.total-card{background:#fff;border:1px solid #c8bfa8;margin-bottom:1.25rem;padding:1.5rem}.total-label{color:#888;letter-spacing:.03em;margin-bottom:.5rem;font-size:.75rem}.total-value{word-break:break-all;font-size:2.5rem;font-weight:700}.die-card{text-align:center;border:2px solid #1a1a1a}.die-value{font-size:4rem;font-weight:700;line-height:1}.crit-fail{background:#f8e8e8;border-color:#8b2020}.crit-success{background:#e8f8e8;border-color:#1a6b1a}.crit-label{letter-spacing:.03em;margin-top:.5rem;font-size:.75rem;font-weight:700}.crit-fail-text{color:#8b2020}.crit-success-text{color:#1a6b1a}.option-list{flex-direction:column;gap:0;display:flex}.option-item{border-bottom:1px solid #d5cfc3;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 0;display:flex}.option-item:last-child{border-bottom:none}.option-label{align-items:center;gap:.5rem;font-size:1rem;font-weight:400;display:flex}.option-number{color:#888;min-width:1.5rem;font-size:.875rem}.option-range{color:#888;white-space:nowrap;font-size:.75rem;font-style:italic}.option-winner{background:#f0ebe0;border-bottom-color:#c8bfa8;margin:0 -.75rem;padding:.75rem}.option-winner .option-label{font-weight:700}.winner-badge{color:#f5f0e8;background:#1a1a1a;padding:.125rem .375rem;font-size:.625rem;font-weight:700}.controls-card{background:#fff;border:1px solid #c8bfa8;flex-direction:column;gap:.75rem;margin-bottom:1.25rem;padding:1.25rem;display:flex}.roll-btn{min-height:56px;font-size:1.125rem}.roll-btn:not(:disabled):hover{background:#333}.notes-input{margin-top:.5rem}.empty-state{color:#999;text-align:center;padding:3rem 1rem;font-size:1rem;font-style:italic}.loading{text-align:center;color:#999;padding:2rem;font-style:italic}.error{text-align:center;color:#8b2020;padding:2rem}@media (width>=480px){.header{padding:.75rem 1.5rem}.content-wrap,.detail-wrap{padding:1.5rem}.total-card{padding:1.75rem}.login-form{padding:2.5rem}.input{min-height:44px;padding:.625rem .75rem;font-size:.875rem}.btn{min-height:44px;padding:.625rem;font-size:.8125rem}}@media (width>=768px){.section-header h2{font-size:1.625rem}.total-value{font-size:3rem}.die-value{font-size:5rem}}
